profile
코드 품질의 중요성을 아는 개발자 👋🏻

9장. 애플리케이션 조립하기

모든 의존성은 애플리케이션의 도메인 코드 방향으로 향해야 도메인 코드가 바깥 계층의 변경으로부터 안전하다!유스케이스가 영속성 어댑터를 직접 호출하고 스스로 인스턴스화 한다면 의존성 방향이 잘못되게 된다.이것을 해결하기 위해 우리는 아웃고잉 포트 인터페이스를 도입했다.유

2022년 6월 21일
·
0개의 댓글
·
post-thumbnail

8장. 경계 간 매핑하기

포트 인터페이스가 도메인 모델을 입출력 모델로 사용하면 두 계층 간의 매핑을 할 필요가 없다.즉, 웹 계층과 애플리케이션 계층, 영속성 계층 모두 도메인 모델인 Account에 접근하는 것이다.물론 책의 그림상으로는 연결되어 있지 않지만, 실제 코드를 작성하면 어쩔 수

2022년 6월 21일
·
0개의 댓글
·
post-thumbnail

7장. 아키텍처 요소 테스트하기

업로드중..만드는 비용이 적고, 유지보수하기 쉽고, 빨리 실행되고, 안정적인 작은 크기의 테스트들에 대해 높은 커버리지를 유지해야한다.테스트가 비싸질수록 테스트의 커버리지 목표는 낮게 잡아야한다. 그렇지 않으면 새로운 기능을 만드는 것보다 테스트를 만드는데 시간을 더

2022년 6월 21일
·
0개의 댓글
·
post-thumbnail

6장. 영속성 어댑터 구현하기

의존성을 역전시키기 위해 영속성 계층을 애플리케이션 계층의 플러그인으로 만드는 방법을 알아보자!코어의 서비스가 영속성 어댑터에 접근하기 위해 포트를 사용, 해당 포트는 영속성 어댑터가 구현하는 형태이다.포트는 영속성 작업을 수행하고 DB와 통신할 책임을 가진 영속성 어

2022년 6월 9일
·
0개의 댓글
·
post-thumbnail

5장. 웹 어댑터 구현하기

이번장은 웹 인터페이스를 제공하는 어댑터의 구현 방법을 알아본다.웹 어댑터는 외부로부터 요청을 받아 애플리케이션 코어를 호출한다.제어 흐름은 웹 어댑터에 있는 컨트롤러에서 애플리케이션 계층에 있는 서비스로 흐른다.애플리케이션 계층은 웹 어댑터가 통신할 수 있는 특정 포

2022년 6월 9일
·
0개의 댓글
·

4장. 유스케이스 구현하기

헥사고날 아키텍처에서 유스케이스를 구현하기 위해 이 책에서 제시하는 방법을 설명한다.도메인 중심의 아키텍처에 적합하기 때문에 도메인 엔티티를 만드는 것으로 시작한 후 도메인 엔티티를 중심으로 유스케이스 구현!예제에서 한 계좌에서 다른 계좌로 송금하는 유스케이스를 구현!

2022년 6월 9일
·
0개의 댓글
·

3장. 코드 구성하기

코드를 구성하는 몇 가지 방법을 소개한다.소개할 예시들은 송금 서비스 BuckPal에 대한 것들이다.특히 사용자가 본인의 계좌에서 다른 계좌로 돈을 송금할 수 있는 ‘송금하기’ 유스케이스에 대해 살펴본다.웹, 도메인, 영속성 계층 각각에 해당하는 전용 패키지인 web,

2022년 5월 16일
·
0개의 댓글
·
post-thumbnail

2장. 의존성 역전하기

일반적인 해석 → “하나의 컴포넌트는 오로지 한 가지 일만 해야 하고, 그것을 올바르게 수행해야 한다.”실제 정의 → “컴포넌트를 변경하는 이유는 오직 하나뿐이어야 한다.”이것이 좀 더 SRP의 목적에 부합한 설명!책임 → ‘변경할 이유’로 해석!아키텍처에서 SRP의

2022년 5월 16일
·
0개의 댓글
·
post-thumbnail

1장. 계층형 아키텍처의 문제는 무엇일까?

맨 위의 웹 계층에서 요청을 받는다.도메인 혹은 비즈니스 계층에 있는 서비스로 요청을 보낸다.서비스에서는 필요한 비즈니스 로직을 수행한다.이때 도메인 엔티티의 현재 상태를 조회하거나 변경하기 위해 영속성 계층의 컴포넌트를 호출한다.잘 만들어진 계층형 아키텍처는 선택의

2022년 5월 16일
·
0개의 댓글
·

👊🏼 우아한 스터디 시작!

이번에 올라왔던 우아한 스터디에 지원했었다. 여러 스터디가 있었지만 "헥사고날 아키텍쳐로 구현하는 작은 스프링 부트 토이 프로젝트" 스터디에 지원하였다. 애초에 클린 아키텍처에 관심이 많았고, 언젠가 헥사고날 아키텍처도 한번 공부해보고 싶었기 때문에 너무 좋은 기회라고

2022년 5월 16일
·
0개의 댓글
·
post-thumbnail

Prototype Pattern

코드를 복사하려는 구체적인 클래스에 종속시키지 않고 기존 개체를 복사할 수 있는 패턴이다.객체가 있고 그 객체의 정확한 복사본을 만들고 싶다고 가정해보자. 먼저 동일한 클래스의 새 객체를 생성해야 한다. 그런 다음 원본 객체의 모든 필드를 살펴보고 해당 값을 새 객체에

2022년 4월 20일
·
0개의 댓글
·
post-thumbnail

Builder Pattern

복잡한 객체를 단계별로 구성할 수 있는 방안을 제시하는 디자인 패턴이다. 또한 해당 패턴을 통해 동일한 구성 코드를 사용하여 객체의 다양한 유형과 표현을 생성할 수 있다.많은 필드와 중첩 객체를 힘들게 단계별로 초기화해야 한다고 가정해보자. 이런 복잡한 코드는 또한 클

2022년 4월 19일
·
0개의 댓글
·

[Chapter 22] 급여 관리 사례 연구(2부)

패키지 다이어그램은 의존 관계가 아래쪽으로 향하도록 그린다 → 관례적 표현항상 동일한 변화에 동일하게 폐쇄되어 있는지 패키지 점검 (CCP)거의 아무도 A패키지에 의존하지 않는다! → A는 책임이 없는 패키지!A패키지는 어떤 것도 의존하지 않는다! → A는 독립적인 패

2022년 4월 14일
·
0개의 댓글
·

[Chapter 21] 팩토리 패턴

DIP에 따르면 구체 클래스에 의존하는 것은 피하고 추상 클래스에 의존하는 것을 선호해야 한다.사실 new 키워드 사용하면 엄격하게 DIP를 어기는 셈이다.사실 근데 구체 클래스가 쉽게 변경되는 종류의 클래스가 아니라면(String같은) 큰 문제는 없다.하지만 변경되기

2022년 4월 12일
·
0개의 댓글
·
post-thumbnail

Abstract Factory Pattern

구체적인 클래스를 지정하지 않고 관련 객체의 패밀리를 생성할 수 있는 생성 디자인 패턴입니다.가구 매장 시뮬레이터를 만들고 있다고 가정해보자. 고객의 요구사항은 어울리는 가구 제품군들을 받는 것이다. 동일한 패밀리의 다른 객체와 일치하도록 개별 가구 객체를 작성하는 방

2022년 4월 12일
·
0개의 댓글
·

[Chapter 20] 패키지 설계의 원칙

큰 애플리케이션을 조직화할 때는 클래스보다 더 큰 무엇이 필요 → 패키지 이번 챕터에서는 6가지 규칙을 소개 3개 → 패키지 응집도에 대한 원칙, 클래스를 패키지에 할당하는 일을 도움 3개 → 패키지 결합도에 대한 원칙, 패키지 간의 관계를 결정하는 일을

2022년 4월 8일
·
0개의 댓글
·
post-thumbnail

Factory Method Pattern

슈퍼클래스에서 객체를 생성하기 위한 인터페이스를 제공하고 서브클래스가 생성될 객체의 유형을 변경할 수 있도록 하는 디자인 패턴이다. 일반적으로 슈퍼클래스에서 어떠한 비즈니스 로직이 존재하고, 그 로직을 수행하는 객체를 생성하는 것을 서브클래스에서 구현하는 형태이다.

2022년 4월 8일
·
0개의 댓글
·

[Chapter 18,19] 급여 관리 사례 연구

책에서는 간단한 일괄 임금 지급 시스템 개발을 예로 들어 설명하고 있다. 책에서 나오는 "반복의 시작", "구현" 부분에서 내가 느낀 포인트 위주로 정리하려 한다.첫 반복에 선택된 스토리에 대해 간단히 나열한다.요구사항을 듣고 데이터베이스 스키마를 생성하려 하지 말자!

2022년 4월 6일
·
0개의 댓글
·

[Chapter 17] 널 오브젝트 패턴

널 오브젝트 패턴 데이터베이스에 "A"라는 이름의 Employee객체를 요청했을 때, 있는 경우는 그 객체를, 없는 경우는 null을 리턴한다. 하지만 우린 null 테스트를 자주 잊어버리고 그로 인해 다양한 에러를 맞이한다. 그렇다면 null을 반한화지 않고 예외

2022년 2월 19일
·
0개의 댓글
·

[Chapter 16] 싱글톤과 모노스테이트 패턴

이 챕터에서는 단일성을 강제하는 두 패턴을 다룬다. 때때로 이런 단일성이 적용된 객체는 프로그램의 루트가 되기도하고, 다른 객체를 만들기 위해 사용하는 factory가 되기도 하며, 다른 객체를 추적하여 그 객체의 pace에 맞게 동작시키는 관리자가 되기도 한다.책 내

2022년 2월 18일
·
0개의 댓글
·