- 지은이: 닐 포드, 레베카 파슨스, 패트릭 쿠아, 프라모드 사달게이
- 옮긴이: 정병열
- 펴낸 곳: 한빛미디어(주)
- 발행일: 2023.08.31
- 키워드: 설계, 아키텍처, 소프트웨어, 구조
- 자세히 보기 (한빛미디어로 이동): https://m.hanbit.co.kr/store/books/book_view.html?p_code=B6912971816
추상적인 개념을 구체화하고 실제 사례에 적용까지 해보는 책.
책은 총 세 부분으로 나뉜다.
이라고 생각할 수도 있다. 실제로 이 책에 나오는 대부분의 내용은 다른 책이나 강의에서 찾아볼 수 없는 새로운 것들이다.
옆자리 혹은 옆 팀 동료가 소프트웨어 개발에 고나련된 결정을 내리고 있지만, 아키텍트가 누구냐고 묻는다면 선뜻 그를 가리키지 못한다. 심지어 지목당한 본인조차도 자신이 아키텍트가 맞는지 궁금해하곤 한다. - 옮긴이의 말 中
2017년만 해도 진화적 소프트웨어 아키텍처는 다소 급진적인 개념이었다. (…) 레베카는 아키텍처의 진화라는 개념이 결국 전문성을 가장한 무책임에 지나지 않는다는 비난을 듣기도 했다. 아키텍처가 불변의 존재라는 인식은 그 정도로 견고했다. - 이 책에 대하여 中
앞서 한번 언급했던 “소프트웨어 아키텍처 101”이라는 책의 서론에는 이런 구절도 나온다.
첫째, 소프트웨어 아키텍트라는 직업 자체에 대한 명확한 정의가 아직도 없습니다. - 소프트웨어 아키텍처 101 서론
그러니까 소프트웨어 아키텍처, 특히 진화하는 아키텍처에 대한 개념 자체가 그다지 오래된 것이 아니고 그렇기 때문에 아직 명확히 정의되지 않은 부분이 많을 수 있다.
육각형 아키텍처나 마이크로소프트 아키텍처 등 평소 여러가지 아키텍처를 접해보았거나 프로그램 구조 설계에 관심이 많다면 책에서 다루는 내용이 새롭고도 재밌게 느껴지겠지만, 그렇지 않다면 조금 낯설게 느껴질 수도 있다.
계속해서 변화하는 요구사항을 어떻게하면 깔끔하고 효율적으로 처리할 수 있을지에 대한 책이다보니, 확실히 큰 규모의 소프트웨어에 적용할만한 내용이 대부분이다.
필자는 소프트웨어 아키텍처에 대한 지식이 많지 않은 편이다. 하지만 구체적이고 이해하기 쉬운 예시 덕분에 이 책의 내용을 이해하는데 무리가 없었다.
우리는 모든 사례 연구의 ‘주인공’으로 가상 기업인 PenultimateWidgets 를 내세웠다. (…) 이 책에 등장하는 모든 PenultimateWidgets 의 사례는 실제 프로젝트 사례를 바탕으로 각색되었다. - 이 책에 대하여 中
” 결국 트위터는 최초의 아키텍처를 재구축하고 더욱 강력한 백엔드로 교체해야만 했다.“
저자의 일부는 현역 컨설턴트로 활동하고 있기에 보다 생생한 사례가 만들어질 수 있었던 것 같다. 가상 사례 뿐만아니라 트위터(이제는 더이상 트위터가 아닌…), 깃허브 등 우리가 익숙한 실제 기업이나 오픈소스 프로젝트도 등장한다.
“깃허브는 하루 평균 60회 배포라는 공격적인 엔지니어링 관행으로 잘 알려져 있다.”
구성적으로 깔끔하고 꽤 친절한 책이다. 저자는 크게 3개로 나뉘는 각 파트와, 한 파트 안의 각 장을 시작할 때마다 지금까지 무엇을 다뤘으며 앞으로 어떤 내용을 살펴볼 것인지 정리한다. 새로운 단어나 중요한 내용이 나오면 색깔로 강조했으며, 별도 설명이 필요한 부분은 따로 공간을 내어서 구체적으로 설명한다. 그리고 그 설명이 대체적으로 재밌는 내용들이다!
또한 한 장이 끝날 때마다 내용을 요약하는 부분이 있어서 그동안 읽었던 내용을 되짚어보기 편리하게 되어 있다.
아키텍처를 다루기 때문에 추상적인 개념을 자꾸만 얘기할 수밖에 없다. 그럴수록 그림을 그려보는 편인데, 이 책은 필요할 때마다 적절한 도표와 그림이 있어서 이해하기 수월했다. 안 그래도 형체가 없는 소프트웨어의 구조를 다루는 책이기 때문에 이부분이 굉장히 중요하다고 생각했는데 읽으면서 책에 대한 신뢰도가 점점 높아질 정도였다.
새롭게 등장하는 단어에 대한 정의가 대부분 잘 되어있지만 그렇지 않은 것도 몇몇 있었다. 예를 들어 ‘5장 진화하는 아키텍처 토폴로지’ 에서 ‘사이드카 패턴’ 이라는 용어가 나오는데, 이 패턴의 특징과 장점에 대해서는 다루지만 끝내 명확한 정의는 제시하지 않는다.
새로운 개념을 배울 때 단어와 개념의 정의부터 짚고 넘어가는 필자로서는 조금 불편..! 했지만 소프트웨어 아키텍처라는 분야 특성상 불명확한 부분이 많고, 나머지 개념들은 꽤나 명확하게 정의가 되었다는 점을 생각하면서 넘어갔었다.
굳이 따지자면 다양한 실험을 통해 새로운 사실을 발견하는 과학보다는 개념을 정의해놓고 그걸 활용해서 새로운 개념으로 뻗어나가는 수학책에 가까운 책이다.
소프트웨어 개발 분야를 대하는 여러가지 자세가 있는데, ‘개발은 무조건 실전이지! 이론이나 개념은 중요하지 않다.’라는 생각을 가진 사람이라면 조금 읽기 괴로운 책일 수 있다. 코드가 그다지 많이 등장하지 않는 책이다. 반면 추상적인 개념을 다루는걸 좋아하고 이론적인 내용을 어느정도 견딜 수 있는 사람이라면 재밌게 읽어볼만한 책인 것 같다.
초반에 언급했던 소프트웨어 아키텍처 관련 책이다.
———
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.