|
좋은 개발이란 무엇일까? 코딩가이드부터 인프라 구축까지 다양한 범위의 다양한 대답들이 나올 수 있다. 개발의 궁극적인 목적은 ‘원하는 것을 제대로 구현하는 것’이라고 할 수 있다. 여기서 말한 ‘제대로'에 대한 많은 방법들이 있다. 이 책 ‘적정 소프트웨어 아키텍처'는 그 방법들 중 ‘리스크 주도 접근법'에 대해 설명하고 있다.
소프트웨어 아키텍처에 대한 책들은 많다. 다양한 이론과 깊이를 보여주고 있지만 막상 실무에 접목하려면 막막해질 때가 있다. 이 책이 가장 큰 특징은 철저히 실무 위주라는 것이다. 사용되지 않는 아키텍처는 의미가 없다. 이제 개발을 시작하는 분들에게는 체계적으로 아키텍처를 배울 수 있고, 오랜 경험을 바탕으로 감각적으로 사용하던 분들은 깊은 이론을 배울 수 있다.
처음 개발을 시작할 때 아키텍처부터 고민하고 공부하는 사람은 별로 없다. 바로 키보드를 두드리면서 코딩을 시작한다. 함수 하나, 문법 하나를 알아갈 때마다 실력을 늘어난 듯 하다. 하지만 어느 정도의 시간이 흐르면 복사, 붙여넣기를 하고 있는 자신에 놀라고, 뭔가 부족한 느낌을 받을 것이다. 아키텍처의 필요성을 느끼는 순간이다.
이 책은 소프트웨어 아키텍쳐 중 ‘리스크 주도 모델'을 설명하고 있다.
간단히 요약하면 애자일처럼 ‘리스크' 위주로 아키텍처의 적용 범위와 방법을 접목시키기를 반복한다. 처음부터 제대로 설계를 하고 진행하면 최선이겠지만, 비즈니스 환경의 변화로 인해 그러지 못하는 것이 현실이다. 그렇기에 ‘현재 상황'에 맞는 ‘적절한 아키텍쳐'를 만들고, 적용하는 것이 바람직하다.
이 책을 통해 ‘리스크 주도 모델'에 필요한 아키텍처의 전반적인 기술 스택을 모두 배울 수 있다. 모델(도메인, 디자인, 코드)은 물론이고, 캡술화와 파티셔닝까지 알려주고 있다.
개발을 시작한 분들에게는 어렵게 느껴질 수도 있는 내용이지만, 개발자라면 ‘꼭' 알아야 할 내용이다. 코딩만 할지라도 아키텍쳐에 대한 이해 여부에 따라 결과가 달라질 수 있다. 아키텍처를 이해한 이후와 이전의 차이를 직접 느껴보자.
[한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.] |
|
개발자에서 아키텍트로 진화해 나아가길 바라는 나에게는 새로운 아키텍처 관련 도서가 출판된다는 소식은 매우 반가운 소식이다. 아키텍처와 관련된 도서는 대부분 구매하여 읽었고, 학습하였다. 이번 도서도 구매 준비 중이였는데, 마침 한빛리더스의 리뷰 활동 지원 도서로 리스트에 있어서 아무런 고민 없이 선택하였다.
양장본의 힘처음 택배를 뜯었을 때 양장본의 그 딱딱한 촉감이 내 손바닥에 느껴졌을 때의 기분이 잊혀지질 않는다. 출판사에서 정말 준비를 많이 했구나. 보통 개발 서적은 양장본으로 출간하지 않는다. 소설과 같은 베스트셀러 도서들도 재출간, 이벤트 기념으로 양장본을 일부만 출간한다. 그 만큼 제작에 비용이 많이 들고 많은 사람들이 찾을 거라는 자신감이 없다면 하기 힘든 결정이다. 그런데 처음 출간되는 도서의 표지를 양장본으로 했다는 것 자체가, 출판사와 번역가, 출판 담당자 모두가 자신있다는 신념이 있다는 것이 아닐까 생각된다. 아무튼 나는 이 딱딱한 질감과 책이 주는 느낌이 너무나도 좋다. 일반 표지에서는 너무나 합격! (사실 표지 이미지도 너무 마음에 든다.)
리스크 주도??
![]()
개발을 하다보면 도메인 주도 개발(Domain Driven Development), 테스트 주도 개발(Test Driven Development) 등 다양한 주도 개발 방법론을 접할 수 있다. 하지만 리스크 주도 접근법이란 것 을 처음 들어본 나는 어떤 방식의 설계 기법일 지 너무나 궁금하였다. 처음 책을 읽기 전에 생각한 내용은 프로젝트의 리스크가 발생했을 때 마다 설계를 변경하는 것인가? 이러한 방법은 옳지 않다는 것을 많은 이 들이 알텐데, 리스크란 개발자들의 손안에서 관리할 수 있는 장난감과 같은 것이 아닌데 이러한 위험성을 어떻게 관리하려는 것인가? 등 많은 생각들이 스쳐지나갔다. 솔직히 말해서 조금 의외였다. 내가 알고있는 아키텍처 설계 기법과는 다르게 직면한 리스크에 따라 적정한 아키텍처 설계를 수행하는 방법을 가이드 한다는 게 이해가 쉽지 않았다. 책을 읽다보니 내가 생각한 리스크 관리와는 조금 달랐다. 처음 관리할 수 있고 예방 가능한 리스크에 대해서는 설계에 녹여 대비하도록 하고, 후에 애자일과 결합하여 발생하는 리스크에 대해서는 설계 안에 조금씩 적용시켜 나아가는 것이다. 솔직히 예상치 못한 리스크 발생을 대처할 수 있는 커다란 팁이 있을 것 같은 제목이라 궁금했는데, 그러한 내용을 이야기 하고자하는 것은 아니였다. 우리 팀에서 진행하는 설계, 개발방법과 유사한 방법이였다.
다이어그램, 이미지 등을 통한 상세한 설명
![]()
처음 아키텍쳐 공부를 하는 개발자들은 일단 다이어그램부터 익숙하지 않고, 세상에 이렇게 많은 다이어그램이 있었나 싶을 정도로 혼란스러워 한다. 각 다이어그램은 어떤 용도로 어떤 경우에 사용할 수 있는 것이고 어떤 정보를 포함할 수 있는가 등 매우 어려워 했다. (내 주변 지인들의 경험이다.) 이런 다이어그램을 표와 그림을 통해 상세하게 설명하고 넘어간다. 솔직히 한번 이해한다고 머리속에 영원히 기억되는 것은 아니라는 것을 모두가 안다. 하지만 처음 이해를 제대로 해둔다면 추후에 다시 찾아보았을 떄 이해도와 적용의 시간이 매우 빨라지는 것 또한 모두가 알 것 이다. 추천하는 것은 각 다이어그램의 특성과 사용 용도, 작성법 등은 꼭 한번은 제대로 정리하고 넘어갔으면 한다.
빠질 수 없는 아키텍처 설명당연히 빠질 수 없는 내용이 아키텍처 설명이다. 매우 단순한 파이프 앤 필터 아키텍처부터 맵 리듀스 등 다양한 아키텍처를 설명한다. 이 도서의 아키텍처만으로 모든 아키텍처를 다 공부했다고 할 순 없다. 물론 이 책의 포함된 아키텍처도 다양하지만 매우 소수에 불과하다. 지금도 새로운 기술과 그 기술들이 접목되어 더욱 효율적이고 각 환경에 알맞은 아키텍처가 나타나고 있다. 특히 이 도서에 포함된 아키텍처로는 클라우드 환경의 복잡한 아키텍처를 이해하고 접목하는 것은 쉽지 않을 것이다. 하지만 그럼에도 기초적인 이러한 아키텍처들은 꼭 익혀둬야 한다. 하나의 아키텍처안에 다양한 아키텍처가 녹아들어 있다. 그런 큰 구조의 그림을 파악하고 이해하기 위해서는 단일 아키텍처로는 지금 사용하지 않지만 이 책에서 설명하고 있는 아키텍처에 대한 이해를 소홀히 하지 않았으면 좋겠다.
가장 추천하는 내용흥미로우면서도 친근한 리스크 주도 모델을 이용하여 애자일 방법론에 접목하여 어떻게 리스크를 관리하고 설계를 발전시켜 나가는지 설명하는 내용들은 잘 정리해 놓고 실제로 팀에 적용해 보면 어떨까 하는 생각을 많이 하게 되었다. 실제로 유사한 부분도 많지만 일부 차이나는 갭을 메우고 조금 더 좋은 방향으로 프로젝트 진행 방향을 유도할 수 있지 않을까 하는 생각도 하게 되게 만드는 책이였다. 이 책이 너무 어려운 사람들은 한빛미디어에서 출간한 '개발자에서 아키텍트로' 라는 도서를 먼저 읽어보는 것도 추천한다. 처음 개발자에서 아키텍트를 꿈꾸는 사람들에게 어떤게 아키텍트인지 하나의 프로젝트를 진행해 나가면서 이해를 시켜 줄 것이다.
조금.. 아쉬운 점?이 책에서 조금 아쉬운 점이라면 아키텍처 패턴에 관한 내용이다. 물론 아키텍트는 요구사항 분석 부터 도출, 설계, 최적 설계 등 다양한 단계를 고려해야 한다. 아키텍트는 아키텍처 패턴을 이용해 설계만 하는 사람이 아니라는 것은 안다. 하지만 그럼에도 불구하고 너무 최신 트렌드를 조금 반영하지 못한 고전적인 패턴들의 향연은 아쉬움이 남는다. 물론 고전적인 패턴이 지금까지 사용되는 이유는 있다. 하지만 앞에서도 말했듯이, 요즘 앱, 웹, 클라우드 등의 시스템에서 적용되는 아키텍트 패턴들과는 조금 거리가 있는 것도 사실이긴 하다. 다양한 패턴에 대해 조금 더 다뤘으면 좋지 않았을까 하는 아쉬움이 조금은 남는다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. |
![]()
이번에 한빛 미디어에서 "적정 소프트웨어 아키텍쳐"라는 책을 제공 받아 서평을 쓰게 되었다. 책의 서문에도 적혀있듯, 리스키한 환경의 소프트웨어 엔지니어들의 소프트웨어 아키텍쳐 설계에 대한 내용인데.. 결론부터 이야기해보자면 책이 꽤 어렵다. 어쩌면 내가 잘 몰라서 & 관심이 상대적으로 적은 분야여서 그럴 수도 있다.
그렇지만 책의 구성과 짜임새는 잘 짜여져 있어서 읽어나가는 데에는 큰 어려움이 없었다. 책의 내용은 어렵다고 적었지만, 현업과는 밀접한 관계가 있는 내용들이다. 현재 회사에서 스크래치부터 소프트웨어를 개발하고 있는데, 그 회의에서 나오던 내용들의 흐름을 이해하는 데에 책의 내용이 큰 도움이 되었다. 아래 첨부된 사진대로 소프트웨어 아키텍쳐에 관심있는 학부 고학년이나 실제 소프트웨어 아키텍쳐를 다루는 시니어급 개발자들이 보면 좋을 것 같다. 쥬니어들의 경우는 업무의 흐름을 이해하는데에 큰 도움이 될 것 같다.
![]() ![]() |
|
책이 양장본으로 나왔다. 매우 고급스럽게 나와서 보관용으로도 훌륭할 뜻 하다. 많은 아키텍처 책들이 있고 아키텍처에 관련된 책들은 모두 좋은 듯하다. 이 책또한 아키텍처에 관련된 책이기 때문에 좋은 듯 하다. 예전부터 아키텍처에 관심이 많았지만 프로젝트에서 아키텍트 직함을 가져 본 적은 없다. 그래서 아키텍트에 관련해서는 되고 싶다는 생각을 많이 가지고는 했다. 그런 아쉬움을 어느정도 해소해 줄 수 있는 책이라고 생각된다. 여러가지의 예시(다이어그램, 소스 코드, 쉘 스크립트 등)를 통해 적정한 내용을 찾아서 활용하기 좋을 뜻 하다. 아키텍트가 되기 위해서 이 책에 나온 내용을 프로젝트에서 조금씩이라도 적용해 보는 것이 중요할 뜻 하다. 기존에 있는 프로젝에서 책에 나온 대로 모델을 만들어서 분석을 하고, 그 개선점을 찾는다면 스스로가 좀 더 발전하는 모습을 찾을 수 있을 것이다. 아키텍트를 꿈꾸는 사람들은 이 책을 통해서 프로젝트에 적용하다 보면 어느세 아키텍트에 한 걸음 좀 더 다가갈 수 있을 것이다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다
예전에 소프트웨어 아키텍처 관련 책을 본 적이 있었다. 책 두께에 놀라고 읽다보면 어느것 하나 불필요한것이 없어보이고, 중요하지 않아 보이는게 없어보여 모든것을 다 만들어야 할 거 같았었다. 그래서인지 이 책을 볼 때도 두려움과 부담감이 크게 느껴졌었다.
'아키텍처' 라는 용어는 건축에서 차용됐다. 아키텍처를 만드는 사람을 아키텍트라고 한다. SW를 만들때는 바로 코딩에 들어가는게 아니라 충분한 분석과 설계를 하여 UML이나 문서등을 이용한 수많은 산출물들을 작성한다. 견고한 SW, 목적에 맞는 SW를 만들기 위해서다. 충분한 시간을 분석설계에 사용한다면 좋은 SW가 나올 수 있다.
이 책은 크게 2파트로 구성되어있다. 파트1은 저자의 의도가 담긴 리스크 주도 소프트웨어 아키텍처 설계에 대한 내용이 그리고 파트 2에는 일반적인 아키텍처 설명이 1:2정도의 비중으로 들어가있다.
리스크가 적은 프로젝트는 아키텍쳐계획을 적게하거나 아니면 아예 하지 않을 수 있다. 하지만 리스크가 큰 프로젝트는 반드시 아키텍쳐 작업이 필요하다 닭 잡는데 소잡는 칼을 쓸 필요없이 리스크를 해결할 정도의 적절한(Just Enough) 아키텍처를 선택할 수 있으면 된다. 아키텍처 무관설계, 아키텍처 집중 설계, 아키텍처 상향설계등으로 나뉜다.
리스크 주도 모델은 - 내 리스크가 무엇인가? 의 리스크식별 - 이를 줄이는 가장 좋은 기법은 무엇인가? 의 일련의 기법적용 - 리스트가 완화되었고 코딩을 시작할 수 있는가? 의 리스크 감소평가 로 이루어진다.
이런 리스크 주도 모델은 모든 SW개발 프로세스에서 사용할 수 있습니다.(ex: 애자일에서 리스크를 기능 및 리스크 백로그처럼 백로그로 관리하여 반복적으로 처리) 리스크를 줄일 기법을 선택할 때는 노력(시간,비용등 )이 필요한 법인데 이는 실패 리스크에 비례해야 한다. 감수해야할 리스크가 적다면 설계에도 굳이 시간을 할애할 필요는 없다.
저자가 교재로 쓰이길 원했을 정도이니 용어 설명이나 다이어그램 설명, 참고문헌 정리등이 꽤 잘 정리되어 있었음 단지 이론적인 내용 뿐 아니라 경험에서 우러나온 장점 및 단점 고려해야할 점등을 옆에서 이야기해주는 느낌이었음 전자책으로 읽었는데 어디서나 읽을 수 있다는 점은 장점이었고, 모바일에서 페이지이동이나 검색이 안되는 점은 불편했음
|
|
구상한 모든 것을 단번에 구현하던 수준이었던 소프트웨어 개발은 다중 스레드/프로세스, RPC, 프레임워크나 컴포넌트를 이용하는 것이 일상이 되었고, 갈수록 덩치가 커지고 복잡해지는 소프트웨어를 개발을 성공하기 위해 다양한 설계, 개발 방법 이론이 주목받게 되었습니다. 이론 제안, 정립과 병행하여 이를 실천할 수 있는 다양한 구현체, 도구의 개발 필요성도 생겼습니다. 좋은 소프트웨어 개발이라는 목적 달성을 위해 만들어진 소프트웨어 설계 원칙, 아키텍처/디자인 패턴, 언어별 각종 이디엄, UML, 그밖에 여러 소프트웨어 설계 도구들이 이러한 이론과 구현체입니다. 하지만, 소프트웨어 설계 이론은 실제 개발 방법으로 부드럽게 이어지는데 크고 작은 저항이 있습니다. 소프트웨어 개발에 있어서 설계가 필수불가결하다는 건 알겠는데, 설계하는 자는 기능/성능을 모두 명세하여 펼치고 훗날 확장성과 유지 보수까지 고려한 모든 것을 문서화 하고 싶고, 구현하는 자는 애자일, 동적 언어, 기능 위임 등 기술적 대안을 활용하여 충분히 예측 가능하고 상식적인 부분의 설계는 생략하고 싶어 합니다. 빠른 변화와 유연한 대응을 요구하는 현대 IT 환경은 이에 대한 대립을 더욱 첨예하게 만듭니다. 이 책의 주제는 리스크를 고려한 설계로 실용적인 결과물을 도출하라는 것입니다. 적정 수준의 설계 필요성과 가치에 대해 설명하고 고려할 것과 생략할 것을 결정하는 방법과 통찰력을 제공합니다. 평가된 리스크가 작다면 꼼꼼한 디자인으로 엄격한 설계를 하여 실패 확률을 줄이고, 그렇지 않다면 느슨함을 통해 효율성을 높이는 겁니다. 리스크를 고려하여 소프트웨어 개발의 설계를 추진하고(A Risk-Driven Approach) 이를 통해 모두가 공감하고 성공적이며 실용적인 소프트웨어 설계(Just Enough Software Architecture)를 얻을 수 있다는 게 이 책의 제목입니다. 다분히 이론적이고 선악식 접근으로, 단순 맹목적이 아닌 리스크의 크고 작음에 따라 적정한 수준의 설계 분량을 설정하고 시간을 투자한다는, 철저히 필요에 의한 실용적인 방법으로 소프트웨어 설계를 설명합니다. 이 책의 장점을 꼽자면 아래와 같습니다. 1. 2. 3. 4. 5. 소프트웨어 아키텍처를 설명하기에 분량이 얇아 기대보다 많은 것을 다루지는 않을 수 있습니다. 개발 도서처럼 결과가 가시적이거나 실습을 통해 확인하기는 어려운 부분이 있는 만큼 자칫 이론 중심적이고 서술이 장황하게 느껴질 수도 있습니다. 또한 오늘날 위협으로부터의 보안이 기본적으로 반영된 설계를 해야 할 때는 전혀 맞지 않는 방법일 수도 있습니다. 하지만 리스크에 집중하고 모델링 관련 통찰력을 느끼는 데는 전혀 문제되지 않습니다. 이 도서에서 습득한 내용을 의식적으로 개발과정에서 실천하고 있다면 한 단계 높은 수준으로 올라선 개발자가 되었다고 자부심을 가져도 될 것 같습니다.
|
|
저자 조지 페어뱅크스의 "Just Enough Software Architecture: A Risk-Driven Approach"은 성공적으로 소프트웨어를 만드는 것이 "가능한 실패를 예상하고 실패할 수 있는 설계를 피하는 것을 의미"한다고 이야기 한다. 그렇기 때문에 실패 리스크를 찾고 이것에 매핑하는 소프트웨어 설계 테크닉을 적용하는 것이라고 한다.
책에서 말하는 리스크 주도 모델의 경우는 다음과 같은 단계를 거치면서 반복하는 과정이라고 말한다.
소프트웨어 개발은 설계만으로 끝나는 것이 아니고 구현을 해야 한다. 그러므로 다음과 같은 예의 논리를 바탕으로 진행하는 것을 제안한다.
"A, B 그리고 C를 리스크로 식별하고, B는 매우 중요하다. 이를 위한 테크닉 X와 Y를 통해 B의 리스크를 줄일 수 있다고 판단했다. 결과물인 설계를 평가했을 때, B의 리스크가 충분히 완화되어 구현을 계속 했다."
아키텍처 도서와 방법론 관련된 도서가 요즘들어 굉장히 많이 나오고 있는데, 해당도서도 마찬가지다.
평소 오랠리의 도서시리즈를 좋아해서 '아키텍처 101'을 먼저 읽었고 해당 '리스크 주도학습법'을 읽어보면서 '실무 적용'에 대해 여러가지 생각을 읽어보고 고민을 했었는데, 해당 도서를 읽으면서 좋았던 부분은 '리스크 주도 접근(A Risk Driven Approach)'과 관련해 실무관련된 내용을 실습 위주로 다루고 있다는 부분이였다.
리스크 주도 설계 접근 방식의 주요 내용은 설계에 많은 비용이 들기 때문에 리스크를 찾아 내고 이에 적절한 테크닉을 필요한 만큼 반복적으로 적용한다는 것이다. 이는 현재 소프트웨어 개발에서 적용되고 있는 양극단의 소프트웨어 개발 방법에서 모두 적용할 수 있다고 책에서는 주장하고 있다.
특히, 애자일 혹은 반복적 개발에서 알 수 있는 주요한 내용 중 하나가 설계가 항상 개발 프로세스의 앞부분에서만 진행되어야 하는 것은 아니라는 점이다. 후반부에 설계를 하게 되면설계를 변경하기 어려운 부분도 있을 수 있으나 구현하려고 하는 소프트웨어를 초기에는 잘 알지 못하는 문제점도 있다는 것을 책에서는 지적하고 있다. 소프트웨어 개발이 지식을 얻어 가는 과정이라면, 이를 이를 소프트웨어 설계 및 아키텍처링에 적용하는 방법으로서 리스크 주도 접근 방식의 장점과 적용하는 방법에 대해서도 흥미로운 제안을 하고있다.
개인적으로는 아키텍처 101일 먼저 읽고 해당도서를 읽어서 더욱 와닿았던 부분이 많았다. 두가지 모두 읽어보기를 추천드립니다!
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. |
|
적정 소프트웨어 아키텍처 : 리스크 주도 접근법
본 서평은 한빛미디어에서 도서를 제공받아 작성되었습니다.
"나는 리뷰어다" 애서 이미 다룬 바 있는 소프트웨어 아키텍처에 대한 보충적 성격이 짙은 교재이다. 이 책은 소프트웨어 개발자를 위한 실용 가이드로서 소프트웨어 아키텍처의 리스크는 무엇인지, 아키텍처 설계 원칙은 어떻게 적용하고 해결하는지, 유관 부서의 실무자를 어떻게 도울 수 있는지 등의 주제를 개발자가 흔히 겪는 경험을 기반으로 쓴 책이다.
개발하면서 너무 많은 문서를 작성했거나, 코딩을 시작하기 전에 너무 적게 고민한 적도 있을 것이다. 어느 쪽이든 소프트웨어 개발이 왜 잘못되는지 알 수 있고, 이 책에서 제공하는 해결책이 많은 도움이 될 것이다. |
|
적정 소프트웨어 아키텍처 JUST ENOUGH SOFTWARE ARCHITECTURE 리스크 주도 접근법 A Risk Driven Approach
조지 페어뱅크스 지음 / 이승범 옮김 / 한빛미디어
이 책은 다른 소프트웨어 아키텍처 책과 다르다. 차이점은? 1. 리스크 주도 아키텍처링을 가르친다. 리스크가 적을 때는 세심한 설계가 필요하지 않지만, 리스크가 많아 성공이 불확실할 때는 엉성한 설계가 용납되지 않는다. 유명 애자일 소프트웨어 지지자들은 일부 선행 설계가 도움이 될 수 있다고 제안한다. 이 책은 적정하게 아키텍처 설계를 수행하는 방법론을 말한다. 직면한 리스크에 따라 아키텍처와 설계에 들이는 노력을 조정하는 방법에 관해 조언하여 ‘프리사이즈() 프로세스 구렁텅이’로 가능 상황을 방지한다. 복잡한 기법을 간략화하여 빠르게 처리하는 방법부터 상세하게 적용하는 방법까지 상황에 따라 조절하여 적용할 수 있다. 2. 참여하는 아키텍처를 지향한다. 여러분이 소프트웨어 아키텍트이거나 조직에 소프트웨어 아키텍트가 있을 수 있다. 저자가 만난 아키텍트들은 모든 개발자가 아키텍처를 이해하기를 바란다 아키텍트는 개발자가 ‘아키텍처와 관련된 제약 조건이 존재하는 이유’와 ‘작아 보이는 변경이 시스템 속성에 큰 영향을 미칠 수 있다는 점’을 이해하지 못한다고 불평한다. 이 책은 아키텍트뿐 아니라 모든 소프트웨어 개발자와 관련된 아키텍처를 만드는 데 노력한다.
3. 선언적 지식(declarative knowledge)을 키운다 ‘테니스 공을 칠 수 있다’와 ‘테니스 공을 칠 수 있는 이유를 설명할 수 있다’는 다르다. 심리학자가 말하는 절차적 지식()과 선언적 지식() 사이에도 이와 같은 차이가 있다. 여러분이 시스템 설계 및 구축 전문가라면 이 책의 많은 기법을 이미 사용해봤을. 것이다. 하지만 여기서는 여러분이 무엇을 사용했는지 더 잘 알 수 있도록 용어와 개념을 사용해 설명한다. 이러한 선언적 지식은 다른 개발자를 가르치는 데 도움이 된다.
4. 엔지니어링을 강조한다 소프트웨어 시스템을 설계하고 구축하는 사람들은 일정, 자원 할당(), 이해관계자 요구를 처리하는 등 많은 일을 해야 한다. 소프트웨어 아키텍처에 관한 많은 책에서 이미 소프트웨어 개발 프로세스와 조직 구조를 다뤘다. 하지만 이 책은 소프트웨어 개발의 기술적 부분에 초점을 맞추고, 개발자가 시스템을 작동하게 하려고 수행하는 작업인 엔지니어링을 다룬다. 원칙을 기반으로 설계의 절충안을 만들 수 있도록 모델을 구축하고 아키텍처를 분석하는 방법을 보여준다. 소프트웨어 설계자가 중대형 문제를 해결하는 데 사용하는 기법을 설명하고, 전문 기법을 어디서 더 자세히 배울 수 있는지 알려준다. 결과적으로 이 책 전체에서 소프트웨어 엔지니어를 프로그래머와 아키텍트로 구별하지 않고 모두 개발자라고 부른다.
5. 실용적 조언을 제공한다. 이 책은 아키텍처의 실용적인 활용 방법을 제공한다. 소프트에어 아키텍처는 일종의 소프트웨어 설계다. 하지만 설계 설정은 아키텍처에 영향을 미치며 그 반대도 마찬가지다. 최고의 개발자는 장애물을 자세히 살펴보고 이해한 후 이 내용을 바탕으로 해당 장애물의 특성을 아키텍처에 연결한다. 이 책은 상위 아키텍처에서 하위 자료 구조 설계에 이르기까지 추상화를 위한 다양한 수준의 모델을 활용하는 접근 방법을 알려준다.
대상독자 이 책의 주요 독자는 실무 소프트웨어 개발자다.
객체지향 소프트웨어 개발, UML, 유스 케이스, 디자인 패턴과 같은 기본적인 소프트웨어 개발 아이디어를 이미 알고 있어야 한다. 실제 소프트웨어 개발 경험이 있다면 더 도움이 될 것이다. 이 책에서 이야기하는 기본적인 내용은 대부분 개발자가 흔히 겪는 경험을 기반으로 하기 때문이다. 개발하면서 너무 많은 문서를 작성했거나, 코딩을 시작하기 전에 너무 적게 고민한 적이 있을 것이다. 어느 쪽이든 소프트웨어 개발이 왜 잘못되는지 알 수 있고, 이 책에서 제공하는 해결책이 많은 도움이 될 것이다. 이 책은 학부 고학년이나 대학원 수준의 교과서로도 적합하다.
이 책은 소프트웨어 아키텍처 분야에 몇 가지 공헌을 한다. 프로젝트에서 수행할 아키텍처와 설계 작업의 양을 결정하는 방법인 소프트웨어 아키텍처의 리스크 주도 모델을 소개한다. 또한 아키텍처에 대한 세 가지 접근 방식을 설명한다. 바로 아키텍처 무관 설계, 아키텍처 집중 설계, 아키텍처 상향 설계다. 추가로 소프트웨어 아키텍처에 대한 두 가지 관점인 기능적 관점과 속성 관점을 통합하여 하나의 개념 모델을 생성한다. 그리고 소스 코드를 읽음으로써 아키텍처를 분명하게 만드는, 구조적으로 명확한 코딩 스타일에 관한 아이디어를 소개한다.
소프트웨어 개발 PM은 읽고 프로젝트 진행에 적용할 적정한 방법을 찾을 수 있고, 소프트웨어 개발자들은 자신이 개발하는 소프트웨어가 잘 작동될 수 있도록 기능적 관점과 속성 관점을 통합하여 하나의 관점으로 바라보는 훈련이 필요하다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
#적정 #소프트웨어 #아키텍처 #리스크 #주도 #접근법 #JUST #ENOUGH #SOFTWARE #ARCHITECTURE #A_Risk_Driven #Approach #조지_페어뱅크스 #이승범 #한빛미디어
|
|
2022년 5월에 출간된 따끈따끈한 책 <적정 소프트웨어 아키텍처>를 소개합니다. 이 책의 부제는 '리스트 주도 접근법'입니다. 이 책의 저자는 구글 소프트웨어 엔지니어인 조지 페어뱅크스(George H. Fairbanks)님이며, 역자는 이승범 님입니다. 이승범 님의 번역은 처음 본 것 같은데, 용어마다 원문의 내용을 첨부하고, 낯선 용어들에 대한 역자 주가 충분히 남겨져 있어 읽는 데 불편함을 느끼지 못했습니다. 전반적인 번역 품질도 좋았습니다. 저자님과 역자님께 감사하다는 메시지를 전하고 싶습니다. 이 책의 원서는 아마존 리뷰에서 우수한 점수(4.4점, 5점 만점)를 받았습니다. 원서는 약 10년 전(2010년 출간됨)에 출간되었지만, 필자에게 이 책은 매력적인 책이었습니다. 이 책은 소프트웨어를 설계하고 개발할 때 지니고 있어야 할 기본적인 내용들을 잘 정리하고 있으며, 소프트웨어 아키텍처를 설계할 때 리스크를 분석하여 적정한 수준으로 설계하는 방법을 안내하고 있습니다. <적정 소프트웨어 아키텍처>는 약 470페이지로 구성되어 있어 휴대하면서 읽기에 크게 부담스럽지 않습니다. 전자책으로도 출간되어 있으므로, 전자책 뷰어가 있으시다면 전자책으로 만나보는 것도 좋을 것 같습니다. 하지만 이 책은 일반 책으로 읽는 것이 좋을 것 같습니다. 양장본으로 구성된 책을 보니 소장하고 싶은 욕구가 생겼습니다. 한빛미디어 평가단에 참가하여 작성한 글이며, 한빛미디어에서 제공해준 책을 읽고 작성했음을 밝힙니다. 이 책의 매력은?<적정 소프트웨어 아키텍처>는 2부 16장으로 구성되어 있습니다. 1부는 리스크 주도 소프트웨어 아키텍처를 주제의 내용을 다루고 있으며, 3장에서 이 책에서 가장 중요한 요소인 리스크 주도 모델을 소개하고 있습니다. 3장에서 이론적인 부분을 이야기하고 있다면, 4장에서는 실 예제를 들어 독자들에게 리스크 주도 개발의 이해도를 높여줍니다. 필자는 이 책을 통해 리스크 주도 모델에 대해 이해할 수 있었고, 공감할 수 있는 부분이 많았습니다. 실제로 리스크 주도 모델을 활용하려면 많은 연습과 훈련이 필요하겠지만, 내재화한다면 더 커다란 실수를 예방할 수 있을 것 같습니다. 또한, 다양한 종류의 컴퓨터 사이언스 지식도 부가적으로 정리하고 학습할 수 있었던 매력 만점인 책이었습니다. 이승범 님께서 이 책의 제목을 잘 정한 것 같습니다. 역자분께서 번역을 할 때 고민을 많이한 후, <적정 소프트웨 아키텍처>로 정했다고 했는데, 필자는 이 책의 주요 내용을 잘 함의하고 있다고 생각합니다. 마치면서<적정 소프트웨어 아키텍처>는 최고, 최선의 아키텍처가 아닌, 프로젝트 상황에 알맞은 '적정한' 아키텍처를 제시하는 방법을 소개하고, 이를 위해 리스크를 줄이기 위한 '리스크 주도 모델'을 소개하고, 이를 적용하는 다양한 아키텍처 스타일을 소개하고 있습니다. 이 책의 소개 페이지에 다음 이미지가 있었습니다.
이 이미지를 보고 이 책에서 다루는 내용들이 위 대상자를 모두 포괄할 수 있는지 의문이 들었었습니다. 하지만 이 책을 읽은 후, 의문이 자연스럽게 해결될 수 있었습니다. 또한, 저자가 이 책의 대상 독자 절에서 '이 책은 학부 고학년이나 대학원 수준의 교과서로도 적합하다.'라고 이야기를 한 부분이 있었습니다. 필자도 이 책을 읽으며, 저자의 의견에 동의하여 조만간 세미나를 진행해보려고 합니다. "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |