상세정보
미리보기
만들면서 배우는 클린 아키텍처 : 자바 코드로 구현하는 클린 웹 애플리케이션
- 저자
- 톰 홈버그 저/박소은 역/조영호 감수
- 출판사
- 위키북스
- 출판일
- 2023-07-10
- 등록일
- 2024-04-30
- 파일포맷
- PDF
- 파일크기
- 2MB
- 공급사
- YES24
- 지원기기
-
PC
PHONE
TABLET
웹뷰어
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
우리 모두는 낮은 개발 비용으로 유연하고 적응이 쉬운 소프트웨어 아키텍처를 구축하고자 한다. 그러나 불합리한 기한과 쉬워보이는 지름길은 이러한 아키텍처를 구축하는 것을 매우 어렵게 만든다. 이 책에서는 전통적인 계층형 아키텍처(layered architecture) 스타일과 이 스타일의 단점을 논하는 것부터 시작해, 로버트 마틴(Robert C. Martin)의 클린 아키텍처(clean architecture)와 알리스테어 콕번(Alistair Cockburn)의 육각형 아키텍처(hexagonal architecture)에서 이야기하는 도메인 중심 아키텍처의 장점에 대해 이야기한다. 그러고 나서 실제 코드에서 어떻게 육각형 아키텍처를 구현하는지를 보여주기 위한 실습 단원으로 넘어가, 실습을 통해 육각형 아키텍처의 다양한 계층 간 매핑 전략들을 자세히 알아보고 아키텍처의 요소들을 어떻게 애플리케이션에 녹여낼 것인지 배운다. 이어지는 몇 개의 장에서는 아키텍처 경계를 강제하는 방법에 관해 살펴본다. 또, 어떤 지름길이 어떤 종류의 기술 부채를 만들고, 어떤 경우에 이러한 부채를 기꺼이 질 가치가 있는지 배운다. 이 책을 읽고 나면 육각형 아키텍처 스타일의 애플리케이션을 만드는 데 필요한 모든 지식을 알게 될 것이다.
저자소개
10년이 넘는 세월 동안 다양한 업계의 고객들을 위해 수많은 소프트웨어 프로젝트를 진행한 전문적이고 열정적인 소프트웨어 엔지니어다. 주로 자바 생태계에서 소프트웨어 개발자, 아키텍트, 멘토로 일했다. 글을 쓰는 것이 배움의 가장 좋은 방법임을 발견하고, 혼란한 소프트웨어 개발의 세계에 구조를 부여할 수 있는 글을 쓰기 위해 소프트웨어 프로젝트에서 당면했던 주제들에 대해서 깊게 파고드는 것을 좋아한다. 자신의 블로그인 reflectoring.io에 정기적으로 글을 쓰고, 이따금 컨퍼런스에서 연사로 서기도 한다.
목차
▣ 01장: 계층형 아키텍처의 문제는 무엇일까? ___계층형 아키텍처는 데이터베이스 주도 설계를 유도한다 ___지름길을 택하기 쉬워진다 ___테스트하기 어려워진다 ___유스케이스를 숨긴다 ___동시 작업이 어려워진다 ___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?▣ 02장: 의존성 역전하기 ___단일 책임 원칙___부수효과에 관한 이야기___의존성 역전 원칙___클린 아키텍처___육각형 아키텍처(헥사고날 아키텍처)___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?▣ 03장: 코드 구성하기 ___계층으로 구성하기___기능으로 구성하기___아키텍처적으로 표현력 있는 패키지 구조___의존성 주입의 역할___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?▣ 04장: 유스케이스 구현하기 ___도메인 모델 구현하기___유스케이스 둘러보기___입력 유효성 검증___생성자의 힘___유스케이스마다 다른 입력 모델___비즈니스 규칙 검증하기___풍부한 도메인 모델 vs. 빈약한 도메인 모델___유스케이스마다 다른 출력 모델___읽기 전용 유스케이스는 어떨까?___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?___의존성 역전▣ 05장: 웹 어댑터 구현하기 ___웹 어댑터의 책임___컨트롤러 나누기___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?___의존성 역전▣ 06장: 영속성 어댑터 구현하기 ___영속성 어댑터의 책임___포트 인터페이스 나누기___영속성 어댑터 나누기___스프링 데이터 JPA 예제___데이터베이스 트랜잭션은 어떻게 해야 할까?___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?▣ 07장: 아키텍처 요소 테스트하기 ___테스트 피라미드___단위 테스트로 도메인 엔티티 테스트하기___단위 테스트로 유스케이스 테스트하기___통합 테스트로 웹 어댑터 테스트하기___통합 테스트로 영속성 어댑터 테스트하기___시스템 테스트로 주요 경로 테스트하기___얼마만큼의 테스트가 충분할까?___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?▣ 08장: 경계 간 매핑하기 ___‘매핑하지 않기’ 전략___‘양방향’ 매핑 전략___‘완전’ 매핑 전략___‘단방향’ 매핑 전략___언제 어떤 매핑 전략을 사용할 것인가?___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?___왜 조립까지 신경 써야 할까?▣ 09장: 애플리케이션 조립하기 ___평범한 코드로 조립하기___스프링의 클래스패스 스캐닝으로 조립하기___스프링의 자바 컨피그로 조립하기___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?___경계와 의존성▣ 10장: 아키텍처 경계 강제하기 ___접근 제한자___컴파일 후 체크___빌드 아티팩트___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?▣ 11장: 의식적으로 지름길 사용하기 ___왜 지름길은 깨진 창문 같을까?___깨끗한 상태로 시작할 책임___유스케이스 간 모델 공유하기___도메인 엔티티를 입출력 모델로 사용하기___인커밍 포트 건너뛰기___애플리케이션 서비스 건너뛰기___유지보수 가능한 소프트웨어를 만드는 데 어떻게 도움이 될까?▣ 12장: 아키텍처 스타일 결정하기 ___도메인이 왕이다___경험이 여왕이다___그때그때 다르다