파이썬으로 살펴보는 아키텍처 패턴

  • 큰 규모의 프로그램을 작성하다 보면 코드 구조가 점점 복잡해져 기능 추가와 같은 개선 작업이 어려워지는 경우가 많습니다.
  • 많은 개발자가 고통받는 시간이 길어지자, 사람들은 스스로 답을 찾아 나섰고 그 결과 디자인 패턴이라는 체계를 만들었습니다.
  • 이처럼 패턴은 프로그래밍에서 많은 사람들이 공통적으로 느꼈던 단점을 해결하고자 구조적 개선과 정형화된 구조를 의미합니다. 그렇기 때문에 정답은 없으며 꾸준히 발전되는 분야입니다.

아키텍처 패턴?

  • 객체지향 프로그래밍에서 잘 만들어진 클래스의 설계와 관계를 디자인 패턴이라고 부릅니다. 대표적으로 GoF(Gang of Four)의 디자인 패턴이 있습니다.
  • 아키텍처 패턴은 디자인 패턴과 비슷하지만 더 넓은 범위의 구조를 다룹니다. 디자인 패턴은 주로 소프트웨어 프로그래밍에서의 문제를 다루고 있다면, 아키텍처 패턴은 소프트웨어의 다양한 문제를 다루고 있습니다.

아키텍처 패턴을 공부할 필요가 있을까?

  • 프로젝트의 규모가 커지다 보면 자신의 비즈니스 로직에만 집중하기가 힘들어 집니다. 아무런 설계 없이 작성된 코드들은 서로 복잡한 의존성을 갖고 되고 지속적인 개발과 개선 작업을 진행하기 힘들어집니다.
  • 일반적인 경우 이런 상황이 발생하게 되면 설계를 다시 검토하고 프로젝트의 구조를 개선하는 작업을 진행하게 됩니다. 아키텍처 패턴은 이러한 경우 큰 도움이 됩니다.
    • 패턴 그 자체의 지식을 활용하여 프로젝트의 복잡성을 낮추는 작업을 가능하게 한다.
    • 패턴이 정의하고 있는 기술적 용어의 이해를 바탕으로 의사소통에 비용이 들지 않으며, 추상화된 작업 흐름을 이해할 수 있다.
  • 이러한 이유로 소프트웨어 공학이 다루는 다양한 지식들을 반드시 공부할 필요가 있다고 생각합니다.

왜 파이썬인가?

  • 프로그래밍 언어 중 파이썬만큼 다양한 분야에서 활용되는 언어는 없다고 생각합니다. C++, JAVA 등 각 언어마다 주로 사용되는 분야가 있지만, 파이썬은 거의 모든 분야에서 사용 가능하다는 장점이 있습니다.
  • 따라서 많은 사람들이 파이썬 언어를 사용하고 있으며, 현업 환경에서도 그 영역을 넓혀가고 있습니다. 많은 사람들이 처음 배우는 프로그래밍 언어로 파이썬을 선택하고 있는 지금, 아키텍처를 처음 공부하려는 사람에게는 적절한 선택이라 생각합니다.

주요 내용

  • 의존성 역전, 포트와 어댑터 패턴(육각형/클린 아키텍처)과 의존성 주입의 연결 관계

  • 도메인 주도 설계에서 엔티티, 값 객체, 애그리게이트를 구별하는 법

  • 영속적 저장소 처리를 위한 저장소와 작업 단위 패턴

  • 이벤트, 커맨드, 메시지 버스

  • 명령-질의 책임 분리(CQRS)

  • 책이 다루고 있는 범위가 매우 넓고 방대해서 처음 읽기에는 다소 어려운 느낌을 많이 받았습니다. 어떻게 이 방대한 분량을 이렇게 얇은 책으로 만들었을까? 싶은 생각이 들기도 하고, 반드시 알아둬야 할 내용이라 생각이 들어 책을 놓지도 못하게 만드는 마법 같은 책입니다.

  • 첫 번째 읽을 때는 이게 뭐지? 싶은 순간도 있습니다. 반드시 책의 흐름을 따라가며 코드로 작성해보며 학습하기를 추천합니다. 눈으로 코드를 보는 것과 같은 코드를 손으로 따라 하며 직접 해보는 것은 큰 차이가 있습니다.

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