지속 가능한 프런트엔드 엔지니어링 (ebook)
22,400원
초급
도서 소개
헥사고날 아키텍처가 유지보수성을 높이는 데 어떻게 도움이 될까?
유지보수성을 고려한 설계는 개발 비용을 낮추고 개발자의 만족도를 높이는 핵심 요소다. 《만들면서 배우는 클린 아키텍처》 개정판은 유지보수성이 뛰어난 소프트웨어를 구축하는 데 필요한 필수 기술과 지식을 알려준다.
이 책에서는 기존 계층형 아키텍처의 단점을 살펴보고, 로버트 C. 마틴의 ‘클린 아키텍처’와 알리스테어 콕번의 ‘헥사고날 아키텍처(Hexagonal Architecture)’ 같은 도메인 중심 아키텍처의 장점을 강조한다. 이어서 육각형 아키텍처를 실제 코드로 구현하는 방법을 보여주는 실습을 진행한다. 또한 육각형 아키텍처의 각 계층 간 다양한 매핑 전략에 대해 자세히 배우고, 아키텍처 요소들을 애플리케이션으로 조립하는 방법을 확인한다. 후반부에서는 아키텍처 경계를 어떻게 강화해야 하는지, 어떤 지름길이 어떤 유형의 기술적 부채를 초래하는지, 그리고 때로는 의도적으로 그러한 부채를 감수하는 것이 어떠한 이유로 적절한 선택인지에 대해 설명한다.
이 책을 읽고 나면 헥사고날 아키텍처에 대한 깊은 이해를 바탕으로 비용과 시간을 절약해 주는 유지보수성이 뛰어난 웹 애플리케이션을 만들 수 있을 것이다. 또한 여러분의 소프트웨어 아키텍처 역량을 새로운 차원으로 끌어올리고, 시간이 지나도 견고하게 동작하는 애플리케이션을 구축할 수 있도록 도와줄 것이다.
★ 이 책에서 다루는 내용 ★
- 계층형 아키텍처 사용 시 발생할 수 있는 잠재적 단점
- 아키텍처 경계를 확고히 하기 위한 다양한 방법
- 잠재적인 지름길이 소프트웨어 아키텍처에 미치는 영향
- 다양한 아키텍처 스타일 사용
- 아키텍처에 따른 코드 구조화
- 아키텍처의 각 요소를 확인하기 위한 다양한 테스트 실행 방법
도서 소개

저자 소개
톰 홈베르크스(Tom Hombergs)
소프트웨어 엔지니어이자 저자이며, 단순함을 추구하는 사람이다. 복잡함은 그의 약점이므로, 복잡한 것들을 자신이 이해할 수 있는 간단한 것으로 만들기 위해 부단히 노력한다. 그가 이해할 수 있다면 다른 모든 사람들도 이해할 수 있다. 그는 코드뿐만 아니라 글도 단순화하여, 즐겁게 읽을 수 있는 글, 책, 개발자 문서를 만든다. 톰은 현재 호주 시드니에 소재한 아틀라시안에서 근무하며, 다른 아틀라시안 개발자들이 사용하는 기술 스택의 개발자 경험(Developer Experience; DX)을 담당하고 있다.
역자 소개
트랜스메이트
다양한 IT 기술과 실용적인 주제에 관심 있는 사람들이 함께하는 번역가 모임이다. 시시각각 변화하는 IT 분야에 발맞춰 정확하게 이해하고 편안하게 읽을 수 있는 기술서로 거듭날 수 있게 노력하고 있다.
목차
- ▣ 01장: 유지보수성
- 유지보수성은 도대체 무엇을 의미하는가?
- 유지보수성이 기능성을 가능하게 한다
- 유지보수성은 개발자 즐거움을 만들어낸다
- 유지보수성은 의사결정을 지원한다
- 유지보수성 유지하기
- ▣ 02장: 계층의 문제점
- 데이터베이스 주도 설계를 조장한다
- 지름길을 조장한다
- 테스트하기 어려워진다
- 유스케이스를 숨긴다
- 병렬 작업이 어려워진다
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 03장: 의존성 역전
- 단일 책임 원칙
- 부수효과에 관한 이야기
- 의존성 역전 원칙
- 클린 아키텍처
- 헥사고날 아키텍처
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 04장: 코드 구성하기
- 계층별 구성
- 기능별 구성
- 아키텍처적으로 표현력 있는 패키지 구조
- 의존성 주입의 역할
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 05장: 유스케이스 구현하기
- 도메인 모델 구현하기
- 유스케이스 간단 소개
- 입력 검증
- 생성자의 위력
- 다양한 유스케이스에 대한 다양한 입력 모델
- 비즈니스 규칙 검증
- 풍부한 도메인 모델 vs. 빈약한 도메인 모델
- 다양한 유스케이스에 대한 다양한 출력 모델
- 읽기 전용 유스케이스는 어떻게 할까?
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 06장: 웹 어댑터 구현하기
- 의존성 역전
- 웹 어댑터의 책임
- 컨트롤러 쪼개기
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 07장: 영속성 어댑터 구현하기
- 의존성 역전
- 영속성 어댑터의 책임
- 포트 인터페이스 나누기
- 영속성 어댑터 나누기
- 스프링 데이터 JPA를 사용한 예제
- 데이터베이스 트랜잭션은 어떻게 할까?
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 08장: 아키텍처 요소 테스트하기
- 테스트 피라미드
- 단위 테스트로 도메인 엔티티 테스트하기
- 단위 테스트로 유스케이스 테스트하기
- 통합 테스트로 웹 어댑터 테스트하기
- 통합 테스트로 영속성 어댑터 테스트하기
- 시스템 테스트로 주요 경로 테스트하기
- 테스트는 어느 정도면 충분할까?
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 09장: 경계 간 매핑
- ‘매핑하지 않기’ 전략
- ‘양방향’ 매핑 전략
- ‘완전’ 매핑 전략
- ‘단방향’ 매핑 전략
- 언제 어떤 매핑 전략을 사용할까?
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 10장: 애플리케이션 조립하기
- 왜 조립에 신경 써야 할까?
- 일반 코드를 통한 조립
- 스프링의 클래스패스 스캔을 통한 조립
- 스프링 자바 컨피그를 통한 조립
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 11장: 의식적으로 지름길 택하기
- 지름길이 깨진 유리창처럼 위험한 이유
- 깨끗하게 시작할 책임
- 유스케이스 간 모델 공유
- 도메인 엔티티를 입력 또는 출력 모델로 사용하기
- 인커밍 포트 건너뛰기
- 서비스 건너뛰기
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 12장: 아키텍처 경계 강제하기
- 경계와 의존성
- 가시성 제한자
- 컴파일 후 적합성 함수
- 빌드 아티팩트
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 13장: 여러 바운디드 컨텍스트 관리하기
- 바운디드 컨텍스트당 헥사곤 하나씩?
- 분리된 바운디드 컨텍스트
- 적절히 결합된 바운디드 컨텍스트
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 14장: 소프트웨어 아키텍처에 대한 컴포넌트 기반 접근법
- 컴포넌트를 통한 모듈성
- 사례 연구: ‘체크 엔진’ 컴포넌트 구축
- 컴포넌트 경계 강제하기
- 이것이 유지보수 가능한 소프트웨어를 구축하는 데 어떻게 도움이 될까?
- ▣ 15장: 아키텍처 스타일 결정하기
- 간단하게 시작하라
- 도메인을 진화시켜라
- 경험을 믿어라
- 상황에 따라 다르다