본문 바로가기
[Review]/Book

[도서 리뷰] 클린 아키텍처 with 파이썬

by 해피빈이 2026. 5. 24.
반응형

** 한빛미디어 서평단 <나는 리뷰어다> 활동을 위해서 책을 협찬받아 작성된 서평입니다.

 

AI가 발달하고 바이브코딩이 활성화되면서 개발자는 여러 갈래길의 생각을 갖게 된다.

특히 바이브코딩을 경험하고 난 뒤라면 개발자는 여지없이 이런 생각을 할 수 있다.

'이제는 코드를 내가 직접 보지 않고도 개발이 가능하잖아'

그 생각이 확장된다면 수년간 중요하게 여겨왔던 클린아키텍처도 무용론으로 빠질지도 모른다.

사실 실제 코드를 내가 볼 일이 없다면 그 코드의 프레임이 그렇게 중요한가 하는 생각도 할 수 있기 때문이다.

하지만, 나는 다른 생각이 들었다.

아무리 바이브코딩을 열심히 했다고 하더라도 결국 그 코드에서 버그란 나오기 마련이고, 버그라는 것이 단지 개발 관점이 아니더라도 요구사항 측면에서 원하지 않는 결과를 볼 수 있기 때문에 언젠가는 나는 그 코드를 읽어야만 하는 독자의 시점이 될 수 있다는 것이다.

그러면 내가 그 코드를 보는 그 시점은 생소한 코드를 보는 입장과 크게 다르지 않을지도 모른다.

마치 입사를 새로 해서 새로운 팀에 합류를 했을 때의 코드를 보는 느낌이다.

코드를 보면서 이 코드가 잘 정리되어 있다면, 이해가 빠르게 될 것이고, 동시에 내가 수정할 부분을 분명히 알아 수정할 수 있을 것이다. 또한, 내가 수정한 부분으로 인해 다른 불필요한 영역에 사이드이펙트를 주지 않을 수 있기 때문에 결국 잘 정돈된 코드는 중요하다는 것은 이 부분에서도 여지없이 드러난다고도 볼 수 있다.

결국 요즘 시대에도 클린아키텍처의 중요성은 줄어들지 않았다고 볼 수 있는 이유이다.

 

특히, 파이썬을 대상으로 이 부분을 생각하게 된 것은, 파이썬 자체가 자유도가 꽤 높은 언어이기 때문에 정말 다양한 개발 스타일이 존재한다는 것이다. 더욱이 AI에게 여러 스크립트로 작업을 시키면서 파이썬으로 코드를 작성할 일도 많은데, 이것을 규모있게 만들다 보면 결국 구조가 중요하게 된다. 이런 관점에서 파이썬에서 클린아키텍처를 도입한다면 어느 부분을 중요하게 생각하며 봐야할 것인지 알면 좋겠다 싶은 생각에 이 책을 보기 시작하였다.

 

 

책 정보

 

책은 클린아키텍처를 파이썬보다 강조한 표지가 눈에 들어왔다. 클린아키텍처를 중심으로 설명하되, 그 배경이 파이썬임을 명시하는 느낌이다. 이 책을 다 읽고 보게 된 부분이 있는데, packt 책이라는 것이다. packt책은 양질의 다양한 개발서적을 출판하는 플랫폼으로 잘 알려져 있다. 책의 내용이 참 짜임새 있다고 생각이 들었던 이유 중 하나이지 않았을까 생각이 되었다.

 

 

- 정가: 33,000원(전자책 26,400원)

- 분량: 360쪽

- 저자: 샘 킨

- 역자: 송영숙

 

특징

(1) 클린 아키텍처 개념

 

클린아키텍처에 대해서 명확히 알지 못하면 여러 부분에서 포커싱이 잘못 잡힐 수 있으므로 이 책은 클린아키텍처의 개념을 가장 먼저 설명한다. 클린아키텍처 자료조사를 했다면 누구든 흔히들 많이 봤을 과녘과도 같은 모형의 계층 다이어그램부터 시작해서 말하고 있다. 단순 엉클 밥의 그림을 가져와 사용한 것은 아닌, 나름대로의 해석으로 한국어로 잘 번역하여 담아낸 것이 눈에 띄었다. 그리고 불필요하게 과도하게 번역하지도 않았다. 엔터티, 유즈케이스, 인터페이스 어댑터 등 자체 용어들을 적극 활요하여 오히려 자연스럽게 볼 수 있었다.

그리고, 한눈에 볼 수 있도록 폴더의 구조도 명시하였다. 사실 프로젝트 빌딩 단계에서는 이런 폴더 구조를 잡는 것부터 난제의 시작인데, 이런 샘플을 제시해 줌으로 머리에 쉽게 그려지는 데 도움을 주었다. 또한 뒤에 나오는 내용에서는 웹에서는 어떤 구조를 가져가는 편인지 이해하기 쉽게 확장하였으므로 이런 부분도 같이 보면 도움이 된다. 플라스크 프로젝트로 표현한다면 이 부분을 함께 보아야 한다.

 

(2) SOLID 개념

 

 

클린 아키텍처라기 보다는 OOP라고 봐야 맞을 듯하지만, 이 둘은 떼어놓을 수 없기 때문에, 기본 원칙인 SOLID에 대해서도 알아보는 섹션이 존재한다. 기존에 잘 알고 있는 부분도 포함되어 있을 수 있지만, 그렇다 할지라도 파이썬 코드로 이 부분을 이해하는 데 도움이 되었다.

단일책임 원칙, 개방-폐쇄 원칙, 인터페이스 분리 원칙, 리스코프 치환 원칙, 의존성 역전 원칙이 그것이다.

그리고, 각 원칙들은 다른 원칙에도 어느정도 영향을 준다. 그러니 어느 하나 소홀히 볼 수 없다. 특히 리스코프 치환 원칙을 설명하면서 보통은 면적을 구하는 문제나 산술 관련된 예시 위주로 알기 쉬운데, 여기에서는 Vehicle과 ElectricCar를 예시로 들어서 설명하였다. 이 부분이 매우 잘 납득이 되었으며, 만약 누군가 취업을 하거나 이직을 할 때 이런 설계 원칙에 대해서 설명할 일이 있다면 이것을 예시로 설명하면 좋겠다는 생각도 들었다.

 

(3) 파이썬 언어 특징 활용

 

파이썬 타입 강화 부분은 파이썬이기 때문에 중요한 부분이라고 할 수 있다.

타입을 명시하지 않아도 작동에는 문제가 없다. 마치 자바스크립트처럼 말이다. 하지만 타입스크립트를 이용하는 것과 동일한 이유로, 파이썬에서도 타입 명시를 함으로써 오동작하는 오류를 방지할 수 있다.

그리고 List와 Tuple을 사용할 때 Sequence를 사용하면 여러 장점이 있다는 점도 말해주고 있다. 유즈케이스 계층에서 엔터티나 값 객체의 컬렉션을 쉽게 처리할 수 있다는 것이다. 인터페이스 어댑터 계층에서는 다양한 컬렉션 타입과 작동하는 유연한 API를 만들 수 있기 때문이다. 이런 범용성 덕분에 Sequence는 파이썬에서 유연하고 유지보수가 쉬운 클린 아키텍처를 구현하는 매우 강력한 도구가 된다.

그리고 로깅에서도 마찬가지로 플라스크의 app.logger를 사용하는 대신 logging 클래스를 만들어서 사용하는 방식으로 프레임워크 결합을 피하는 방법을 말하고 있다. 이 부분도 결합도를 낮추기 위한 방식 중 하나이므로 유용하게 사용할 수 있을 것이다.

 

(4) 각 계층별 특징

 

각 계층별 특징에 대한 부분을 설명하는 부분에서는 과녘 모양의 각 계층을 한 계층씩 쌓아가는 방법으로 더하며 설명한다. 이 부분은 우리가 익히 잘 아는 부분일지는 모르지만, 통으로 보면서 일부 이해가 안가는 부분에 대해서는 도움이 된다고 본다. 그리고 테스트케이스를 만드는 과정도 준비, 실행, 검증에 관한 단계에 맞춰서 해야하는 것을 보여준다.(AAA 패턴)

그리고, 이런 과정을 피트니스 함수라는 것을 통해서 이런 아키텍처 원리에 의해서 잘 구현되었는지 매번 잘 검증하는 것도 가능하다. 그래서 git hook을 연결하면 아키텍처에 위배되는 구현을 미리 잡아내는 것도 가능하다.

 

(5) 설득 및 입증하기

 

이 책은 여기에서 멈추지 않는다. 이런 클린 아키텍처가 좋고, 어떻게 활용하는 것인지 파악된다면, 이제는 이것을 설득해야하는 각 파트너들과 동료, 그리고 의사 결정권자들에게 어떻게 말해야하는지 설득하고, 입증하는 방법을 도와준다.

최대한 클린아키텍처를 도입할 수 있도록 첨삭지도해주는 느낌이 들었다.

장점에 대해서 어필하는 것이 중요하기 때문이다.

- 관심사 분리: 초기 투자 이후 기능 출시 가속화

- 명확한 경계: 회귀 문제 감소, 안정적인 릴리스

- 프레임워크 독립성: 시스템 수명 연장, 재작성 필요성 감소

- 테스트 가능성: 품질 향상, 프로덕션 인시던트 감소

각 하나하나의 요소가 너무 공감되었다. 나 역시 이것을 활용해서 이야기 할 일이 있을 것 같다.

 

이 책을 추천하고 싶은 독자

- 클린 아키텍처에 대해 어느정도는 알지만 좀 더 깊게 파악하고자 하는 개발자

- 클린 아키텍처를 파이썬에서 어떤 방식으로 적용할 수 있을지 알고 싶은 개발자

- AI와 함께 스크립트를 만들어가면서 파이썬을 연구하는 이용자

- 좋은 코드를 만들고 싶은 의지가 있는 개발자

 

총평

지금에서 보자면 클린 아키텍처는 꽤 오래된 개발 방법론으로 보인다.

하지만, 안타깝게도 그와 동시에 이 방법을 제대로 아는 개발자는 생각보다 많지는 않은 것이 현실이다.

앞으로도 바이브코딩 등 다양한 열풍으로 인해 이런 개발 방법론의 중요성이 더 올라가기는 쉽지 않은데, 이럼에도 이런 책이 더 앞으로는 각광받아서 좋은 코드가 많이 양산되었으면 하는 바람이 있다.

그래야 개발자도 덜 고생하고 버그를 덜 만들기 때문이다.

이 책은 이런 길을 만들어 가는데 일조를 하는 좋은 책이 될 것이라고 생각한다.

반응형

댓글