본문 바로가기

마이크로서비스5

Devops Day 44 (5.8) 마이크로서비스_CQRS CQRS CQRS는 Command Query Responsibility Segregation(명령과 조회의 책임 분리)의 약자로 이름처럼 명령을 처리하는 책임과 조회를 처리하는 책임을 분리하는 것이 CQRS의 핵심입니다. CQRS는 초기 CQS에서 시작되어 확장되었습니다. CQS는 Command Query Separation의 약자로 시스템에서 처리되는 명령과 조회, 이 두 작업을 정의하는 핵심 개념이자, 이 둘을 분리시키는 디자인 패턴입니다. 기존에 하나의 데이터 저장소에 CRUD 작업을 모두 처리했다면, CQRS는 요청을 크게 명령(Create, Update, Delete)과 조회(Read)로 나누어 처리합니다. 명령과 조회를 각각 분리하면 명령(쓰기) 요청의 부하를 줄이고, 조회 대기 시간을 줄이는.. 2023. 5. 9.
Devops Day 44 (5.8) 마이크로서비스_API 디자인과 프로세스 간 통신 프로세스 간의 통신 : 서비스와 서비스가 서로 통신하기 위해서는 인터페이스(interface)가 존재해야 하고, 인터페이스가 요구하는 방식대로 커뮤니케이션해야 합니다. 동기 / 비동기 : HTTP 프로토콜은 기본적으로 TCP(또는 UDP) 연결을 만들고, 이 위에서 요청에 따라 즉시 응답이 오는 형태로 구현이 되어 있습니다. 즉 동기적인 응답을 제공합니다. 세상에는 요청에 따른 응답이 즉시 도착하는 커뮤니케이션만 존재하지 않습니다. 문자 메시지를 생각해 보면 발신자는 수신자가 즉시 메시지를 보고 답장하리라고 기대하지 않습니다. 이러한 패턴은 비동기적인 커뮤니케이션입니다. HTTP는 비동기 아닌가요? HTTP는 컴퓨터와 컴퓨터 사이의 네트워크 통신이고, 이는 네트워크 지연에 따라 즉시 응답이 오지 않을 수.. 2023. 5. 9.
Devops Day 43 (5.4) 마이크로서비스_도메인 주도 설계 실습 Sprint 이벤트 스토밍 이벤트 스토밍의 목적은 팀 전체가 도메인 지식을 공유를 통해 프로젝트의 방향성을 얼라인(align)시키는 것에 있습니다. 이 과정에는 프론트엔드 개발자, 백엔드 개발자, 데브옵스 개발자, 인프라 엔지니어 등의 소프트웨어 관련 담당자만 참여하는 것이 아닙니다. 일반적으로는 모두가 모여있는 공간에서 큰 화이트보드나 벽에 포스트잇을 자유롭게 붙이는 방식으로 실행되는데, 온라인 환경에서는 miro와 같은 툴을 이용해서 비슷한 효과를 기대할 수 있습니다. https://miro.com/ 도메인 주도설계의 주요 용어 1. 도메인 이벤트: 발생한 사건 2. 커맨드: 도메인 이벤트를 트리거하는 명령 3. 외부 시스템: 도메인 이벤트가 호출하거나 관계가 있는 레거시 또는 외부 시스템 4. 액터: 개인 또는.. 2023. 5. 5.
Devops Day 43 (5.4) 마이크로서비스_도메인 주도 설계와 모놀리식 분해 전략 도메인 지식 : 어떤 산업 또는 분야를 이해하기 위해 필요한 지식 도메인 : 개발 분야에서는, 소프트웨어로 해결하려는 문제의 영역을 의미 도메인을 표현하는 대표적인 사례 : 객체 지향 프로그래밍 (온라인 서점의 예) 도메인 모델 (예시) - 어떤 도메인을 개념적으로 표현하는 방법 (객체지향 설계, ERD 등) 도메인 주도 설계 (Domain Driven Design) - 하나의 도메인 모델에 대한 이해관계가 각자 다름을 인정하고, 각 팀에 적합한 하위 도메인을 설정하고 해당 하위 도메인에 대한 맥락을 알고 있는 사람이 따라야 할 비즈니스 규칙에 대한 경계를 설정하는 설계 방식 배달의 민족의 Order 도메인 (주문이란 무엇인가?) Order 클래스 분해 전략 도메인 주도 설계의 주요 용어 보편 언어 (u.. 2023. 5. 5.
Devops Day 42 (5.3) 마이크로서비스_마이크로서비스 구조와 특징 마이크로서비스 아키텍처의 정의 - 유지보수에 유리하고, 테스트 가능해야 함 - 느슨하게 결합되어야 함 - 독립적으로 배포 가능함 - 비즈니스 역량을 중심으로 구성해야 함 - 작은 팀에 의해 소유됨 서비스로서의 컴포넌트화 - 컴포넌트: 독립적으로 대체하거나 업그레이드 가능한 소프트웨어 단위 - 컴포넌트화: 시스템을 구성 요소(Component)를 나누고 이를 연결하여 구축하는 것 - 컴포넌트화는 어떻게?: 소프트웨어를 여러 서비스로 분리하는 것 라이브러리 vs 서비스 Monolithic vs microservices : - Monolithic : 모든 기능을 하나의 프로세스로 만들고 여려 개의 서버로 구성됨 - Microservices : 각자의 기능을 각 서비스로 구성하고 다양한 서버로 배포 마이크로서비.. 2023. 5. 4.