만들면서 배우는 클린 아키텍처
나의 평점 4.0/5.0
추천합니다.
도매인 주도 개발, 육각형 아키텍처를 가볍게 맛보고 싶다면.
추천하지 않습니다.
프로젝트(아주 하찮은 수준이더라도) 경험이 전무하다면.
이 책을 벌써 세 번이나 읽었다. 다 읽은 걸 기준으로 보자면 2번이다.
이 책은 내가 스프링도 DDD도.. 애초에 개발 방법론이라는 말도 모를 때 산 책인데, 오직 제목만 보고 재미있어보여서 샀다.
그리고 결국 책에서 하는 말이 무슨 말인지 하나도 이해하지 못해서 고작 140페이지짜리 책을 절반에서 포기했었다.
이후 스프링 완전 기초만 간신히 떼고, 문득 이제는 이 책을 읽을 수 있을까? 싶어서 읽어봤는데.. 그 때는 다 읽기는 했지만 책에서 무슨 말을 하고 싶은 것인지 전혀 이해할 수 없었다.
최근에 한 번 더 읽었는데, 이번에는 열성적으로 고개를 끄덕이며 읽게 됐다.. 물론 여전히 이해하지 못하거나 공감할 수 없는 부분이 매우 매우 매우 많다. 해당 부분들은 내가 취업을 하고 몇 번의 프로젝트를 경험한 뒤 읽어야 다르게 와닿을 것 같다.
아무튼 그런 책이다.. 클린 아키텍처의 필요성을 배우려면 일단 더티 아키텍처로 개발을 해봐야하는 법이니까.집에서 청소도 안하고 맨날 누워있는 백수한테 새로 나온 500만원짜리 로봇 청소기가 얼마나 좋은지 소개하는 게 무슨 의미가 있겠는가..?
서론이 너무 길어졌으니 빠르게 목차만 훑어보자. 얇은 책인데 목차도 세분화되어 있어 제목이 곧 내용이라 설명은 생략하겠다.
목차
1. 계층형 아키텍처의 문제는 무엇일까
2. 의존성 역전하기
3. 코드 구성하기
4. 유스케이스 구성하기
5. 웹 어댑터 구현하기
6. 영속성 어댑터 구현하기
7. 아키텍처 요소 테스트하기
8. 경계 간 매핑하기
9. 애플리케이션 조립하기
10. 아키텍처 경계 강제하기
11. 의식적으로 지름길 사용하기
12. 아키텍처 스타일 결정하기
정말 각 목차의 제목이 곧 내용이다. 이 목차들을 보고 내용이 궁금해진다면 책을 사서 읽으면 된다.
기본적으로는 육각형 아키텍처(Hexagonal Architecture) 스타일의 도메인 주도 개발을 어떻게 해야하는지가 주된 내용이나, 평범한 계층형 구조로 개발하는 사람들에게도 도움이 되는 내용들이라고 생각한다.
왜냐? 육각형 아키텍처의 장점을 어필하려면 계속해서 그 반대되는 계층형 아키텍처의 단점을 이야기해야 하기 때문이다.
그리고 그런 단점들은 대부분 (나에게 결졍권이 있는 상황에서는) 노력으로 어느 정도는 극복 가능한 부분이기 때문에 더 신경써야겠다는 생각을 많이 했다.
또한 짧은 책임에도 도메인 주도 개발에 대한 영업력이 상당해서 나에게도 도메인 주도 개발에 대한 욕구를 불태우게 하기에 충분했으나.. 당연히 내 수준에 도메인 주도 개발 같은 건 어림도 없다. 우선 객체지향부터 더 익혀야할 것이고, 기초부터 잘해서 취업하는 게 우선이다..ㅎ
그래도 아무튼 재미있다!
우선 계층형 아키텍처는 협업에 굉장히 적합하지 않은 구조라는 말도 한 번 프로젝트를 진행해보니 어떤 이유인지 절절히 공감이 되었고, 도메인 계층에서 mock 객체 하나 없이, 혹은 한 두개 넣고 모든 테스트가 다 돌아가는 건 정말 경이로워보였다.
무엇보다 "진짜로" 객체 지향적인 개발을 할 수 있다는 것이 너무 매력적으로 느껴졌다.
아직 내가 이런 방법론에 관심을 가질 수준은 아니지만, 취업 전에 시간이 남는다면 이 책에서 소개한 방식으로 작은 웹 어플리케이션을 만들어보고 싶다는 생각이 들었다.
또한, 위에서 언급했다시피 책이 굉장히 얇기 때문에 심심할 때마다 한 번씩 펼쳐보기 좋다.
나처럼 읽는 속도가 빠른 편이라면 처음부터 끝까지 훑어보는 것에 1시간이면 충분할 것이다.
난 나중에 또 읽을 예정이다. 읽을 때마다 생각이 달라지는 게 재미있어서..
빨리 개발 고수가 되어서 나도 이런 걸 해보고 싶다.
한줄평, " 츄라이! 츄라이! "
인간은 습관의 동물이다. 습관이 저절로 결정을 내리기 때문에 우리는 무엇인가를 결정할 때 시간을 들일 필요가 없다. 만약 사자가 우리한테 달려오고 있다면 우리는 도망친다. 만약 새로운 웹 어플리케이션을 만든다면 계층형 아키텍처 스타일을 이용한다. 과거에 너무나도 자주 이렇게 해왔고. 이것이 습관이 된 것이다.
이것이 반드시 나쁜 결정이라고 말하는 것은 아니다. 습관이 나쁜 결정을 내릴 때만큼, 좋은 결정을 내릴 때도 도움이 된다. 그저 우리가 경험한 바를 그대로 하고 있다는 것을 이야기하는 것이다. 우리가 과거에 했던 일에 편안함을 느끼는데 무언가를 바꿔야할 의미가 있을까?
따라서 아키텍처 스타일에 대해서 괜찮은 결정을 내리는 유일한 방법은 다른 아키텍처 스타일을 경험해보는 것이다. 육각형 아키텍처에 대한 확신이 없다면 지금 만들고 있는 애플리케이션의 작은 모듈에 먼저 시도해보라.
개념이 익숙해지고 스타일에 익숙해져라. 이 책에 있는 아이디어들을 적용하고, 수정하고, 자신만의 아이디어를 추가해서 편하게 느껴지는 스타일을 개발하라.
그러면 이 경험이 다음 아키텍처 결정을 이끌어줄 것이다.
만들면서 배우는 클린 아키텍처 (12장 아키텍처 스타일 결정하기 中 )
'개발 도서 리뷰 > 개발 도서 리뷰' 카테고리의 다른 글
개발 도서 리뷰 (10) 업무에 바로 쓰는 SQL 튜닝 4.0/5.0 (0) | 2022.12.24 |
---|---|
개발 도서 리뷰 (9) 그림으로 공부하는 TCP/IP 구조 4.0/5.0 (0) | 2022.10.24 |
개발 도서 리뷰 (7) 그림으로 공부하는 IT 인프라 구조 4.0/5.0 (0) | 2022.09.29 |
개발 도서 리뷰 (6) 테스트 주도 개발 시작하기 3.5/5.0 (2) | 2022.09.18 |
개발 도서 리뷰 (5) 스프링 시큐리티 인 액션 2.0/5.0 (2) | 2022.09.13 |