요약 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성 나머지 부분에 대해 이해함 JHipster를 활용한 아키텍처 구성 MSA 외부 아키텍처 구성(게이트웨이, 레지스트리 서비스) JHipster로 개발 시작하기 게이트웨이 만들기 레지스트리 및 게이트웨이 실행 메모 JHipster로 개발 시작하기 JHipster를 이용하여 마이크로서비스 개발 환경을 구축하는 방법에대해 설명 JHipster는 유레카와 스프링 클라우드 컨피그를 활용한 레지스트리를 제공하며, 줄(Zuul) 기반의 게이트웨이와 사용자 관리 및 로그인 기능이 통합된 프런트엔드 서비스를 제공함. 이를 통해 기본적인 사용자 관리 및 로그인 기능이 가능함. JHipster를 이용한 마이크로서비스 애플리케이션 개발 순서는 다음과 같음 게이트웨이 ..
요약 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성 나머지 부분에 대해 이해함 JHipster를 활용한 아키텍처 구성 MSA 외부 아키텍처 구성(게이트웨이, 레지스트리 서비스) JHipster란? JHipster의 목적 JHipster 마이크로서비스 아키텍처 JHipster 환경 구축 macOS 메모 6.5 JHipster를 활용한 아키텍처 구성 개발 환경을 구성하기 위한 로컬 PC 설정에 대해 설명함. 이를 위해 JHipster라는 도구를 사용하여 스프링 클라우드 및 스프링 부트 기반의 마이크로서비스 개발 환경을 쉽게 설정함. 로컬 개발 환경에서는 클라우드 인프라의 쿠버네티스를 최종 배포 환경으로 사용하며, 로컬 PC에서 간단하게 구동 가능한 H2 데이터베이스를 저장소로 사용함. 또한, 서비스..
요약 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성 나머지 부분에 대해 이해함 이벤트 스토밍을 통한 마이크로서비스 도출 컨텍스트 다이어그램 이벤트 스토밍 결과를 헥사고날 아키텍처로 표현하기 외부 아키텍처 정의 내부 아키텍처 정의 패키지 구조 및 명명 규칙 메모 6.2.3 컨텍스트 다이어그램 마지막 단계에서는 컨텍스트 다이어그램을 작성하여 각 컨텍스트와 그들 간의 동기/비동기 호출 관계를 명확히 표현함. 이 다이어그램에서 점선은 비동기 호출을, 실선은 동기 호출을 나타냄. 이렇게 식별된 각 컨텍스트들은 마이크로서비스의 후보가 됨. 여기서 '후보'라는 용어를 사용하는 이유는 서비스가 배포와 운영 효율성 등을 고려하여 더 세분화되거나 통합될 수 있기 때문임. 즉, 현재의 바운디드 컨텍스트는 초기 마이..
요약 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성에 대해 이해함 이벤트 스토밍을 통한 마이크로서비스 도출 이벤트 스토밍 워크숍 사용자 관리 서브도메인 도서 관리 서브도메인 대출, 반납 서브도메인 배송 서브도메인 게시판 서브도메인 바운디드 컨텍스트 식별 메모 6.2 이벤트 스토밍을 통한 마이크로서비스 도출 이번 섹션에서는 이벤트 스토밍 워크샵을 활용하여 비즈니스 흐름을 파악하고, 이를 통해 바운디드 컨텍스트를 식별함. 바운디드 컨텍스트를 통해 마이크로서비스 후보를 도출하고, 서비스 간의 관계를 정의하는 과정을 진행함. 이를 통해 마이크로서비스 아키텍처를 구성하는 방향성을 설정항. 6.2.1 이벤트 스토밍 워크숍 이 섹션에서는 이벤트 스토밍 워크샵을 진행함. 요구사항들은 사용자 관리, 도서 관리,..
요약 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성에 대해 이해함 요구사항 정의 메모 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성 이번 장에서는 실제 업무 사례인 사내 도서 대출 시스템을 통해 마이크로서비스 도출과 아키텍처 구성을 봄. 사내 도서관은 직원들의 여가 생활과 역량 향상을 위해 운영되며, 이를 지원하는 도서대출시스템의 아키텍처 구성을 중심으로 진행됨. 이 과정은 다음 단계로 이루어짐 요구사항 정의: 도서 대출 시스템의 기능과 비즈니스 요구사항을 명확히 정의함. 이벤트 스트밍을 통한 마이크로서비스 도출: 이벤트 스트밍 방법론을 활용해 마이크로서비스를 도출하고, 각 서비스의 역할과 관계를 구성함. 외부 아키텍처 정의: 시스템의 전체적인 구조와 각 마이크로서비스의 연결 방식, 외..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. 도메인 모델링 DDD의 전술적 설계(도메인 모델링 구성요소) 엔티티 값 객체 표준 타입 애그리거트 도메인 서비스 도메인 이벤트 메모 5.6 도메인 모델링 도메인 모델링은 백엔드 모델링의 일부분이지만, 마이크로서비스를 설계하는 데 있어서 중요한 부분을 차지함. 마이크로서비스의 내부 구조는 '폴리글랏'하게 접근할 수 있음. '폴리글랏'은 애플리케이션을 구현하는 언어나 데이터를 저장하는 저장소를 서비스마다 다양하게 활용할 수 있다는 의미이며, 내부 아키텍처 구조를 서비스 특성에 맞게 다양하게 수립할 수 있다는 의미임. 내부 영역의 구조를 도메인 모델 중심으로 만들 수도 있고, 트랜잭션 스크립트 형태로 만들 수도 있음. 도메인 모델 중심의 구조에서는 ..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. 마이크로서비스 상세 설게 프런트엔드 모델링 백엔드 모델링 API 설계 메모 5.5 마이크로서비스 상세설계 마이크로서비스 상세 설계 단계에서는 서비스가 프런트엔드와 백엔드로 분리되어 개발됨. 각 영역은 스프린트 동안 개발되며, CI/CD 활동을 통해 통합되고 배포됨. 프런트엔드 서비스의 설계와 개발, 그리고 백엔드 서비스의 모델링과 개발이 이루어지는데, 이 책에서는 도메인 중심 설계가 가능한 백엔드에 초점을 맞춰 설명함. 5.5.1 프런트엔드 모델링 웹과 모바일 기술의 발전으로 사용자 경험에 중점을 둔 UI 기술과 개념이 등장하였음. 이를 지원하는 프런트엔드 프레임워크들이 다양하게 등장했으며, 앵귤러(Angular), 리액트(React), 뷰(V..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. 이벤트 스토밍을 통한 마이크로서비스 도출 이벤트 스토밍 워크숍 진행 도메인 이벤트 찾기 외부 시스템 도출 커맨드 도출 핫스폿 도출 액터 도출 애그리거트 정의 바운디드 컨텍스트 그리기 컨텍스트 매핑 메모 5.4.2 이벤트 스토밍 워크숍 진행 이벤트 스토밍 워크숍은 체력 소모가 크고 2시간이 넘어가면 집중력이 떨어짐. 따라서, 워크숍의 진행 시간은 최대 3시간을 넘지 않도록 해야 함. 만약 시간 내에 워크숍을 완료하지 못하는 경우, 하루나 이틀 후에 추가 워크숍을 진행하는 것이 좋음. 이벤트 스토밍은 다음과 같은 순서로 진행됩니다: 도메인 이벤트 찾기 외부 시스템/외부 프로세스 찾기 커맨드 찾기 핫스폿 찾기 액터(사용자/역할) 찾기 애그리거트 정의..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. DDD의 전략적 설계 컨텍스트 매핑 컨텍스트 맵 이벤트 스토밍을 통한 마이크로서비스 도출 이벤트 스토밍 워크숍 준비 메모 컨텍스트 맵 컨텍스트 맵은 여러 바운디드 컨텍스트 간의 관계를 보여주는 그림임. 각각의 서브도메인 간의 관계를 설명하면 일반 서브도메인은 핵심 서브도메인과 지원 서브도메인과 공급자/소비자 관계를 맺음. 이것은 일반 서브도메인이 공개 호스트 서비스로 일반 서브도메인을 사용할 수 있게 프로토콜/인터페이스를 제공하면서 발행된 언어를 다른 컨텍스트에 제공한다는 것을 의미함. 또한, 하류의 두 컨텍스트는 충돌 방지 계층을 통해 상류 모델을 번역해서 사용할 수 있음. 핵심 서브도메인에 포함되는 컨텍스트는 일반 서브도메인과 지원 서브도메..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. 마이크로서비스를 도출하는 방법 DDD의 바운디드 컨텍스트 기반 도출 DDD에서의 설계 DDD의 전략적 설계 도메인과 서브도메인 유비쿼터스 언어와 도메인 모델, 바운디드 컨텍스트 컨텍스트 매핑 주요 컨텍스트 매핑 관계 메모 5.1.2 DDD의 바운디드 컨텍스트 기반 도출 마이크로서비스는 독립적인 저장소를 가지며, 서로 직접 참조하지 않는 특성이 있음. 이는 독립적으로 수정 및 배포 가능한 서비스를 가능하게 함. 서비스 도출 시, 각 서비스가 소유하는 데이터를 독립적으로 식별하는 것이 중요함. 기능 분해 방식은 데이터 식별에 적합하지 않고, 기능과 데이터가 분리되는 경향이 있음. 이로 인해 하나의 통합 데이터가 여러 기능에서 사용되는 모델링이 발생..
요약 4장. 마이크로서비스와 애자일 개발 프로세스의 나머지 부분을 이해함. 기민한 설계/개발 프로세스 점진/반복적인 스크럼 생명주기 아키텍처 정의와 마이크로서비스 도출 스프린트 내 개발 공정 백엔드 설계 및 개발 프런트엔드 영역 설계와 개발 빌드 및 배포 5장. 마이크로서비스 설계 앞부분에 대해 이해함. 마이크로서비스를 도출하는 방법 비즈니스 능력에 근거한 도출 메모 4.2 기민한 설계/개발 프로세스 마이크로서비스를 위한 기민한 설계/개발 프로세스는 DDD를 활용한 스크럼 기반의 마이크로서비스 개발 프로세스를 사용함. 이 프로세스는 최소화된 핵심 설계 영역과 활동을 포함하며, 각 활동별로 최소한의 핵심 산출물을 정의함. 이를 통해 단순하고 체계적이며, 효율적이면서도 기민한 반복적인 흐름을 반영한 개발 프..
요약 마이크로서비스의 애플리케이션 아키텍처의 나머지 부분에 대해 이해함. 마이크로서비스의 내부 구조 정의 외부 영역 - 세부사항 API 퍼블리싱 어댑터 API 프락시 어댑터 저장소 처리 어댑터 도메인 이벤트 발행 어댑터 도메인 이벤트 핸들러 4장. 마이크로서비스와 애자일 개발 프로세스의 앞 부분을 이해함. 도메인 주도 설계와 마이크로서비스 메모 3.3.3 외부 영역 - 세부사항 외부 영역은 내부 영역의 서비스 인터페이스를 사용하는 인바운드 어댑터와 내부 영역에서 선언한 아웃바운드 인터페이스를 구현하는 다양한 어댑터로 구성됨. 어댑터는 플러그인처럼 교체되거나 확장될 수 있어야 하며, 내부 영역이 먼저 정의된 후 외부 영역의 세부사항은 늦게 정의돼도 상관없도록 해야 함. 이러한 방식이 소프트웨어를 부드럽게 ..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.