[1부] 아키텍처 핵심 기초 ▣ 01장: 왜 헥사고날 아키텍처인가? 기술 요구사항 소프트웨어 아키텍처 검토 __보이지 않는 것들 __악순환 __아키텍처는 모두를 위한 것이 아니다 __모놀리식 시스템과 분산 시스템 __의사결정 헥사고날 아키텍처 이해 __도메인 헥사곤 __애플리케이션 헥사곤 __프레임워크 헥사곤 __헥사고날 접근 방식의 장점 요약 연습 문제 더 읽을거리 ▣ 02장: 도메인 헥사곤으로 비즈니스 규칙 감싸기 기술 요구사항 엔티티를 활용한 문제 영역 모델링 __도메인 엔티티의 순수성 __관련 엔티티 __UUID를 이용한 식별자 정의 값 객체를 통한 서술력 향상 애그리게잇을 통한 일관성 보장 도메인 서비스 활용 정책 패턴과 명세 패턴을 활용한 비즈니스 규칙 처리 POJO를 통한 비즈니스 규칙 정의 요약 연습 문제 더 읽을거리 ▣ 03장: 포트와 유스케이스를 통한 동작 처리 기술 요구사항 유스케이스를 통한 소프트웨어 동작 표현 __유스케이스 작성 방법 입력 포트를 갖는 유스케이스 구현 출력 포트를 이용한 외부 데이터 처리 __어디에 출력 포트를 사용하는가? 애플리케이션 헥사곤을 통한 동작 자동화 요약 연습 문제 더 읽을거리 ▣ 04장: 외부와 상호작용하는 어댑터 만들기 기술 요구사항 어댑터 이해 드라이빙 오퍼레이션 허용을 위한 입력 어댑터 사용 __입력 어댑터 생성 다양한 데이터 소스와 통신하기 위한 출력 어댑터 사용 __출력 어댑터 생성 요약 연습 문제 더 읽을 거리 ▣ 05장: 드라이빙 오퍼레이션과 드리븐 오퍼레이션의 본질 탐색 기술 요구사항 드라이빙 오퍼레이션을 통한 헥사고날 애플리케이션에 대한 요청 호출 __웹 애플리케이션을 헥사고날 시스템에 통합 __테스트 에이전트 실행 __애플리케이션 간의 헥사고날 시스템 호출 드리븐 오퍼레이션을 통한 외부 리소스 처리 __데이터 지속성 __메시징과 이벤트 __모의 서버 요약 연습 문제 [02부] 헥사곤을 활용한 견고한 기반 구축 ▣ 06장: 도메인 헥사곤 만들기 기술 요구사항 도메인 헥사곤 생성 문제 영역 이해 값 객체 정의 엔티티와 명세 정의 __Equipment와 Router 추상 엔티티 __코어 라우터 엔티티와 명세 __에지 라우터와 명세 __스위치 엔티티와 명세 도메인 서비스 정의 __라우터 서비스 __스위치 서비스 __네트워크 서비스 도메인 헥사곤 테스트 요약 연습 문제 ▣ 07장: 애플리케이션 헥사곤 만들기 기술 요구사항 애플리케이션 헥사곤 생성 유스케이스 정의 __라우터 관리 유스케이스에 대한 디스크립션 작성 __라우터 관리를 위한 유스케이스 인터페이스 정의 __스위치 관리 유스케이스를 위한 디스크립션 생성 __스위치 관리를 위한 유스케이스 인터페이스 정의 __네트워크 관리자 유스케이스에 대한 디스크립션 생성 __네트워크 관리를 위한 유스케이스 인터페이스 정의 입력 포트를 갖는 유스케이스 구현 __애플리케이션 헥사곤 테스트 요약 연습 문제 ▣ 08장: 프레임워크 헥사곤 만들기 기술 요구사항 프레임워크 헥사곤 부트스트래핑 출력 어댑터 구현 __라우터 관리 출력 어댑터 __스위치 관리 출력 어댑터 입력 어댑터 구현 __라우터 관리 입력 어댑터 __스위치 관리 입력 어댑터 __네트워크 관리 입력 어댑터 프레임워크 헥사곤 테스트하기 요약 연습 문제 ▣ 09장: 자바 모듈을 이용한 의존성 역전 적용 기술 요구사항 JPMS 소개 헥사고날 시스템에서 의존성 역전 __유스케이스와 입력 포트를 통한 서비스 제공 출력 포트와 출력 어댑터를 통한 서비스 제공 입력 어댑터가 추상화에 의존하게 만들기 자바 플랫폼의 ServiceLoader 클래스를 사용해 JPMS 공급자 구현체 검색하기 __RouterManagementGenericAdapter 초기화하기 __SwitchManagementGenericAdapter 초기화 __NetworkManagementGenericAdapter 초기화 요약 연습 문제 더 읽을 거리 [03부] 아키텍처 핵심 기초 ▣ 10장: 모듈화된 헥사고날 애플리케이션에 쿼커스 추가 기술 요구사항 JVM 다시 살펴보기 __JIT 컴파일러를 통한 런타임 성능 향상 __AOT 컴파일을 통한 시작 시간 개선 쿼커스 소개 __JA-RS를 통한 REST 엔드포인트 생성 __쿼커스 DI를 통한 의존성 주입 __객체의 유효성 검증 __데이터 소스 구성 및 하이버네이트 ORM 사용 모듈화된 헥사고날 애플리케이션에 쿼커스 추가 요약 연습 문제 ▣ 11장: CDI 빈즈를 활용한 포트와 유스케이스 관리 기술 요구사항 쿼커스 DI 배우기 __빈으로 작업하기 포트, 유스케이스, 어댑터를 CDI 빈으로 변환 __라우터 관리 객체에 대한 CDI 구현 __스위치 관리 객체에 대한 CDI 구현 __네트워크 클래스와 인터페이스를 위한 CDI 구현 쿼커스와 큐컴버를 통한 유스케이스 테스팅 요약 연습 문제 ▣ 12장: RESTEasy 리액티브를 활용한 입력 어댑터 구현 기술 요구사항 서버 요청을 처리하는 방법 __명령형 접근 방식 __반응형 접근 방식 RESTEasy 리액티브를 통한 입력 어댑터 구현 __라우터 관리를 위한 리액티브 입력 어댑터 구현 __스위치 관리를 위한 리액티브 입력 어댑터 구현 __네트워크 관리를 위한 리액티브 입력 어댑터 구현 OpenAPI와 스웨거 UI 추가 리액티브 입력 어댑터 테스트 요약 연습 문제 ▣ 13장: 출력 어댑터와 하이버네이트 리액티브를 이용한 데이터 유지 기술 요구사항 하이버네이트 리액티브와 파나쉬 소개 __하이버네이트 리액티브 기능 __파나쉬 기능 __액티브 레코드 패턴 적용 __리포지토리 패턴 적용 출력 어댑터에 대한 반응형 동작 활성화 __반응형 데이터 소스 구성 __엔티티 구성 __반응형 리포지토리 클래스 구현 __반응형 출력 어댑터 구현 __MySQL 출력 어댑터에 대한 반응형 라우터 관리 __MySQL 출력 어댑터에 대한 반응형 스위치 관리 반응형 출력 어댑터 테스트 요약 연습문제 ▣ 14장: 클라우드 배포를 위한 Dockerfile과 쿠버네티스 객체 설정 기술 요구사항 도커 이미지 준비 __우버 .jar 아티팩트를 통한 도커 이미지 생성 __네이티브 실행 파일을 통한 도커 이미지 생성 쿠버네티스 객체 생성 __쿠버네티스의 주요 객체 __헥사고날 시스템을 위한 쿠버네티스 객체 구성 미니큐브에 배포 요약 연습 문제 ▣ 15장: 헥사고날 애플리케이션을 위한 모범 설계 실천법 기술 요구사항 DDD를 이용한 도메인 헥사곤 생성 __비즈니스의 이해 __지식 증대를 위한 협업 촉진 __도메인 헥사곤 구축을 위한 DDD 기법 적용 __헥사고날 시스템에서의 바운디드 컨텍스트와 서브도메인 구현 포트와 유스케이스의 필요성 다양한 어댑터의 범주 처리 결론 - 헥사고날 여정 요약 연습 문제 ▣ 모범 답안