[1부] 아키텍처 핵심 기초
▣ 01장: 왜 헥사고날 아키텍처인가?
기술 요구사항
소프트웨어 아키텍처 검토
__보이지 않는 것들
__악순환
__아키텍처는 모두를 위한 것이 아니다
__모놀리식 시스템과 분산 시스템
__의사결정
헥사고날 아키텍처 이해
__도메인 헥사곤
__애플리케이션 헥사곤
__프레임워크 헥사곤
__헥사고날 접근 방식의 장점
요약
연습 문제
더 읽을거리
▣ 02장: 도메인 헥사곤으로 비즈니스 규칙 감싸기
기술 요구사항
엔티티를 활용한 문제 영역 모델링
__도메인 엔티티의 순수성
__관련 엔티티
__UUID를 이용한 식별자 정의
값 객체를 통한 서술력 향상
애그리게잇을 통한 일관성 보장
도메인 서비스 활용
정책 패턴과 명세 패턴을 활용한 비즈니스 규칙 처리
POJO를 통한 비즈니스 규칙 정의
요약
연습 문제
더 읽을거리
▣ 03장: 포트와 유스케이스를 통한 동작 처리
기술 요구사항
유스케이스를 통한 소프트웨어 동작 표현
__유스케이스 작성 방법
입력 포트를 갖는 유스케이스 구현
출력 포트를 이용한 외부 데이터 처리
__어디에 출력 포트를 사용하는가?
애플리케이션 헥사곤을 통한 동작 자동화
요약
연습 문제
더 읽을거리
▣ 04장: 외부와 상호작용하는 어댑터 만들기
기술 요구사항
어댑터 이해
드라이빙 오퍼레이션 허용을 위한 입력 어댑터 사용
__입력 어댑터 생성
다양한 데이터 소스와 통신하기 위한 출력 어댑터 사용
__출력 어댑터 생성
요약
연습 문제
더 읽을 거리
▣ 05장: 드라이빙 오퍼레이션과 드리븐 오퍼레이션의 본질 탐색
기술 요구사항
드라이빙 오퍼레이션을 통한 헥사고날 애플리케이션에 대한 요청 호출
__웹 애플리케이션을 헥사고날 시스템에 통합
__테스트 에이전트 실행
__애플리케이션 간의 헥사고날 시스템 호출
드리븐 오퍼레이션을 통한 외부 리소스 처리
__데이터 지속성
__메시징과 이벤트
__모의 서버
요약
연습 문제
[02부] 헥사곤을 활용한 견고한 기반 구축
▣ 06장: 도메인 헥사곤 만들기
기술 요구사항
도메인 헥사곤 생성
문제 영역 이해
값 객체 정의
엔티티와 명세 정의
__Equipment와 Router 추상 엔티티
__코어 라우터 엔티티와 명세
__에지 라우터와 명세
__스위치 엔티티와 명세
도메인 서비스 정의
__라우터 서비스
__스위치 서비스
__네트워크 서비스
도메인 헥사곤 테스트
요약
연습 문제
▣ 07장: 애플리케이션 헥사곤 만들기
기술 요구사항
애플리케이션 헥사곤 생성
유스케이스 정의
__라우터 관리 유스케이스에 대한 디스크립션 작성
__라우터 관리를 위한 유스케이스 인터페이스 정의
__스위치 관리 유스케이스를 위한 디스크립션 생성
__스위치 관리를 위한 유스케이스 인터페이스 정의
__네트워크 관리자 유스케이스에 대한 디스크립션 생성
__네트워크 관리를 위한 유스케이스 인터페이스 정의
입력 포트를 갖는 유스케이스 구현
__애플리케이션 헥사곤 테스트
요약
연습 문제
▣ 08장: 프레임워크 헥사곤 만들기
기술 요구사항
프레임워크 헥사곤 부트스트래핑
출력 어댑터 구현
__라우터 관리 출력 어댑터
__스위치 관리 출력 어댑터
입력 어댑터 구현
__라우터 관리 입력 어댑터
__스위치 관리 입력 어댑터
__네트워크 관리 입력 어댑터
프레임워크 헥사곤 테스트하기
요약
연습 문제
▣ 09장: 자바 모듈을 이용한 의존성 역전 적용
기술 요구사항
JPMS 소개
헥사고날 시스템에서 의존성 역전
__유스케이스와 입력 포트를 통한 서비스 제공
출력 포트와 출력 어댑터를 통한 서비스 제공
입력 어댑터가 추상화에 의존하게 만들기
자바 플랫폼의 ServiceLoader 클래스를 사용해 JPMS 공급자 구현체 검색하기
__RouterManagementGenericAdapter 초기화하기
__SwitchManagementGenericAdapter 초기화
__NetworkManagementGenericAdapter 초기화
요약
연습 문제
더 읽을 거리
[03부] 아키텍처 핵심 기초
▣ 10장: 모듈화된 헥사고날 애플리케이션에 쿼커스 추가
기술 요구사항