본문 바로가기

도서 리뷰/마이크로서비스패턴4

[마이크로서비스패턴] CQRS에 대해 알아보자 CQRS란? 명령과 조회 모델을 분리하는 패턴이다. 트랜잭션 모델을 커맨드, 조회 모델을 쿼리 두 가지로 구현한다. 커맨드 모델은 자체 RDBMS에 매핑된다. 커맨드는 데이터가 바뀔때마다 이벤트를 발행한다. 쿼리 모델은 도메인 이벤트를 구독하고 이러한 이벤트를 처리한다. CQRS의 장점 좋은 성능: MSA 아키텍쳐 환경에서 효율적인 쿼리가 가능하다. -> 여러 조인이 필요하지 않다 CQRS는 이벤트 소싱 모델의 한계를 보완한다.(이벤트 저장소가 기본키 쿼리를 지원) 관심사 분리 -> 도메인 모델에 따라 분리하고 더 하여 명령 조회 모델까지 분리하게 되면 각 특성에 맞는 DB를 선택할 수 있고, 모델 특성에 맞는 기술을 선택할 수 있다. CQRS 단점 아키텍쳐가 복잡해진다. -> 여러 종류의 DB를 사용하.. 2022. 9. 26.
[마이크로서비스패턴] DDD에 대해 알아보자 DDD란? Domain-Driven Design의 약자로 복잡한 비즈니스 로직을 개발하기 위해 OOD를 개선한 접근 방식이다. 도메인 내부에서 문제 해결이 가능한 형태로 모델링하는 기법으로 공용 언어를 정의한다. DDD와 마이크로서비스 아키텍쳐를 함께 적용하기 위해 알아야할 것들이 있다. 공용 언어 공용 언어를 정의해 도메인 간 용어 혼동이 일어나지 않게 해야 한다. 하위 도메인 단일 통합 모델은 여러 도메인 간의 합의를 이끌어 내기 어렵다. DDD는 각 서비스가 자체 도메인 모델을 가지며 전체 도메인 모델 문제를 해결할 수 있다. 경계 컨텍스트(Bounded Context) 도메인 모델의 범위이다. 이러한 모델을 표현하며 모든 관련 책임자의 업무 이해를 높일 수 있다. 또한 설계와 개발이 따로 분리되어.. 2022. 9. 26.
[마이크로서비스패턴] 번외. 패키지 설계 시 지켜야할 객체 지향 설계 원칙 11가지를 알아보자. SRP 클래스 변경의 이유는 하나여야만 한다. OCP 클래스 동작을 수정하지 않고 확장할 수 있어야 한다.( LSP 하위 클래스는 상위 클래스로 대체가 가능해야 한다 ISP 기능별로 세밀하게 인터페이스로 분리되어야 한다. DIP 구현체가 아닌 추상객체에 의존되어야 한다. REP - The Release Reuse Equivalency Principle 재사용 단위는 릴리즈 단위이다. CCP - The Common Closure Principle 동일한 유형의 변경에 대해 닫혀 있어야 한다. 패키지에 영향을 주는 변경은 패키지의 모든 클래스에 영향을 미친다. CRP - The Common Reuse Principle 구성 요소의 클래스는 함께 재사용된다. 하나라도 재사용하는 경우 모두 재사용한다. ADP .. 2022. 9. 14.
[마이크로서비스패턴] 1. 모놀리식 지옥에서 벗어나라. 1장은 전체적인 이해를 위해 꼭 읽고 넘어가야 한다. 모놀리식 아키텍쳐의 장점 개발이 간단하다. 애플리케이션을 쉽게 변경할 수 있다. 테스트하기 쉽다. 배포 및 확장이 쉽다. 모놀리식 아키텍쳐의 한계 규모 있는 애플리케이션은 모놀리식 아키텍쳐가 더이상 맞지 않게된다. 스프린트를 추가할때 구현할 스토리가 늘어났고 코드베이스와 관리 오버헤드가 늘어났다. 팀별로 분화된 스프린트도 불가능해졌다. 사이즈가 늘어나 너무나도 복잡해 이해하기 힘들고 변경도 오래 걸린다. IDE 실행 속도도 느리고 빌드 시간 또한 늘어난다. 아마존은 성공적으로 마이크로 서비스 아키텍쳐를 구축했기에 11.6 초마다 변경점을 배포할 수 있다. 확장 큐브와 마이크로 서비스 확장 큐브는 3가지 축으로 모델을 확장할 수 있다. X축 확장: 다중.. 2022. 9. 14.