만들면서 배우는 클린 아키텍처

자바 코드로 구현하는 클린 웹 애플리케이션
$21.74
SKU
9791158392758
+ Wish
[Free shipping over $100]

Standard Shipping estimated by Fri 12/6 - Thu 12/12 (주문일로부 10-14 영업일)

Express Shipping estimated by Tue 12/3 - Thu 12/5 (주문일로부 7-9 영업일)

* 안내되는 배송 완료 예상일은 유통사/배송사의 상황에 따라 예고 없이 변동될 수 있습니다.
Publication Date 2021/11/26
Pages/Weight/Size 175*235*9mm
ISBN 9791158392758
Categories IT 모바일 > 컴퓨터 공학
Description
우리 모두는 낮은 개발 비용으로 유연하고 적응이 쉬운 소프트웨어 아키텍처를 구축하고자 한다. 그러나 불합리한 기한과 쉬워보이는 지름길은 이러한 아키텍처를 구축하는 것을 매우 어렵게 만든다. 이 책에서는 전통적인 계층형 아키텍처(layered architecture) 스타일과 이 스타일의 단점을 논하는 것부터 시작해, 로버트 마틴(Robert C. Martin)의 클린 아키텍처(clean architecture)와 알리스테어 콕번(Alistair Cockburn)의 육각형 아키텍처(hexagonal architecture)에서 이야기하는 도메인 중심 아키텍처의 장점에 대해 이야기한다. 그러고 나서 실제 코드에서 어떻게 육각형 아키텍처를 구현하는지를 보여주기 위한 실습 단원으로 넘어가, 실습을 통해 육각형 아키텍처의 다양한 계층 간 매핑 전략들을 자세히 알아보고 아키텍처의 요소들을 어떻게 애플리케이션에 녹여낼 것인지 배운다. 이어지는 몇 개의 장에서는 아키텍처 경계를 강제하는 방법에 관해 살펴본다. 또, 어떤 지름길이 어떤 종류의 기술 부채를 만들고, 어떤 경우에 이러한 부채를 기꺼이 질 가치가 있는지 배운다. 이 책을 읽고 나면 육각형 아키텍처 스타일의 애플리케이션을 만드는 데 필요한 모든 지식을 알게 될 것이다.
Contents
▣ 01장: 계층형 아키텍처의 문제는 무엇일까?

___계층형 아키텍처는 데이터베이스 주도 설계를 유도한다
___지름길을 택하기 쉬워진다
___테스트하기 어려워진다
___유스케이스를 숨긴다
___동시 작업이 어려워진다
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?

▣ 02장: 의존성 역전하기

___단일 책임 원칙
___부수효과에 관한 이야기
___의존성 역전 원칙
___클린 아키텍처
___육각형 아키텍처(헥사고날 아키텍처)
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?

▣ 03장: 코드 구성하기

___계층으로 구성하기
___기능으로 구성하기
___아키텍처적으로 표현력 있는 패키지 구조
___의존성 주입의 역할
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?

▣ 04장: 유스케이스 구현하기

___도메인 모델 구현하기
___유스케이스 둘러보기
___입력 유효성 검증
___생성자의 힘
___유스케이스마다 다른 입력 모델
___비즈니스 규칙 검증하기
___풍부한 도메인 모델 vs. 빈약한 도메인 모델
___유스케이스마다 다른 출력 모델
___읽기 전용 유스케이스는 어떨까?
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?
___의존성 역전

▣ 05장: 웹 어댑터 구현하기

___웹 어댑터의 책임
___컨트롤러 나누기
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?
___의존성 역전

▣ 06장: 영속성 어댑터 구현하기

___영속성 어댑터의 책임
___포트 인터페이스 나누기
___영속성 어댑터 나누기
___스프링 데이터 JPA 예제
___데이터베이스 트랜잭션은 어떻게 해야 할까?
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?

▣ 07장: 아키텍처 요소 테스트하기

___테스트 피라미드
___단위 테스트로 도메인 엔티티 테스트하기
___단위 테스트로 유스케이스 테스트하기
___통합 테스트로 웹 어댑터 테스트하기
___통합 테스트로 영속성 어댑터 테스트하기
___시스템 테스트로 주요 경로 테스트하기
___얼마만큼의 테스트가 충분할까?
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?

▣ 08장: 경계 간 매핑하기

___‘매핑하지 않기’ 전략
___‘양방향’ 매핑 전략
___‘완전’ 매핑 전략
___‘단방향’ 매핑 전략
___언제 어떤 매핑 전략을 사용할 것인가?
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?
___왜 조립까지 신경 써야 할까?

▣ 09장: 애플리케이션 조립하기

___평범한 코드로 조립하기
___스프링의 클래스패스 스캐닝으로 조립하기
___스프링의 자바 컨피그로 조립하기
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?
___경계와 의존성

▣ 10장: 아키텍처 경계 강제하기

___접근 제한자
___컴파일 후 체크
___빌드 아티팩트
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?

▣ 11장: 의식적으로 지름길 사용하기

___왜 지름길은 깨진 창문 같을까?
___깨끗한 상태로 시작할 책임
___유스케이스 간 모델 공유하기
___도메인 엔티티를 입출력 모델로 사용하기
___인커밍 포트 건너뛰기
___애플리케이션 서비스 건너뛰기
___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?

▣ 12장: 아키텍처 스타일 결정하기

___도메인이 왕이다
___경험이 여왕이다
___그때그때 다르다
Author
톰 홈버그,박소은,조영호
10년이 넘는 세월 동안 다양한 업계의 고객들을 위해 수많은 소프트웨어 프로젝트를 진행한 전문적이고 열정적인 소프트웨어 엔지니어다. 주로 자바 생태계에서 소프트웨어 개발자, 아키텍트, 멘토로 일했다. 글을 쓰는 것이 배움의 가장 좋은 방법임을 발견하고, 혼란한 소프트웨어 개발의 세계에 구조를 부여할 수 있는 글을 쓰기 위해 소프트웨어 프로젝트에서 당면했던 주제들에 대해서 깊게 파고드는 것을 좋아한다. 자신의 블로그인 reflectoring.io에 정기적으로 글을 쓰고, 이따금 컨퍼런스에서 연사로 서기도 한다.
10년이 넘는 세월 동안 다양한 업계의 고객들을 위해 수많은 소프트웨어 프로젝트를 진행한 전문적이고 열정적인 소프트웨어 엔지니어다. 주로 자바 생태계에서 소프트웨어 개발자, 아키텍트, 멘토로 일했다. 글을 쓰는 것이 배움의 가장 좋은 방법임을 발견하고, 혼란한 소프트웨어 개발의 세계에 구조를 부여할 수 있는 글을 쓰기 위해 소프트웨어 프로젝트에서 당면했던 주제들에 대해서 깊게 파고드는 것을 좋아한다. 자신의 블로그인 reflectoring.io에 정기적으로 글을 쓰고, 이따금 컨퍼런스에서 연사로 서기도 한다.