ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 만들면서 배우는 클린 아키텍처
    후기/Book Review 2022. 1. 30. 12:01

    <요즘 핫한 그 책>

     

      조영호님의 팬으로서 책 출판 소식을 듣고 읽어보고 싶다는 생각은 했는데 못 보고 있었다. 그러던 중 회사 백엔드 개발자들 간에 아키텍처에 대한 고민도 같이 나눌 겸 해서 스터디를 하게 되어 읽어 보았다.

     


     

    목차

    • 01장: 계층형 아키텍처의 문제는 무엇일까?
    • 02장: 의존성 역전하기
    • 03장: 코드 구성하기
    • 04장: 유스케이스 구현하기
    • 05장: 웹 어댑터 구현하기
    • 06장: 영속성 어댑터 구현하기
    • 07장: 아키텍처 요소 테스트하기
    • 08장: 경계 간 매핑하기
    • 09장: 애플리케이션 조립하기
    • 10장: 아키텍처 경계 강제하기
    • 11장: 의식적으로 지름길 사용하기
    • 12장: 아키텍처 스타일 결정하기

     


     

      클린아키텍처, 헥사고날 아키텍처에 대해 다루는 책이다. (사실 헥사고날의 뜻인 육각형은 크게 의미가 없다고 한다) 흔히들 많이 사용하는 계층형 아키텍처 (웹 -> 도메인 -> 영속성 혹은 Controller -> Service -> Repository 방향으로 흐르는 구조)의 문제점들을 나열하고 이에 대한 해결책으로 헥사고날 아키텍처를 제시한다.

     

    계층형 아키텍처의 문제점을 아래 5가지로 정리한다. (01장 내용)

    1. 데이터베이스 주도 설계를 유도함
    2. 지름길을 택하기 쉬워짐
    3. 테스트하기 어려워짐
    4. 유스케이스를 숨김
    5. 동시 작업이 어려워짐

      이런 계층형 아키텍처에서 헥사고날 아키텍처로 바꾸면 어떤 점들이 개선되고 어떻게 유지보수 가능한 소프트웨어가 되어 가는지를 책의 전반에 걸쳐 설명한다.

     

      의존성의 방향이 도메인으로 향하기 때문에 도메인 주도 개발이 가능하게 된다는 점이 가장 큰 이유인 것 같다. DDD는 사실 아직도 잘 모르지만 도메인 주도 개발을 하게 되면 로직이 도메인으로 응집되고 테스트 하기도 용이해진다. 관심사를 분리하기에도 용이해지고 언제 어떤 파일을 열어서 고쳐야 할지도 좀 더 명확해지는 것 같다.

     

      눈에 띄는 건 분량이다. 168쪽이라는 매우 적은 페이지에 정말 만들면서 배우는 클린 아키텍처를 모두 담을 수 있을지가 의문이었다. 이 부분은 하나의 유스케이스에 집중해서 전체를 관통하는 코드를 보여줌으로써 해결하였다. 그렇지만 조금 더 많은 예시와 코드(깃헙에라도)가 있어도 이해하는데 도움이 될 것 같다는 생각이 들었다.

     

      결국은 유지보수 가능한 소프트웨어를 만들기 위한 몸부림이다. 한 번 만들고 다시는 고치지 않을 소프트웨어라면 아키텍처고 뭐고 다 필요 없다. 남들이 코드를 알아보지 못해도 상관없고 설계 원칙들도 지킬 필요가 없다. 기능이 잘 돌아가고 수정할 필요도 없으니 말이다. 하지만 그런 소프트웨어는 사실상 존재하지 않고 존재한다 하더라도 그렇게 유용하지 못할 것이다. 대부분의 개발자들은 팀으로 같이 일하기 때문에 팀 내의 컨센서스, 컨벤션을 잘 맞추어 유지보수하기 쉬운 클린 한 코드를 만드는 것이 결국은 회사의 비용을 줄여주고 개발자 본인들의 부가가치를 올려 줄 것이다.

     

      회사 스터디로 같이 책을 읽고 이야기를 나누기를 잘한 것 같다. 개개인의 스타일이 다르고 편한 방식이 있겠지만 그래도 어느 정도 지향하고 나아갈 방향을 대충은 맞추지 않았나 싶다. 책의 원칙대로 지키기 매우 어려울 거라 생각된다. 기존과 패키지 구조도 다르고 사용해야 할 인터페이스, 클래스도 늘어난다. 그보다는 왜 이렇게 해야 하는지 모두가 이해하고 공감하는 것이 더 어려울 수도 있다. 꼭 책에 나온 방법만이 아니더라도 유지보수 가능한 소프트웨어를 만들기 위해 항상 고민하고 노력해야겠다.

     

    만들면서 배우는 클린 아키텍처: 자바 코드로 구현하는 클린 웹 애플리케이션, 톰 홈버그 저/박소은 역 (위키북스)

     

    댓글

Designed by Tistory.