서론현대의 클라우드 환경에서는 보안이 최우선 과제로 떠오르고 있습니다. 특히 네트워크 레벨에서의 접근 제어는 시스템의 안정성과 신뢰성을 유지하는 데 필수적입니다. 이번 포스팅에서는 Network ACL과 SG(Securiy Group) - ACG(Access Control Group)에 대해 알아보고, 두 개념의 차이점과 활용 방법을 이해하기 쉽게 설명해보겠습니다.1. Network ACL이란?Network ACL(Network Access Control List)은 서브넷 수준에서 적용되는 보안 레이어로, 네트워크 트래픽의 인바운드(Inbound)와 아웃바운드(Outbound)를 제어합니다. 각 규칙은 특정한 포트, 프로토콜, 소스 또는 대상 IP 주소에 대한 허용(Allow) 또는 거부(Deny)를 ..
서론트랜잭션은 데이터베이스 작업에서 일관성과 무결성을 보장하기 위해 필수적인 개념입니다. 스프링 프레임워크에서는 이러한 트랜잭션 관리를 쉽게 할 수 있도록 TransactionManager라는 추상화된 개념을 제공합니다. 이 글에서는 TransactionManager가 무엇인지, 어떻게 동작하는지, 그리고 어떻게 설정하고 사용하는지에 대해 기초부터 상세하게 알아보겠습니다.본론1. 트랜잭션(Transaction)이란?트랜잭션은 데이터베이스에서 **원자적(Atomic)**으로 수행되어야 하는 일련의 작업을 의미합니다. 즉, 여러 작업이 하나의 단위로 처리되어야 하며, 모두 성공하거나 모두 실패해야 합니다. 이는 데이터의 무결성을 유지하는 데 중요합니다.1.1 트랜잭션의 4가지 특성(ACID)Atomicity..
서론트랜잭션이 필요한 서비스 메소드에 아무리 @Transactional 어노테이션을 적용해도 트랜잭션이 발생하지 않는 상황에 처할 수 있습니다. 이런 경우, 문제의 원인을 파악하고 해결하기 위해 여러 가지 요소를 점검해야 합니다. @Transactional은 Spring 프레임워크에서 트랜잭션 관리를 위해 매우 중요한 어노테이션이지만, 설정이나 코드 구조에 따라 예상과 다르게 동작할 수 있습니다. 이 글에서는 @Transactional이 작동하지 않는 일반적인 원인과 그 해결 방법을 구체적인 예시와 함께 자세히 살펴보겠습니다.1. 메소드 접근 제어자 확인하기@Transactional이 적용된 메소드는 public 접근 제어자를 가져야 합니다. Spring의 AOP는 기본적으로 프록시 기반으로 동작하며, ..
서론현대 소프트웨어 개발 환경에서는 API(Application Programming Interface)가 중요한 역할을 합니다. API는 다양한 소프트웨어 시스템 간의 상호 작용을 가능하게 하며, 특히 REST API(Representational State Transfer API)와 JSON API는 유연성과 확장성이 뛰어나 많은 시스템에서 채택되고 있습니다. 그러나 많은 기존 시스템에서는 여전히 오래된 형태의 API를 사용하고 있으며, 이를 REST API 및 JSON API로 전환하는 것이 필요합니다. 본 논문에서는 기존 시스템의 API가 REST API가 아닌 일반 Application API임을 분석하고, 이를 REST API 및 JSON API로 전환하는 과정과 장단점을 설명합니다.본론1. ..
서론레거시 프로젝트는 종종 오래된 코드베이스와 기술 부채를 포함하고 있어 유지보수와 확장에 어려움을 겪는 경우가 많습니다. 특히, 데이터베이스와의 상호작용을 위해 PDO를 이용한 SQL 쿼리문 작성 방식은 다양한 단점을 가지고 있습니다. 이러한 문제점을 해결하고, 개발 생산성과 코드 품질을 향상시키기 위해 ORM(Object-Relational Mapping) 도입이 필수적입니다. 본 보고서에서는 PDO 기반 SQL 쿼리문 작성의 단점을 분석하고, ORM 도입의 필요성과 그 이점을 체계적으로 설명하겠습니다.PDO 기반 SQL 쿼리문 작성의 단점1. 코드의 가독성 및 유지보수성 저하PDO를 이용한 SQL 쿼리문 작성은 SQL 문법이 직접 코드에 포함되기 때문에, 코드의 가독성이 떨어집니다. 복잡한 쿼리일수..
MVVM이란? MVVM (Model-View-ViewModel) 패턴은 소프트웨어 개발에 있어서 사용자 인터페이스를 구현하기 위한 아키텍처 패턴 중 하나다. 이 패턴은 주로 UI 애플리케이션에서 사용되며, MVC (Model-View-Controller) 패턴을 발전시킨 형태로 볼 수 있다. MVVM은 아래 세 부분으로 구성된다. Model 애플리케이션의 데이터와 비즈니스 로직을 담당. 데이터베이스, 유효성 검사, 객체 등이 여기에 해당된다. View 사용자에게 보여지는 UI 부분으로 사용자의 입력을 받고, 표현하는 역할을 한다. ViewModel View를 표현하기 위한 데이터와 명령을 가지고 있으며, Model과 View 사이의 중재자 역할을 한다. View에 바인딩하여 데이터의 변화를 자동으로 ..