변화하는 요구사항 우아하게 받아들이기 - ‘진화적 아키텍처‘ 서평

Broccolism·2023년 9월 24일
3

내 거친 생각과

목록 보기
3/5

진화적 아키텍처 - 피트니스 함수, 거버넌스 자동화를 활용해 생산성 높은 소프트웨어 구축하기

서평

추상적인 개념을 구체화하고 실제 사례에 적용까지 해보는 책.

📚어떤 책이냐면 …

  • 책의 부제목은 “피트니스 함수, 거버넌스 자동화를 활용해 생산성 높은 소프트웨어 구축하기” 이다.
    • 함수와 자동화는 익숙하더라도 피트니스 함수, 거버넌스 자동화 라는 용어는 조금 생소할 수 있다.
    • 지금까지 추상적으로만 사용해왔던 것을 구체적으로 개념화하고, 이를 실제 소프트웨어 구축 과정에 접목시키는 책이다.
  • 지은이는 총 4명으로, IT 업계에서 CTO를 역임하거나 아키텍처 관련 전문가로 활동한 이력이 있다. 지금은 모두 글로벌 IT 컨설팅 회사인 ThoughWorks에서 일하고 있다.
    • 특히 닐 포드 (Neal Ford)는 “소프트웨어 아키텍처 101“, ”소프트웨어 아키텍처 The Hard Parts“ 의 저자이기도 하다.

📝 내용 구성

전체적인 구성

책은 총 세 부분으로 나뉜다.

  • PART 1. 역학: 진화적 아키텍처를 달성하기 위한 밑바탕 - 여러가지 개념과 기술, 도구 등- 을 다룬다.
  • PART 2. 구조: 1장의 내용을 바탕으로 소프트웨어 구조 설계를 어떻게 하면 ‘잘’ 할지를 말한다.
  • PART 3. 영향력: 진화적 아키텍처의 원칙과 관행을 위해 여러가지 개발 프로세스를 통합적으로 다루는 방법을 알려준다.

프로그래밍 책인데 웬 역학?

이라고 생각할 수도 있다. 실제로 이 책에 나오는 대부분의 내용은 다른 책이나 강의에서 찾아볼 수 없는 새로운 것들이다.

옆자리 혹은 옆 팀 동료가 소프트웨어 개발에 고나련된 결정을 내리고 있지만, 아키텍트가 누구냐고 묻는다면 선뜻 그를 가리키지 못한다. 심지어 지목당한 본인조차도 자신이 아키텍트가 맞는지 궁금해하곤 한다. - 옮긴이의 말 中

2017년만 해도 진화적 소프트웨어 아키텍처는 다소 급진적인 개념이었다. (…) 레베카는 아키텍처의 진화라는 개념이 결국 전문성을 가장한 무책임에 지나지 않는다는 비난을 듣기도 했다. 아키텍처가 불변의 존재라는 인식은 그 정도로 견고했다. - 이 책에 대하여 中

앞서 한번 언급했던 “소프트웨어 아키텍처 101”이라는 책의 서론에는 이런 구절도 나온다.

첫째, 소프트웨어 아키텍트라는 직업 자체에 대한 명확한 정의가 아직도 없습니다. - 소프트웨어 아키텍처 101 서론

그러니까 소프트웨어 아키텍처, 특히 진화하는 아키텍처에 대한 개념 자체가 그다지 오래된 것이 아니고 그렇기 때문에 아직 명확히 정의되지 않은 부분이 많을 수 있다.
육각형 아키텍처나 마이크로소프트 아키텍처 등 평소 여러가지 아키텍처를 접해보았거나 프로그램 구조 설계에 관심이 많다면 책에서 다루는 내용이 새롭고도 재밌게 느껴지겠지만, 그렇지 않다면 조금 낯설게 느껴질 수도 있다.
계속해서 변화하는 요구사항을 어떻게하면 깔끔하고 효율적으로 처리할 수 있을지에 대한 책이다보니, 확실히 큰 규모의 소프트웨어에 적용할만한 내용이 대부분이다.

💭 책을 읽으며…

👍🏻 Goods

생생하고 구체적인 예시

필자는 소프트웨어 아키텍처에 대한 지식이 많지 않은 편이다. 하지만 구체적이고 이해하기 쉬운 예시 덕분에 이 책의 내용을 이해하는데 무리가 없었다.

우리는 모든 사례 연구의 ‘주인공’으로 가상 기업인 PenultimateWidgets 를 내세웠다. (…) 이 책에 등장하는 모든 PenultimateWidgets 의 사례는 실제 프로젝트 사례를 바탕으로 각색되었다. - 이 책에 대하여 中


” 결국 트위터는 최초의 아키텍처를 재구축하고 더욱 강력한 백엔드로 교체해야만 했다.“

저자의 일부는 현역 컨설턴트로 활동하고 있기에 보다 생생한 사례가 만들어질 수 있었던 것 같다. 가상 사례 뿐만아니라 트위터(이제는 더이상 트위터가 아닌…), 깃허브 등 우리가 익숙한 실제 기업이나 오픈소스 프로젝트도 등장한다.

“깃허브는 하루 평균 60회 배포라는 공격적인 엔지니어링 관행으로 잘 알려져 있다.”

체계적이고 친절한 구성

구성적으로 깔끔하고 꽤 친절한 책이다. 저자는 크게 3개로 나뉘는 각 파트와, 한 파트 안의 각 장을 시작할 때마다 지금까지 무엇을 다뤘으며 앞으로 어떤 내용을 살펴볼 것인지 정리한다. 새로운 단어나 중요한 내용이 나오면 색깔로 강조했으며, 별도 설명이 필요한 부분은 따로 공간을 내어서 구체적으로 설명한다. 그리고 그 설명이 대체적으로 재밌는 내용들이다!

또한 한 장이 끝날 때마다 내용을 요약하는 부분이 있어서 그동안 읽었던 내용을 되짚어보기 편리하게 되어 있다.

깔끔한 시각 자료


아키텍처를 다루기 때문에 추상적인 개념을 자꾸만 얘기할 수밖에 없다. 그럴수록 그림을 그려보는 편인데, 이 책은 필요할 때마다 적절한 도표와 그림이 있어서 이해하기 수월했다. 안 그래도 형체가 없는 소프트웨어의 구조를 다루는 책이기 때문에 이부분이 굉장히 중요하다고 생각했는데 읽으면서 책에 대한 신뢰도가 점점 높아질 정도였다.

🤔 아쉬웠던 점

불명확한 정의

새롭게 등장하는 단어에 대한 정의가 대부분 잘 되어있지만 그렇지 않은 것도 몇몇 있었다. 예를 들어 ‘5장 진화하는 아키텍처 토폴로지’ 에서 ‘사이드카 패턴’ 이라는 용어가 나오는데, 이 패턴의 특징과 장점에 대해서는 다루지만 끝내 명확한 정의는 제시하지 않는다.

새로운 개념을 배울 때 단어와 개념의 정의부터 짚고 넘어가는 필자로서는 조금 불편..! 했지만 소프트웨어 아키텍처라는 분야 특성상 불명확한 부분이 많고, 나머지 개념들은 꽤나 명확하게 정의가 되었다는 점을 생각하면서 넘어갔었다.

⭐️  총평

굳이 따지자면 다양한 실험을 통해 새로운 사실을 발견하는 과학보다는 개념을 정의해놓고 그걸 활용해서 새로운 개념으로 뻗어나가는 수학책에 가까운 책이다.
소프트웨어 개발 분야를 대하는 여러가지 자세가 있는데, ‘개발은 무조건 실전이지! 이론이나 개념은 중요하지 않다.’라는 생각을 가진 사람이라면 조금 읽기 괴로운 책일 수 있다. 코드가 그다지 많이 등장하지 않는 책이다. 반면 추상적인 개념을 다루는걸 좋아하고 이론적인 내용을 어느정도 견딜 수 있는 사람이라면 재밌게 읽어볼만한 책인 것 같다.

추천 독자

  • 소프트웨어 아키텍처에 관심이 있거나 기초 지식이 있는 사람
  • 소프트웨어 설계를 수학적으로 분석하는 기법이 궁금한 사람

사전에 읽어보면 좋은 책

초반에 언급했던 소프트웨어 아키텍처 관련 책이다.

  • 소프트웨어 아키텍처 101
    • 먼저 소프트웨어 아키텍처 101을 조금이라도 읽어본 뒤 이 책을 읽는걸 추천한다.
    • 이 책에서 진화적 아키텍처에 대한 언급이 나올뿐만 아니라 시각 자료 몇개가 겹치기도 한다.
  • 소프트웨어 아키텍처 The Hard Parts
    • 이 책은 아직 읽어보진 못했지만 목차를 봤을 때 아키텍처, 피트니스 함수, 커플링 등의 내용이 겹치기 때문에 같이 읽어보면 시너지가 날만한 책인 것 같다.

———

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

profile
코드도 적고 그림도 그리고 글도 씁니다. 넓고 얕은 경험을 쌓고 있습니다.

0개의 댓글