요약 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 이벤트 스토밍 워크숍 이 섹션에서는 이벤트 스토밍 워크샵을 진행함. 요구사항들은 사용자 관리, 도서 관리,..
요약 12장. 데이터 시스템의 미래의 나머지 부분에 대해 이해함. 옳은 일 하기 사생활과 추적 감시 동의와 선택의 자유 사생활과 데이터 사용 자산과 권력으로서의 데이터 산업 혁명의 기억 법률과 자기 규제 메모 사생활과 추적 데이터 수집 자체가 윤리적 문제를 불러일으킬 수 있다. 이는 데이터를 수집하는 조직과 데이터를 제공하는 사용자 사이의 관계에 크게 영향을 미침. 사용자가 명시적으로 데이터를 제공하는 경우, 시스템은 사용자에게 서비스를 제공하며, 사용자는 고객이 됨. 하지만 시스템이 사용자의 활동을 추적하고, 이를 통해 데이터를 수집하는 경우, 이 관계는 불명확해짐. 행동 데이터 추적은 많은 온라인 서비스에서 중요함. 이는 사용자 경험을 향상시키고, 개인화된 콘텐츠를 제공하는 데 도움이 됨. 그러나, ..
요약 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성에 대해 이해함 요구사항 정의 메모 6장. 사례연구 - 마이크로서비스 도출과 아키텍처 구성 이번 장에서는 실제 업무 사례인 사내 도서 대출 시스템을 통해 마이크로서비스 도출과 아키텍처 구성을 봄. 사내 도서관은 직원들의 여가 생활과 역량 향상을 위해 운영되며, 이를 지원하는 도서대출시스템의 아키텍처 구성을 중심으로 진행됨. 이 과정은 다음 단계로 이루어짐 요구사항 정의: 도서 대출 시스템의 기능과 비즈니스 요구사항을 명확히 정의함. 이벤트 스트밍을 통한 마이크로서비스 도출: 이벤트 스트밍 방법론을 활용해 마이크로서비스를 도출하고, 각 서비스의 역할과 관계를 구성함. 외부 아키텍처 정의: 시스템의 전체적인 구조와 각 마이크로서비스의 연결 방식, 외..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. 도메인 모델링 DDD의 전술적 설계(도메인 모델링 구성요소) 엔티티 값 객체 표준 타입 애그리거트 도메인 서비스 도메인 이벤트 메모 5.6 도메인 모델링 도메인 모델링은 백엔드 모델링의 일부분이지만, 마이크로서비스를 설계하는 데 있어서 중요한 부분을 차지함. 마이크로서비스의 내부 구조는 '폴리글랏'하게 접근할 수 있음. '폴리글랏'은 애플리케이션을 구현하는 언어나 데이터를 저장하는 저장소를 서비스마다 다양하게 활용할 수 있다는 의미이며, 내부 아키텍처 구조를 서비스 특성에 맞게 다양하게 수립할 수 있다는 의미임. 내부 영역의 구조를 도메인 모델 중심으로 만들 수도 있고, 트랜잭션 스크립트 형태로 만들 수도 있음. 도메인 모델 중심의 구조에서는 ..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. 마이크로서비스 상세 설게 프런트엔드 모델링 백엔드 모델링 API 설계 메모 5.5 마이크로서비스 상세설계 마이크로서비스 상세 설계 단계에서는 서비스가 프런트엔드와 백엔드로 분리되어 개발됨. 각 영역은 스프린트 동안 개발되며, CI/CD 활동을 통해 통합되고 배포됨. 프런트엔드 서비스의 설계와 개발, 그리고 백엔드 서비스의 모델링과 개발이 이루어지는데, 이 책에서는 도메인 중심 설계가 가능한 백엔드에 초점을 맞춰 설명함. 5.5.1 프런트엔드 모델링 웹과 모바일 기술의 발전으로 사용자 경험에 중점을 둔 UI 기술과 개념이 등장하였음. 이를 지원하는 프런트엔드 프레임워크들이 다양하게 등장했으며, 앵귤러(Angular), 리액트(React), 뷰(V..
요약 12장. 데이터 시스템의 미래의 나머지 부분에 대해 이해함. 정확성을 목표로 믿어라. 하지만 확인하라. 소프트웨어 버그가 발생해도 무결성 유지하기 약속을 맹목적으로 믿지 마라. 검증하는 문화 감사 기능 설계 다시 종단 간 논증 감사 데이터 시스템용 도구 옳은 일 하기 예측 분석 편견과 차별 책임과 의무 피드백 루프 메모 믿어라. 하지만 확인하라. 시스템 모델은 실제 상황을 가정하고 이를 기반으로 시스템을 설계하며, 여기에는 프로세스의 실패, 장치의 전원 중단, 네트워크 지연 등의 가능성이 포함됨. 그러나 디스크에 쓴 데이터는 fsync 이후에 안전하며, 메모리 상의 데이터는 손상되지 않고, CPU의 계산은 정확하다는 가정도 함. 이러한 가정은 대체로 합리적이며, 시스템 모델은 전통적으로 결함에 대한..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. 이벤트 스토밍을 통한 마이크로서비스 도출 이벤트 스토밍 워크숍 진행 도메인 이벤트 찾기 외부 시스템 도출 커맨드 도출 핫스폿 도출 액터 도출 애그리거트 정의 바운디드 컨텍스트 그리기 컨텍스트 매핑 메모 5.4.2 이벤트 스토밍 워크숍 진행 이벤트 스토밍 워크숍은 체력 소모가 크고 2시간이 넘어가면 집중력이 떨어짐. 따라서, 워크숍의 진행 시간은 최대 3시간을 넘지 않도록 해야 함. 만약 시간 내에 워크숍을 완료하지 못하는 경우, 하루나 이틀 후에 추가 워크숍을 진행하는 것이 좋음. 이벤트 스토밍은 다음과 같은 순서로 진행됩니다: 도메인 이벤트 찾기 외부 시스템/외부 프로세스 찾기 커맨드 찾기 핫스폿 찾기 액터(사용자/역할) 찾기 애그리거트 정의..
요약 12장. 데이터 시스템의 미래의 나머지 부분에 대해 이해함. 정확성을 목표로 제약 조건 강제하기 유일성 제약 조건은 합의가 필요하다 로그 기반 메시징의 유일성 다중 파티션 요청 처리 적시성과 무결성 데이터플로 시스템의 정확성 느슨하게 해석되는 제약 조건 코디네이션 회피 데이터 시스템 메모 제약 조건 강제하기 유일성 제약 조건은 합의가 필요하다 분산 설정에서 유일성 제약 조건을 강제하려면 합의가 필요함. 동일한 요청이 동시에 여러 개 존재할 경우, 시스템은 충돌하는 연산 중 하나를 수용하고 나머지를 제약 조건 위반으로 거부해야 함. 이러한 합의를 달성하는 표준적인 방법은 특정 노드를 리더로 지정하고 해당 노드가 모든 결정을 내리는 것임. 이 방법은 모든 요청이 단일 노드로 집중되는 것을 문제삼지 않고..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. DDD의 전략적 설계 컨텍스트 매핑 컨텍스트 맵 이벤트 스토밍을 통한 마이크로서비스 도출 이벤트 스토밍 워크숍 준비 메모 컨텍스트 맵 컨텍스트 맵은 여러 바운디드 컨텍스트 간의 관계를 보여주는 그림임. 각각의 서브도메인 간의 관계를 설명하면 일반 서브도메인은 핵심 서브도메인과 지원 서브도메인과 공급자/소비자 관계를 맺음. 이것은 일반 서브도메인이 공개 호스트 서비스로 일반 서브도메인을 사용할 수 있게 프로토콜/인터페이스를 제공하면서 발행된 언어를 다른 컨텍스트에 제공한다는 것을 의미함. 또한, 하류의 두 컨텍스트는 충돌 방지 계층을 통해 상류 모델을 번역해서 사용할 수 있음. 핵심 서브도메인에 포함되는 컨텍스트는 일반 서브도메인과 지원 서브도메..
요약 5장. 마이크로서비스 설계 나머지 부분에 대해 이해함. 마이크로서비스를 도출하는 방법 DDD의 바운디드 컨텍스트 기반 도출 DDD에서의 설계 DDD의 전략적 설계 도메인과 서브도메인 유비쿼터스 언어와 도메인 모델, 바운디드 컨텍스트 컨텍스트 매핑 주요 컨텍스트 매핑 관계 메모 5.1.2 DDD의 바운디드 컨텍스트 기반 도출 마이크로서비스는 독립적인 저장소를 가지며, 서로 직접 참조하지 않는 특성이 있음. 이는 독립적으로 수정 및 배포 가능한 서비스를 가능하게 함. 서비스 도출 시, 각 서비스가 소유하는 데이터를 독립적으로 식별하는 것이 중요함. 기능 분해 방식은 데이터 식별에 적합하지 않고, 기능과 데이터가 분리되는 경향이 있음. 이로 인해 하나의 통합 데이터가 여러 기능에서 사용되는 모델링이 발생..