
요즘은 코드를 작성하는 방식이 정말 많이 바뀌었다.
예전에는 함수 하나, 클래스 하나를 직접 고민하며 작성했다면, 이제는 AI 코딩 도구의 도움을 받아 훨씬 빠르게 코드를 만들 수 있다. 간단한 API, 테스트 코드, 반복적인 CRUD 로직 정도는 예전보다 훨씬 쉽게 만들어진다.
그런데 오히려 이런 환경이 되면서 더 자주 드는 생각이 있다.
“코드를 빨리 만드는 것과 좋은 시스템을 만드는 것은 다르다”는 점이다.
AI는 나무를 꽤 잘 그린다.
함수도 만들고, 클래스도 만들고, 테스트 코드도 어느 정도 작성해준다. 하지만 그 나무들이 모여 어떤 숲을 이루어야 하는지, 이 숲의 경계는 어디인지, 시간이 지나도 유지될 수 있는 구조인지 판단하는 일은 여전히 개발자의 몫에 가깝다.
그런 점에서 『클린 아키텍처 with 파이썬』은 꽤 시의적절한 책처럼 느껴졌다. 제목만 보면 다소 딱딱한 아키텍처 책처럼 보이지만, 실제로는 “파이썬으로 오래 버틸 수 있는 구조를 어떻게 만들 것인가”에 대한 실전적인 고민을 다룬 책에 가깝다.
파이썬답게 짜되, 무너지지 않게 설계하기
파이썬은 빠르게 무언가를 만들기에 정말 좋은 언어다. 문법이 간결하고, 라이브러리도 풍부하고, 작은 아이디어를 바로 코드로 옮기기 좋다. 문제는 프로젝트가 커진 뒤에 나타난다.
처음에는 단순했던 코드가 점점 커지고, 비즈니스 로직이 API 계층이나 데이터베이스 코드와 뒤섞이고, 기능 하나를 고치려다가 엉뚱한 곳에서 버그가 생기는 상황이 찾아온다. 특히 Flask나 FastAPI 같은 프레임워크로 빠르게 서비스를 만들다 보면, 처음에는 생산성이 높지만 어느 순간부터 “이 코드를 어디서부터 정리해야 하지?”라는 생각이 들 때가 있다.
이 책은 바로 그 지점을 건드린다.
단순히 클린 아키텍처가 무엇인지 설명하는 데서 끝나지 않고, 파이썬 프로젝트 안에서 도메인 계층, 애플리케이션 계층, 인터페이스 어댑터, 프레임워크 계층을 어떻게 나누고 연결하는지 보여준다.
개인적으로 좋았던 점은 “파이썬이니까 대충 유연하게 가도 된다”도 아니고, “파이썬에서도 자바처럼 무겁게 짜야 한다”도 아니라는 점이었다. 타입 힌트, Protocol, dataclass 같은 파이썬다운 도구를 활용하면서도, 아키텍처 경계는 분명히 세우려는 균형감이 좋았다.
DDD부터 서비스 계층까지 이어지는 흐름이 좋았다

책에서 특히 인상적이었던 부분은 DDD, 즉 도메인 주도 설계를 다루는 부분이었다. 사실 DDD는 개발자들 사이에서 자주 언급되지만, 막상 제대로 이해하려고 하면 은근히 추상적으로 느껴지는 개념이다. 엔터티, 값 객체, 애그리게이트, 도메인 서비스 같은 용어들이 나오면 괜히 어렵게 느껴지기도 한다.
그런데 이 책은 이런 개념을 이론으로만 설명하지 않고, 실제 애플리케이션의 구조 안에서 어떻게 쓰이는지 보여준다. 핵심 비즈니스 로직을 외부 기술로부터 분리해야 하는 이유, 도메인 모델이 데이터베이스나 웹 프레임워크에 끌려다니면 왜 문제가 되는지, 그리고 계층을 나누면 테스트와 유지보수가 어떻게 쉬워지는지를 단계적으로 설명한다.
특히 도메인 계층에서 시작해 애플리케이션 계층, 컨트롤러와 프레젠터, 데이터베이스 어댑터, 웹 UI까지 이어지는 흐름이 좋았다. 목차만 보면 각 장이 독립적인 개념처럼 보이지만, 실제로는 하나의 시스템이 조금씩 형태를 갖추어가는 느낌이 있다.
테스트와 관측 가능성까지 다루는 점도 현실적이었다

아키텍처 책을 읽다 보면 구조 자체에 대한 이야기에서 끝나는 경우가 많다. 그런데 실제 현업에서는 구조만 잘 나눴다고 끝나지 않는다. 테스트가 가능해야 하고, 문제가 생겼을 때 관측할 수 있어야 하며, 시간이 지나 레거시가 된 코드를 어떻게 바꿀지도 고민해야 한다.
이 책은 그런 현실적인 지점까지 다룬다.
클린 아키텍처에서 테스트를 어떻게 바라봐야 하는지, 아키텍처 경계를 넘는 테스트는 어떻게 구성할 수 있는지, 관측 가능성이나 피트니스 함수를 통해 아키텍처 무결성을 어떻게 확인할 수 있는지까지 소개한다.

또 마지막에는 레거시 시스템을 한 번에 갈아엎는 방식이 아니라, 점진적으로 클린 아키텍처로 옮겨가는 접근을 다룬다. 이 부분도 좋았다. 실제 프로젝트에서는 모든 것을 새로 만들 수 있는 경우보다, 이미 돌아가고 있는 시스템을 조심스럽게 개선해야 하는 경우가 훨씬 많기 때문이다.
이상적인 새 프로젝트만 상정하지 않고, 기존 코드와 요구 사항, 일정, 안정성 사이에서 어떻게 개선할지 고민하게 만든다.
다만 가볍게 읽히는 책은 아니다
아쉬운 점도 있다.책이 친절한 편이긴 하지만, 아주 쉽게 술술 읽히는 책은 아니다. 파이썬 문법을 이제 막 익힌 독자라면 다소 어렵게 느껴질 수 있다. 특히 SOLID, DDD, 테스트, 의존성 역전 같은 개념이 낯설다면 한 번에 이해하기보다는 천천히 다시 읽어야 할 가능성이 높다.
또 작은 프로젝트만 주로 해온 사람에게는 “이렇게까지 나눠야 하나?”라는 생각이 들 수도 있다. 실제로 클린 아키텍처는 구조를 명확히 만드는 대신 파일과 계층이 늘어나는 부담이 있다. 모든 프로젝트에 처음부터 이 구조를 전부 적용하는 것이 정답은 아닐 것이다.
이런 사람에게 추천하고 싶다
이 책은 파이썬을 처음 배우는 사람보다는, 어느 정도 파이썬으로 서비스를 만들어본 사람에게 더 잘 맞을 것 같다. 특히 혼자 만들 때는 문제가 없었지만 팀 프로젝트나 장기 유지보수 단계에서 구조의 한계를 느껴본 개발자라면 더 많이 공감할 수 있다.
Flask나 FastAPI로 서비스를 만들고 있는데 코드가 점점 복잡해지는 사람, DDD나 SOLID를 들어본 적은 있지만 실제 코드에서 어떻게 적용해야 할지 막막했던 사람, 테스트하기 쉬운 구조를 만들고 싶은 사람에게 추천하고 싶다.
개인적으로는 이 책을 읽고 나서 클린 아키텍처를 “복잡한 대형 프로젝트에서만 필요한 이론”으로 보기보다, 변화에 오래 버티기 위한 사고방식으로 보게 됐다. 빠르게 만드는 것도 중요하지만, 시간이 지나도 고칠 수 있는 구조를 만드는 것 역시 개발자의 중요한 역량이라는 점을 다시 느꼈다.
한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.
댓글