티스토리 뷰

생활/책

[책] 진화적 아키텍처

Jaeyeon Baek 2023. 9. 24. 20:53

모든 것은 진화한다. 아키텍처도 마찬가지다

 

진화론을 믿는 사람의 비율이 어떻게 될지 모르겠습니다. 하지만 분명한 것은 우리가 구축하는 아키텍처는 진화해야 한다는 겁니다. 어떻게 진화시키면 될까요? 한빛미디어에서 진화적 아키텍처 라는 주제로 흥미로운 책을 내놨습니다.

아키텍처를 갱신하는 방법으로는 크게 점진적인 방식과 빅뱅 방식이 있습니다. 빅뱅 방식은 전체적으로 새로 구축하는 것을 설명합니다. 시간이 충분하다면 빅뱅 방식도 괜찮을 겁니다. 하지만 일반적인 경우라면 점진적인 방식으로 비즈니스에 속도를 내야 합니다. 책에서 소개하는 트위터의 사례를 봐도 그렇습니다. 처음부터 아름다운 백엔드 시스템을 구축하려고 마음먹었더라면 제때 서비스를 론칭하지 못했을 것이고 다른 경쟁자에게 명성을 빼앗겼을지도 모르지요.

 

마이크로서비스는 코드 재사용을 자제하며 커플링보다 중복을 선호하는 철학을 따른다. 재사용은 커플링을 의미하며, 마이크로서비스는 커플링을 극한까지 해체한 아키텍처다. 그러나 마이크로서비스의 진정한 목표는 중복 코드를 늘리는 것이 아니라 도메인 내부의 엔티티들을 서로 격리하는 것이다. 공통 클래스를 공유하는 서비스는 더 이상 독립적일 수 없다

 

우리가 이론으로 알고 있던/있어야 하는 내용도 이 책에 잘 정리되어 있습니다. 비슷한 부류의 책을 많이 읽다 보니 중복되는 내용들도 꽤나 있는데요, 이를테면 콘웨이 법칙이나 얼어붙은 원시인 안티패턴 같은 것들이 그러합니다. 이렇게 중복되는 내용이 많은 와중에 처음 접하는 법칙이 있었는데요. 바로 포스텔의 법칙입니다. 

 

자신의 것은 보수적으로 행하고, 다른 이의 것은 관대하게 받아들이도록 하라. - 존 포스텔

 

무슨 뜻인지 바로 와닿지 않을 겁니다. 해석하자면, 협력 서비스로 데이터를 전송할 때는 꼭 필요한 데이터만 넘기라는 겁니다. 예를 들어 사용자 정보 데이터가 있고, 협력 서비스에서 전화번호만 필요하다면 그것만 넘기면 된다는 거죠. 한편, 반대로 받는 입장에서는 추가 데이터가 있어도 상관없다는 겁니다. 필요한 건 전화번호뿐이라도 추가로 이름이나 성별 등의 데이터가 내려와도 상관없다는 내용입니다. 제게 이 내용은 무릎을 탁 치게 만들었습니다. 현업에서 실제로 그러하게 업무를 하고 있었는데 이런 현상을 법칙으로 내놓은 사람이 있었다는데 반가움과 놀라움이 교차했던 것이지요. 

어쩌면 마이크로서비스 아키텍처를 소개하는 여러 책들과 비슷한 맥락을 소개하고 있을지 모르지만, 이 책은 (자바) 코드 레벨까지 다루고 있습니다. 또한 데이터와 관련해서 실제 사례와 유사한 내용을 설명하고 있기 때문에 추상적인 개념을 점검하기에 아주 좋습니다. 다른 책들로 개념을 공부했는데 정리가 잘 되지 않는다면 이 책을 통해 마무리 지으시길 바랍니다. :) 

 


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

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday