요약 11장. 에필로그 아키텍처 영역 개발 프로세스 영역 설계 영역 개발 영역 메모 11장. 에필로그 소프트웨어 분야는 매우 빠르게 변화하기 때문에 세부 기술 영역에만 집중하면 그 변화의 본질을 파악하기 힘듦. 개별 지식을 아는 것에 앞서 변화 흐름을 이해하기위해 노력해야 함. 클라우드 환경이 아닌 레거시 환경의 모노리스 애플리케이션을 오랜 기간 동안 접했던 개발자는 먼저 이러한 변화 흐름을 반드시 이해하는 것이 중요함. 지금껏 여러 서비스를 봤고, 이 기술들이 어떤 기술로 대체될 수 있는지를 알기 위해서는 기술 진화의 흐름과 전체 맥락을 봐야 함. 아키텍처 영역 강 결합 → 느슨한 결합의 유연한 아키텍처로의 변화를 이해함. 마이크로서비스 아키텍처를 외부, 내부로 구분하여 고민함. 애플리케이션 패턴으로 ..
요약 10장. 애플리케이션 통합과 배포 JHipster를 이용한 애플리케이션 배포 지속적 배포 애플리케이션 배포 오토스케일링 메모 애플리케이션 배포 쿠버네티스 클러스터 배포에 대한 내용 p394~396 참고 쿠버네티스 클러스터 배포하면, 각 마이크로서비스별 파드가 생성되고, 디플로이먼트, 서비스, 레플리카셋이 각각 생성됨. 마이크로서비스가 사용할 저장소, 카프카를 위한 파드도 생성됨 애플리케이션 게이트웨이 & 프런트엔드 역할을 수행할 파드도 생성됨. 애플리케이션 레지스트리 파드도 생성됨. 오토스케일링 쿠버네티스 명령으로 간단히 오토스케일링 수행 가능. --replicas 값을 조정하여 손쉽게 늘릴 수 있음.
요약 10장. 애플리케이션 통합과 배포 통합 및 배포 파이프라인 정의 (나머지 부분) GCP 배포 환경 구성 GKE 생성 JHipster를 이용한 애플리케이션 배포 지속적 통합 지속적 배포 배포 구성 파일 생성 및 수정 메모 10.2.2 GKE 생성 구글에서 제공하는 관리형 쿠버네티스인 GKE(Google Kubernetes Engine)을 사용함. 쿠버네티스 클러스터를 손쉽게 생성, 관리할 수 있음. 10.3 JHipster를 이용한 애플리케이션 배포 10.3.1 지속적 통합 쿠버네티스 환경 배포시 필요한 몇 가지 구성 파일이 필요함. JHipster 는 쿠버네티스 구성 파일들을 자동으로 생성하고, 이를 기반으로 쉽게 배포할 수 있음. 애플리케이션을 도커 이미지로 빌드 후, 컨테이너 레지스트리에 등록함..
요약 10장. 애플리케이션 통합과 배포 통합 및 배포 파이프라인 정의 (나머지 부분) 지속적 배포 쿠버네티스란? 쿠버네티스 배포 GCP 배포 환경 구성 GCP 환경 설정 메모 10.1.2 지속적 배포 지속적 배포: 애플리케이션을 클라우드 환경에 배포하는 과정 일반적인 온프레미스 환경에서는 빌드를 통해 생성된 .war 파일을 웹 애플리케이션 서버(WAS)에 배포하는 것이 일반적임. 하지만 클라우드 환경에서는 IaaS 서비스 모델을 사용하면 비슷한 방식으로 배포할 수 있지만, 컨테이너 기술이나 쿠버네티스를 사용하면 배포 과정이 크게 달라짐. 클라우드 벤더에서 제공하는 PaaS 서비스를 이용하면, 쉽게 적용할 수 있음. 쿠버네티스란? 쿠버네티스는 컨테이너 오케스트레이션 시스템으로, 2014년에 구글이 오픈소스..
요약 10장. 애플리케이션 통합과 배포 통합 및 배포 파이프라인 정의 지속적 통합 메모 10장. 애플리케이션 통합과 배포 지속적 통합(CI)과 지속적 배포(CD)는 애플리케이션 배포 시 핵심 요소임. 마이크로서비스에만 적용되는 개념이 아님. 애플리케이션을 자주 빌드하고 배포를 자동화하는 활동은 애플리케이션을 예기치 않은 결함이나 장애로부터 보호하며, 애플리케이션이 지원하는 비즈니스를 빠르게 개선하는 데 도움을 줌. 10.1 통합 및 배포 파이프라인 정의 지속적 통합(CI)은 애플리케이션 소스코드의 변경 사항이 지속적으로 병합, 빌드, 테스트되는 것을 의미함. 지속적 배포(CD)는 CI를 통해 준비된 애플리케이션이 테스트 및 프로덕션 환경에 자동으로 배포되는 것을 의미함. 개발자들은 작성한 소스코드를 형상..
요약 9장. 사례 연구 - 시연 수행 웹 화면에서 시나리오 테스트하기 메모 9.3 웹 화면에서 시나리오 테스트하기 시나리오 테스트는 다음과 같음. 사용자 등록 운영자 권한 부여 재고 도서 등록 도서 검색 도서 대출 도서 반납 도서 연체 처리 반납 처리 대출 불가 확인 연체 해제 처리 대출 가능 상태 확인 9.4 정리 초기 단위 테스트는 로컬 데스크톱 환경에서 수행됨. 간단한 테스트를 통해 시연하고 피드백을 받아 지속적으로 시스템을 개선한다.
요약 9장. 사례 연구 - 시연 수행 도서 카탈로그 마이크로서비스 (나머지 부분) 내부 영역 - 서비스 개발 내부 영역 - 리포지토리 개발 외부 영역 - REST 컨트롤러 개발 메모 9장. 사례 연구 - 시연 수행 구현된 마이크로서비스에 대한 테스트 시나리오를 수행함. p346 참고 9.1 서비스 동작 환경 실행 서비스 동작환경 도커 JHipster 레지스트리 카프카 MongoDB 9.2 게이트웨이와 마이크로서비스 동작시키기 프론트엔드 개발 과정은 생략함. 게이트웨이를 먼저 실행하고 나머지 서비스를 실행함.
요약 8장. CQRS 패턴을 활용한 백엔드 마이크로서비스 개발 도서 카탈로그 마이크로서비스 (나머지 부분) 외부 영역 - 인바운드 어댑터 개발 메모 8.2.9 외부 영역 - 인바운드 어댑터 개발 도서 마이크로서비스와 대출 마이크로서비스 도서를 생성, 수정, 삭제하거나 도서를 대출, 반납할 때마다 도서 카탈로그 마이크로서비스로 이벤트를 발송함. 인바운드 어댑터 BookCatalogConsumer : 도서 마이크로서비스에서 발생한 이벤트를 수신 BookChanged 도메인 이벤트로 변환 BookCatalogService 인터페이스, 구현체 BookChanged 도메인 이벤트를 받아서 이벤트 종류별로 분기처리함. 도서 카탈로그의 등록, 삭제, 상태 수정, 정보 수정 등의 역할을 수행. 8.3 정리 CQRS 패..
요약 8장. CQRS 패턴을 활용한 백엔드 마이크로서비스 개발 도서 카탈로그 마이크로서비스 (나머지 부분) 내부 영역 - 서비스 개발 내부 영역 - 리포지토리 개발 외부 영역 - REST 컨트롤러 개발 메모 8.2.6 내부 영역 - 서비스 개발 도서 카탈로그 서비스 인터페이스 도서 제목으로 도서를 검색 인기 도서 목록을 조회 도서 카탈로그 서비스 구현체 findBookByTitle : 도서명을 받아 리포지토리에서 해당 도서를 검색. loadTop10 : 메서드는 인기 도서 목록을 조회하여 반환. 8.2.7 내부 영역 - 리포지토리 개발 도서 카탈로그 리포지토리 저장소로 MongoDB를 사용. findByTitleContaining : 제목으로 도서를 검색. findTop10ByOrderByRentCntD..
요약 8장. CQRS 패턴을 활용한 백엔드 마이크로서비스 개발 도서 카탈로그 마이크로서비스 기능 소개 내부 아키텍처 결정 API 설계 도메인 모델링 내부 영역 - 도메인 모델 개발 메모 8.2 도서 카탈로그 마이크로서비스 도서 카탈로그는 온전히 도서 목록 조회와 검색을 위한 읽기 전용 마이크로서비스임. 이 서비스는 도서 마이크로서비스와 함께 CQRS(Command Query Responsibility Segregation) 패턴을 적용하였으며, 저장소로는 조회와 검색 속도가 빠른 NoSQL 중 하나인 MongoDB를 사용함. 도서 카탈로그 마이크로서비스의 기본 기능 외에도, 도서 마이크로서비스에서 발행한 도서변경됨(BookChanged) 이벤트 메시지를 수신하고 도서 카탈로그의 저장소를 동기화하는 과정에..
요약 8장. CQRS 패턴을 활용한 백엔드 마이크로서비스 개발 도서 마이크로서비스 개발 (나머지 부분) 외부 영역 - REST 컨트롤러 개발 외부 영역 - 아웃바운드 어댑터 개발 외부 영역 - 인바운드 어댑터 개발 메모 8.1.9 외부 영역 - REST 컨트롤러 개발 재고 도서 정보 조회, 입고 도서 등록, 수정, 삭제, 그리고 재고 도서 등록, 수정, 삭제 기능을 제공함. 8.1.10 외부 영역 - 아웃바운드 어댑터 개발 BookProducerImpl은 서비스로부터 전달받은 BookChanged 도메인 이벤트를 카프카 메시지로 변환해서 전송하는 sendBookCreateEvent와 sendBookDeleteEvent 메서드를 포함함. 이 메서드들은 도서 생성 또는 삭제 이벤트를 받아, 해당 이벤트를 J..
요약 8장. CQRS 패턴을 활용한 백엔드 마이크로서비스 개발 도서 마이크로서비스 개발 (나머지 부분) 내부 영역 - 서비스 개발 내부 영역 - 리포지토리 개발 메모 8.1.7 내부 영역 - 서비스 개발 두 개의 서비스, InStockBookService와 BookService를 사용함. InStockBookService는 입고 도서 관리를 위한 인터페이스로, CRUD (생성, 읽기, 업데이트, 삭제) 외에 특별한 로직을 가지지 않음. BookService는 입고 도서와 대출 도서를 관리하는 인터페이스로, CRUD 외에도 다음과 같은 기능을 가짐. 대출 마이크로서비스에서 도서를 대출할 때 검증을 위해 요청하는 도서 정보 조회 대출 대상 도서 정보가 수정될 때 도서 카탈로그 서비스에 이벤트를 전송하는 기능..