요약 마이크로서비스의 애플리케이션 아키텍처의 나머지 부분에 대해 이해함. 마이크로서비스의 내부 구조 정의 클린 마이크로서비스 마이크로서비스 시스템에서는 각 서비스가 목표와 활용도에 따라 분리되어야 함 적절한 개발 언어, 저장소, 내부 아키텍처를 정의해야 함. 복잡한 비즈니스 규칙을 가진 서비스는 헥사고날 아키텍처나 클린 아키텍처를 기반으로 정의하는 것이 좋음. 외부 영역과 내부 영역으로 구분하며, 내부 영역에는 도메인과 도메인을 감싸는 서비스가 존재함. 서비스 인터페이스와 리포지토리 인터페이스를 통해 외부 영역과 연계함. 의존 관계 역전 원칙을 적용하여 유연성과 확장성을 지원하는 구조를 구축할 수 있음. 내부 영역 - 업무 규칙 트랜잭션 스크립트 패턴 도메인 모델 패턴 도메인 주도 설계의 애그리거트 패턴..
요약 마이크로서비스의 애플리케이션 아키텍처의 나머지 부분에 대해 이해함. 헥사고날 아키텍처와 클린 아키텍처 레이어드 아키텍처 소프트웨어의 구성요소를 기능별로 분리하고 계층화하여 결합도를 낮추고 응집도를 높이는 아키텍처임. 주로 프레젠테이션 계층, 애플리케이션 계층, 도메인 계층, 인프라스트럭처 계층으로 구성되며, 각 계층은 상위 계층에서 하위 계층으로의 의존성을 갖는다. 헥사고날 아키텍처 내부 영역과 외부 영역으로 나뉨. 내부 영역은 순수한 비즈니스 로직을 담당하며, 외부 영역은 인바운드 어댑터와 아웃바운드 어댑터로 구성됨. 클린 아키텍처 겹겹이 둘러싸인 영역으로 구성되며, 중앙에서부터 밖으로 엔티티, 유스케이스, 세부사항으로 구분됨. 메모 3.2 헥사고날 아키텍처와 클린 아키텍처 이번 절에서는 전통적으..
요약 애플리케이션 패턴의 나머지 부분에 대해 이해함. 쓰기 최적화: 이벤트 소싱 패턴 이벤트 소싱 패턴은 객체 상태 변경 이벤트를 계산하지 않고 이벤트 저장소에 저장함으로써 메시지 발행 및 저장 처리의 원자성을 보장하고 성능을 최적화하는 방법임. 이벤트 저장소는 이벤트 데이터베이스 역할과 메시지 브로커처럼 작동하여 쓰기 성능을 최적화하고, 정확한 감사 로깅을 제공하며, 객체의 예전 상태를 재구성하는 것이 간단해짐. 3장. 마이크로서비스의 애플리케이션 아키텍처에 대해 이해함. 비즈니스 로직에 대한 관심사 분리 비즈니스 로직은 시스템의 핵심이며, 관심사의 분리 원칙을 따름. 비즈니스 로직 영역과 기술 영역은 철저히 분리함으로써 유지보수성이 높아짐. 데이터베이스 중심 아키텍처의 문제점으로 인해 관심사의 분리 ..
요약 애플리케이션 패턴의 나머지 부분에 대해 이해함. 분산 트랜잭션 처리 패턴 읽기와 쓰기 분리: CQRS 패턴 CQRS 패턴은 명령(입력, 수정, 삭제)과 조회 기능을 분리함으로써 성능 향상을 이루고 리소스 교착상태를 해결할 수 있는 방법임. 이벤트 메시지 주도 아키텍처와 연계하여 쓰기 모델과 읽기 모델을 분리함으로써 쓰기 시스템의 부하를 줄이고 조회 대기 시간을 줄일 수 있음. API 조합과 CQRS CQRS는 다양한 마이크로서비스를 연계해서 서비스를 제공하는 경우 API 조합을 통해 하위 서비스의 의존성을 줄이는 데 도움이 됨. 주문 이력과 같은 서비스를 제공하는 마이크로서비스는 독자적인 저장소를 갖도록 하여 원천 정보를 보유한 여러 마이크로서비스와 데이터 일관성을 유지할 수 있음. 메모 분산 트랜..
요약 애플리케이션 패턴에 대해 이해함. UI 컴포지트 패턴 또는 마이크로 프런트엔드 마이크로서비스 통신 패턴 저장소 분리 패턴 메모 2.4.3 애플리케이션 패턴 지금부터는 실제로 개발자가 구현해야 할 애플리케이션 영역으로 넘어와서 마이크로서비스 애플리케이션을 구성하기 위한 패턴을 살펴본다. 먼저, 프런트엔드를 구성하기 위한 패턴은 어떻게 해야하는 가? 프런트엔드가 한 덩어리 일 경우 과연 마이크로서비스 기반 시스템의 장점인 서비스의 독립적인 변경과 배포가 가능한가? 불가능하다. 이전의 백엔드가 모노리스였을 때 겪었던 문제를 프런트엔드의 모노리스 서비스도 동일하게 겪을 수밖에 없다. UI 컴포지트 패턴 또는 마이크로 프런트엔드 위 프런트엔드 모노리스의 해결 방안은 UI 컴포지트(Composite) 패턴과 ..
요약 마이크로서비스 운영과 관리를 위한 플랫폼 패턴의 나머지 부분에 대해 이해함. 장애 및 실패 처리를 위한 서킷 브레이커 패턴 모니터링과 추적 패턴 중앙화된 로그 집계 패턴 MSA 기술 변화 흐름 서비스 메시 패턴 메모 장애 및 실패 처리를 위한 서킷 브레이커 패턴 여러 서비스로 구성된 시스템에서 한 서비스에 장애가 발생했을 때 다른 서비스가 영향을 받을 수 있음. 이때 장애가 발생한 서비스를 격리해서 유연하게 처리할 수 있는 방법이 필요함. 이를 위한 한 가지 방법은 서킷 브레이커 패턴임. 시스템 과부하나 특정 서비스에 문제가 생겼을 때 자연스럽게 다른 정상적인 서비스로 요청 흐름이 변겨오디게 해야 함. 그러자면 서비스 상태를 항상 실시간으로 관리해서 시각화하고 모니터링할 수 있어야 함. 특정 서비스..
요약 마이크로서비스 운영과 관리를 위한 플랫폼 패턴의 나머지 부분에 대해 이해함. 스프링 클라우드: 스프링 부트 + 넷플릭스 OSS 서비스 레지스트리, 서비스 디스커버리 패턴 서비스 단일 진입을 위한 API 게이트웨이 패턴 BFF 패턴 외부 구성 저장소 패턴 인증/인가 패턴 메모 스프링 클라우드: 스프링 부트 + 넷플릭스 OSS 스프링 클라우드는 스프링 프레임워크를 개발하고 있는 피보탈에서 넷플릭스가 공개한 줄, 유레카, 히스트릭스, 리본 등의 넷플릭스 오픈소스를 스프링 부트 프레임워크 기반으로 사용하기 쉽게 통합한 것임. p 43~44 스프링 클라우드 서비스 연계 흐름 참고 마이크로서비스와 기반 서비스의 연계 흐름은 여러 개의 마이크로서비스로 시스템을 개발하면서 발생한 문제를 해결하기 위해 MSA 주요..
요약 MSA 구성 요소와 MSA 패턴의 나머지 부분을 이해함. 인프라 구성요소 컨테이너 오케스트레이션 플랫폼 패턴 애플리케이션 패턴 서비스 유형별 대표적인 클라우드 서비스를 이해함. IaaS CaaS PaaS 마이크로서비스 운영과 관리를 위한 플랫폼 패턴에 대해 이해함. 데브옵스 인프라 구성 빌드/배포 파이프라인 설계 마이크로서비스 생태계와 운영 관리 요소의 탄생 마이크로서비스 관리/운영 패턴 메모 컨테이너 오케스트레이션 컨테이너 기술을 선택했다면, 컨테이너를 관리하기 위한 기술 또한 필요함. 컨테이너가 많아지면 그에 따라 컨테이너의 자동 배치 및 복제 장애 복구 확장 및 축소 컨테이너 간 통신 로드 밸런싱 등의 컨테이너 관리를 위한 기능이 필요함. 이러한 기술을 컨테이너 오케스트레이션 이라고 함. 최근..
요약 MSA의 기술 영역 아키텍처에 대해 이해함. 리액티브 선언 빠른 응답이 중요 아키텍처의 유연성이 중요 느슨한 결합의 아키텍처로의 변화 특정 벤더에 의존하지 않도록 다양한 벤더를 사용하고 서로 조합함. 마이크로서비스의 외부 아키텍처와 내부 아키텍처가 존재함. 외부 아키텍처는 마이크로서비스가 운영되는 환경임 내부 아키텍처는 마이크로서비스가 제공하는 API, 비즈니스 등을 의미함. MSA 구성 요소와 MSA 패턴을 이해함. 인프라 구성요소 퍼블릭 클라우드, 베어메탈, 프라이빗 클라우드 가상 머신(VM)과 컨테이너 메모 02. MSA의 이해 이번 장에서 본격적으로 기술 영역인 아키텍처에 대해 살펴본다. 리액티브 선언을 통해 현대 아키텍처의 경향성을 알아본다. 한덩어리로 구성된 모노리스 시스템에서 여러 조각..
요약 마이크로서비스를 위한 조건을 이해함. 조직의 변화 → 업무 기능 중심 팀 관리체계의 변화 → 자율적인 분권 거버넌스, 폴리글랏 개발 생명주기의 변화 → 프로젝트가 아니라 제품 중심 개발 환경의 변화 → 인프라 자동화 저장소의 변화 → 통합 저장소가 아닌 분권 데이터 관리 위기 대응 방식의 변화 → 실패를 고려한 설계 MSA의 성공을 위해서는 아키텍처 및 개인 역량에만 집중할 것이 아니라 조직 문화, 일하는 절차 등을 고려해야 함. 메모 1.3 마이크로서비스를 위한 조건은 무엇인가? MSA의 주요 특징을 살펴본다. 마이크로서비스를 잘 구현하고 있는 조직의 사례 기술에만 의존한 아키텍처 스타일을 추구하는데 그치지 않고, 개발 환경, 문화, 일하는 방식과도 연계돼 있음. 1.3.1 조직의 변화: 업무 기..
요약 기업의 비즈니스 민첩성에 대한 내용을 이해함. 클라우드 환경의 등장으로 유명한 기업의 비즈니스 민첩성이 장점으로 두드러지게 됨. ex) 아마존의 배포속도는 초당 1.5번임. 클라우드 인프라의 등장 시스템 인프라 구축에 시간을 단축시키고 손쉽게 구축 가능함. 클라우드 인프라르 사용하는 애플리케이션은 블록이 작으면 작을수록 효율적임. 스케일 아웃, 스케일 업 궁극적으로 클라우드 프렌들리에서 클라우드 네이티브로 전이되야 함. 마이크로 서비스란? 모노리스 하나의 단위로 개발되는 일체식 애플리케이션임. SOA 애플리케이션은 모듈별로 분리했지만 데이터 저장소까지 분리하지는 못함. MSA 애플리케이션 모듈별 분리와 함께, 저장소도 분리함. 메모 01. 아마존 비즈니스 민첩성의 비밀 1.1 성공한 인터넷 기업들과..
책너두 3기를 시작했다. 2기는 진행 중인데, 책장에 박혀있는 책이 책너두 3기 개발 책 목록에 있었다. 올해는 책너두와 함께 독서 습관을 꾸준히 가져가면서 쌓아뒀던 책을 하나씩 읽어내고 싶다..! 전반적인 내용 도메인 주도 설계로 시작하는 마이크로서비스 개발 책을 읽는다. 도메인 주도 설계(DDD)와 마이크로 서비스(MSA)에 대한 내용을 다룬다. 책은 총 10장으로 이루어져 있음. 1장 : 아마존 비즈니스 민첩성의 비밀 2장 : MSA의 이해 3장 : 마이크로서비스 애플리케이션 아키텍처 4장 : 마이크로서비스와 애자일 개발 프로세스 5장 : 마이크로 서비스 설계 6장 : 사례 연구 - 마이크로서비스 도출과 아키텍처 구성 7장 : 사례 연구 - 백엔드 마이크로서비스 구현 8장 : CQRS 패턴을 활용한..