1. 시작
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
2023년 9월달에 소개할 책은 「진화적 아키텍처」입니다
<표지>
진화적 아키텍처 (Building Evolutionary Architectures)란?
끊임없는 변화에 유연하게 적응하기 위한 ‘가드레일이 내장된' 아키텍처를 의미합니다.
진화적 아키텍처를 구축하면 향후 대대적인 재구축의 필요성은 줄어들고 그에 따른 비용과 노력을 절감할 수 있습니다.
개발자라면 항상 부딪히는(?) 분야가 있습니다.
바로 아키텍처
도자기를 배우기 위해서는 장인 즉 도자기 명장에게 가서 도제식으로 전수가 되기 때문에 가족 단위로 가업을 잇는 것이 많습니다.
대부분의 무형 문화재의 경우 도제식으로 전수를 받습니다.
저는 아키텍처 또한 현재까지 도제식으로 전수를 받을수 밖에 없었지 않나? 생각을 합니다.
물론 천재가 나타나서 수많은 책들과 경험을 얻어서 스스로 깨우치고 자신의 길을 걷는 개발자도 있을수 있습니다.
소프트웨어 장인으로 한걸음 가기위해서 반드시 넘어야 할 산은 바로 아키텍처 설계 입니다.
VUCA시대에 진화적 아키텍처는 이제 고려대상이 아니라 필수 대상이 되고 있습니다.
물론 현재 개발하고 있는 서비스가 몇천의 이용자로 끝날지?
아니면 몇만, 몇십만, 몇백만, 몇천만… 수십억의 이용자로 거듭날지 알수는 없습니다.
하지만 지속가능하고, 확장가능한 소프트웨어 아키텍처 설계가 가능하다면?
하지 않을 이유는 없을 것입니다.
수많은 보통 소프트웨어 개발자들이 소프트웨어 장인의 대열에 오를수 있도록 도와주는 개발 장인이 엮은 책이 나왔습니다.
‘애자일을 넘어선 진화적 소프트웨어 개발의 부상'
‘재구축 비용과 노력 절감의 열쇠 진화적 아키텍처'
‘소프트웨어 개발 생태계에 혁신을 가져올 진화적 아키텍처'
‘소프트웨어 거장 리팩토링의 저자 ‘마틴 파울러' 추천 도서'
‘미래에 대응하는 소프트웨어 개발의 새로운 지평을 열게 될 진화적 아키텍처'
‘전 세계적으로 인정받은 전문가들의 노하우가 담긴 책'
‘끊임없는 변화에 유연하게 적응하기 위한 아키텍처'
이책에 대해서 좀더 알아보도록 하겠습니다.
2. 책의 구성
이 책은 총 3개의 파트와 9개의 세부장으로 구성되어 있습니다.
제 1파트 ‘역학'
-
진화적 아키텍처 구현에 필요한 메커니즘, 엔지니어링 사례를 정의
제 2파트 ‘구조'
-
구조 설계에 필요한 진화, 거버넌스 효과 등의 고려해야할 설계 원칙
제 3파트 ‘영향력'
-
소프트웨어 개발 프로세스에서의 설계 원칙
입니다.
3. 책의 내용
1) 왜 진화적 소프트웨어 아키텍처가 필요하지?
개발자라면 들어보셨을 문제점
시간이 지나면 지날수록
코드를 고치면 고칠수록
점점 더 꼬여가는 코드
바로 그 문제점을 해결하기 위해서 나타난 방법이 있었으니
‘진화적 소프트웨어 아키텍처'입니다.
‘진화적 소프트웨어 아키텍처는 여러 차원에 걸쳐 유도된 변화와 점진적 변화를 지원한다' 가 정의입니다.
아키텍처에 필요한 관점 ‘기술, 데이터, 보안, 운영/시스템' 입니다.
34페이지
2) 피트니스 함수란?
아키텍처 피트니스 함수는 아키텍처 특성에 대해 객관적인 무결성 평가를 내릴 수 있는 모든 메커니즘을 일컫는다.
아래의 다양한 도구를 사용해 피트니스 함수를 정의할 수 있습니다.
42페이지
모니터 : 데브옵스 및 운영 도구(성능, 확장성을 확인하는 수단)
코드 메트릭 : 단위 테스트에 메트릭 등 검증 절차 추가
카오스 엔지니어링 : 인위적 결함 주입과 스트레스 테스트를 하고 이를 기반으로 시스템 복원력을 구축
아키텍처 테스트 프레임워크 : 검증 절차 테스트 자동화 프레임워크
보안스캐닝 : 보안은 필수적으로 아키텍처에 영향을 미침
3) 진화적 아키텍처 토폴로지
소프트웨어 설계 원칙중에 가장 중요하다는 ‘의존성'
의존성 즉 결합이 많으면 많을수록 복잡해지는 소프트웨어가 되어 버립니다.
진화적 아키텍처 토폴로지에서는 어떻게 하면 최소한의 오버헤드와 비용을 들여 최대한의 이득을 볼수 있을까?에 대해 고민을 하고 이는 커플링의 적정 수준에 대하여 이야기를 풀어나갑니다.
170페이지
4) 진화적 데이터란?
진화적 아키텍처 설계에서 중요하게 다루는 또 하나의 차원인 ‘데이터'
개발자가 어려워 하는 또하나의 큰산인 ‘데이터베이스 설계'
데이터베이스와 연관된 성능 이슈가 80~90% 육박할 정도로 데이터베이스는 성능과 밀접하지만 보면볼수록 어려운 산입니다.
비록 이책에서는 시스템적으로 데이터를 다루고 있지만, 큰 그림에서의 데이터를 어떻게 구현하고 분할할지에 대한 부분을 알수 있습니다.
190페이지
5) 진화 가능한 아키텍처 구축
진화적 아키텍처 원리
마이그레이션의 일반적인 경로
230페이지
4. 책을 읽은 후
지난 몇 년 동안 많은 비즈니스 분야에서 변화의 주기가 급속히 빨라지고 있습니다.
소프트웨어에 인공지능 기술이 급속히 스며들고 있으며
비즈니스는 예측불가능한 상황에 들어간지 오래되었습니다.
지금 시점에서 아키텍처를 고려해야 한다면 이책이 미래에 좀더 빠른 대응과 유연함을 제시할 수 있지 않을까? 생각을 합니다.
물론 진화적 아키텍처는 만능 도구가 아닙니다.
모든 소프트웨어 공학에서 베스트 프랙티스라고 주장을 하지만 항상 이말을 단서로 달고 있습니다. ‘만능 도구가 아니다(은탄환은 없다)'
이 책의 저자 또한 이말을 빠뜨리지 않습니다. ‘진화적 아키텍처는 만능 도구가 아니다'
이 책을 한번 읽어도 이해가 쉽지 않은 책입니다.
계속 옆에 두면서 필요할때마다 책을 읽어야 하며, 지속적으로 연구해야 합니다.
이 점은 늘 아쉬운 부분입니다.
아키텍처 설계관련 책은 쉽지 않은 내용이 대부분입니다.
같이 읽으면 좋은 책
-(기본편) 소프트웨어 아키텍처 101
-(심화편) 소프트웨어 아키텍처 The Hard Parts
-마이크로서비스 아키텍처 구축
여기서 책의 서평을 마무리 짓겠습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
감사합니다