CQRS (Command Query Responsibility Segregation)는 소프트웨어 아키텍처 패턴 중 하나로, 시스템의 명령(쓰기) 부분과 쿼리(읽기) 부분을 분리하는 것을 말합니다. 이 패턴은 Bertrand Meyer가 제안한 Command-Query Separation (CQS) 원칙에서 발전한 개념입니다. CQRS의 핵심 개념 명령과 쿼리의 분리 명령(Command) 시스템의 상태를 변경하는 작업 (예: 데이터 추가, 수정, 삭제) 쿼리(Query) 시스템의 상태를 조회하는 작업 (예: 데이터 검색, 보고서 생성) 데이터 모델의 분리 명령과 쿼리 작업은 각각 다른 데이터 모델을 사용할 수 있습니다. 이는 각 작업을 최적화하고 관리하기 위한 목적으로 사용됩니다. CQRS의 장점 성능 ..
논리적인 데이터 모델은 비즈니스를 형상화하여 노테이션을 이용한 모델로 표현하는 것이 가장 중요합니다. 물리적인 데이터 모델은 데이터베이스에 생성하기 위해 물리적인 특성을 반영해주고 인덱스를 생성하여 성능을 향상시키기 위해 반정규화나 엔티티타입의 통합과 분리 등을 하는 것이 중요한 목적입니다. 논리적인 데이터 모델과 물리적인 데이터 모델을 병행하여 설계해야 합니다. 논리적인 단계에서는 업무적으로 잘 표현된 논리모델을 실제로 구축할 데이터베이스의 특징을 중심으로 데이터의 무결성과 성능을 고려한 모습으로 어떻게 표현해야 할까가 중심이 돼야 합니다. 논리적 데이터 모델이 없으면 어떻게 될까요? 데이터 모델의 확장성을 확보할 수 없습니다. 모델을 통해 업무흐름파악이 안 되어 커뮤니케이션 제약이 발생합니다. 물리적..
CDC (Change Data Capture)는 데이터베이스의 변경사항을 실시간으로 추적하고, 이러한 변경사항을 다른 시스템, 데이터베이스, 애플리케이션으로 전송하는 기술입니다. CDC는 데이터베이스에서 발생하는 모든 삽입(insert), 갱신(update), 삭제(delete) 작업을 감지하고, 이 정보를 실시간으로 다른 시스템에 제공하여 데이터 동기화 및 분석을 지원합니다. CDC의 작동 원리 변경사항 감지 CDC는 데이터베이스의 변경사항을 실시간으로 감지합니다. 이는 데이터베이스의 트랜잭션 로그, 트리거, 또는 다른 메커니즘을 통해 수행될 수 있습니다. 이벤트 캡처 및 전송 감지된 변경사항은 이벤트 형태로 캡처되며, 이 이벤트들은 메시징 시스템(예: Apache Kafka)을 통해 다른 시스템으로 ..
Spring Framework의 `ApplicationEvent` 클래스는 Spring의 이벤트 발행 및 처리 메커니즘의 핵심입니다. 이 메커니즘을 통해 애플리케이션 내에서 이벤트를 발행하고, 이를 처리하는 리스너들을 등록할 수 있습니다. `ApplicationEvent`와 관련된 기능은 애플리케이션의 결합도를 낮추고, 코드의 모듈화를 증진시키는 데 유용합니다. ApplicationEvent 클래스 `ApplicationEvent`는 Java의 `java.util.EventObject`를 확장한 클래스입니다. Spring 4.2부터는 `ApplicationEvent`를 상속받지 않고, 어떠한 객체도 이벤트로 발행할 수 있습니다. 이벤트 발행 이벤트는 `ApplicationEventPublisher` 인터..