메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

진화적 아키텍처

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

한빛미디어

번역서

판매중

  • 저자 : 닐 포드 , 레베카 파슨스 , 패트릭 쿠아
  • 번역 : 정병열
  • 출간 : 2023-08-31
  • 페이지 : 304 쪽
  • ISBN : 9791169211345
  • 물류코드 :11134
  • 초급 초중급 중급 중고급 고급
4.8점 (27명)
좋아요 : 2

새로운 시대, 애자일을 넘어선 진화적 소프트웨어 개발의 부상

소프트웨어 개발 생태계에 혁신을 가져올 진화적 아키텍처

 

◆ 소프트웨어의 거장이자 『리팩터링』 저자 ‘마틴 파울러’ 추천 도서

◆ 미래에 대응하는 소프트웨어 개발의 새로운 지평을 열게 될 진화적 아키텍처

◆ 전 세계적으로 인정받은 전문가들의 노하우가 담긴 책!

 

진화적 아키텍처란 끊임없는 변화에 유연하게 적응하기 위한 ‘가드레일이 내장된’ 아키텍처를 의미한다.  변화는 예측하기 어렵지만 변화 자체를 기정사실화하면 사전에 피트니스 함수를 도입해 감지하고 대응할 수 있다. 이러한 피드백을 통해 시스템은 점진적으로 발전하며 그 과정은 마치 소스코드 히스토리처럼 명확하게 파악할 수 있게 된다. 결국, 진화적 아키텍처를 구축하면 향후 대대적인 재구축의 필요성은 줄어들고 그에 따른 비용과 노력을 절감할 수 있다.

 

현대의 소프트웨어 개발에서 아키텍처 설계가 차지하는 비중과 중요도는 끝없이 높아지고 있다. 소프트웨어의 설계는 우리가 ‘소프트웨어 개발’이라 여기는 거의 모든 것에 코딩을 더하는 작업이나 다름없다. 그렇기에 아키텍처를 이해하는 능력은 아키텍트뿐만 아니라, 개발자에게도 핵심적인 역량이 되어야 한다. 게다가 빠르게 변화하는 환경에 적응하고 대처하기 위해서는 ‘진화적 아키텍처'에 대한 이해가 모든 소프트웨어 리더의 필수 역량이기도 하다.

  

이처럼 급변하는 비즈니스를 감당하는 소프트웨어 아키텍처의 유연성을 어떻게 확보할 수 있는지는 중요한 고민이다. 어떻게 하면 소프트웨어 아키텍처를 유연하게 만들어 비즈니스와 기술 변화의 속도에 민첩하게 대응할 수 있을까? 이 책은 이런 핵심 질문들에 대한 해답을 제시한다. 따라서 이 책을 통해 비즈니스와 기술 변화에 유연하게 대응할 수 있는 아키텍처를 구축하는 방법을 습득하길 바란다.

 

상세페이지_700px_진화적 아키텍처.jpg

닐 포드 저자

닐 포드

엔드투엔드 소프트웨어 개발과 인도를 전문으로 하는 글로벌 IT 컨설팅 회사, 쏘우트웍스(ThoughtWorks)의 이사이자 소프트웨어 아키텍트, 밈 랭글러(meme wrangler)이다. 쏘우트웍스에 입사하기 전에는 미국에서 유명한 교육/훈련 개발 회사인 DSW Group에서 최고 기술 책임자(CTO)를 역임했다.

 

 

레베카 파슨스 저자

레베카 파슨스

쏘우트웍스의 최고 기술 책임자(CTO)이다. 브래들리 대학교에서 컴퓨터 과학과 경제학 학사, 라이스 대학교에서 컴퓨터 과학 석사와 컴퓨터 과학 박사 학위를 받았다. 유전자 알고리즘 등의 도구를 비롯해 진화적 컴퓨팅 분야에서 오랫동안 연구했다.

패트릭 쿠아 저자

패트릭 쿠아

독일 네오 뱅크 N26의 전 최고 기술 책임자(CTO)이자 쏘우트웍스의 전 수석 기술 컨설턴트로 20년 이상 기술 업계에서 근무하고 있다. 그는 일대일 코칭, 온라인 및 대면 기술 리더십 워크숍, 기술 리더를 위한 인기 뉴스레터 Level UP을 통해 기술 리더의 성장을 돕고 있다.

정병열 역자

정병열

학창 시절 접한 BASIC 언어를 계기로 프로그래밍에 입문했다. 일찍부터 직업 개발자로 다양한 프로젝트를 수행하며 스타트업과 대기업에 몸을 담았다. 시니어 개발자로 경력을 이어가는 한편 양질의 개발 서적 출간에 일조하고자 틈틈이 노력하는 중이다. 옮긴 책으로는 『Modern PHP』, 『자바 마이크로서비스를 활용한 SRE』 (이상 한빛미디어) 등이 있다.

[PART 1 역학]

CHAPTER 1 진화적 소프트웨어 아키텍처

1.1 진화적 소프트웨어의 과제

1.2 진화적 아키텍처

1.3 상시 변화하는 환경의 장기 계획 수립 가능성

1.4 시간에 따른 아키텍처의 성능 저하 방지

1.5 왜 진화인가?

요약

 

CHAPTER 2 피트니스 함수

2.1 정의

2.2 범주

2.3 피트니스 함수는 누가 작성하는가

2.4 피트니스 함수 테스트 프레임워크 선택

2.5 결과 vs 구현

요약

 

CHAPTER 3 점진적 변화 엔지니어링

3.1 점진적 변화

요약

 

CHAPTER 4 아키텍처 거버넌스 자동화

4.1 피트니스 함수와 아키텍처 거버넌스

4.2 코드 기반 피트니스 함수

4.3 턴키 도구

4.4 통합 아키텍처

4.5 데브옵스

4.6 엔터프라이즈 아키텍처

4.7 피트니스 함수는 무기가 아닌 체크리스트다

4.8 피트니스 함수 문서화

요약

 

[PART 2 구조]

CHAPTER 5 진화하는 아키텍처 토폴로지

5.1 진화 가능한 아키텍처 구조

5.2 아키텍처 퀀텀 및 세분성

5.3 계약

5.4 재사용 패턴

요약

 

CHAPTER 6 진화적 데이터

6.1 진화적 데이터베이스 설계

6.2 부적절한 데이터 얽힘

6.3 네이티브에서 피트니스 함수로

 

[PART 3 영향력]

CHAPTER 7 진화 가능한 아키텍처 구축

7.1 진화적 아키텍처의 원리

7.2 역학

7.3 그린필드 프로젝트

7.4 기존 아키텍처 개조

7.5 아키텍처 마이그레이션

7.6 진화적 아키텍처 구축 가이드라인

7.7 피트니스 함수 주도 아키텍처

요약

 

CHAPTER 8 진화적 아키텍처의 함정과 안티패턴

8.1 기술 아키텍처

8.2 증분 변경

8.3 비즈니스 관심사

요약

 

CHAPTER 9 아키텍처 실천

9.1 조직적 요인

9.2 비즈니스 사례

9.3 엔터프라이즈 피트니스 함수 구축

9.4 시작 지점

9.5 미래 전망

9.6 되는 이유와 안 되는 이유

요약

진화적 아키텍처로 기존 서비스를 유지한 채 점진적으로 서비스를 개선해보자

 

소프트웨어 개발에서 아키텍처 설계의 중요성은 점점 높아지고 있다. 특히 최근, 아키텍처 기술의 주된 흐름이 서비스 지향 아키텍처(SOA)에서 마이크로서비스 아키텍처(MSA)로 전환되면서 진화적 아키텍처는 가장 주목받는 아키텍처 기술 중 하나로 떠올랐다. 이제는, 클라우드 네이티브를 도입하려는 모든 소프트웨어 개발자나 아키텍트에게 진화적 아키텍처는 필수 기술이 되었다.

 

하지만 아직 진화적 아키텍처를 제대로 활용하지 못하는 아키텍트들도 있을 수 있다. 이 책은 그런 아키텍트들을 위해, 진화적 아키텍처를 활용하여 빠르게 변화하는 비즈니스에 대응하며 업무 효율성을 높일 수 있는 방법을 상세하게 안내한다. 그리고 피트니스 함수를 이용하여 아키텍처 특성을 유지하면서 진화하는 소프트웨어를 개발하는 방법도 함께 살펴본다. 전 세계적으로 인정받은 전문가들의 깊은 경험과 지식이 담겨 있는 이 책으로, 진화적 아키텍처뿐만 아니라 아키텍처 기술 전반을 이해하고 실전에 적용하는 데 활용하길 바란다.

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

-마이크로서비스 아키텍처 구축


여기서 책의 서평을 마무리 짓겠습니다.


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

 

감사합니다

2023년 08월에 출간된 한빛미디어 출판사의 <진화적 아키텍처>에 대해 알아보겠습니다. 이 책의 원서는 2017년 11월에 첫 번째 버전이 출간되었고, 2022년에 12월에 개정판이 출가되었습니다. 이 번역서는 개정판 기준이며, 아마존 평점으로 4.3점의 비교적 높은 점수를 받고 있습니다. 이 책의 닐 포드, 레베카 파슨스, 패트릭 쿠아, 프라모드 사달게이 님이며, 역자는 정병열 님으로 대표적인 작품으로 <자바 개발자를 위한 데브옵스 툴>과 <자바 마이크로서비스를 활용한 SRE> 등의 번역서가 있습니다. 

 

<진화적 아키텍처>는 300여 페이지로 구성되어 있습니다. 휴대하기 편한 서적으로 종이책, 전자책 중 원하는 책으로 보시면 될 것 같습니다. 참고로 필자는 전자책으로 봤습니다. 

 


한빛미디어 평가단에 참가하여 작성한 글입니다. 

한빛미디어에서 제공해 준 책을 읽고 작성했음을 밝힙니다.


 

이 책의 매력 포인트

이 책은 3부 9장으로 구성되어 있습니다. '진화적 아키텍처'가 무엇인지부터 알아보고, 진화적 아키텍처로 나아가는 과정을 각 저자들의 생각과 지식을 체계화하여 통찰력 있게 설명합니다. 

아키텍처 설계에 정답이 없듯이 이 책에서 소개하는 내용을 잘 활용하여 자신의 상황에 알맞게 적용하며 개선해 나가야 합니다. 이 책은 추상적인 내용이 많습니다. 이 추상적인 과정을 나의 상황에 맞게 구체화하면서 나아가는 과정이 재미있는 포인트라고 생각합니다. 

이 책을 통해 새로운 용어, 방법론을 알게 된 것도 즐거웠던 경험이었습니다. 지식을 구체화하는 저자들의 능력에 감탄을 하기도 했습니다. 하지만 문장 하나하나가 다소 어렵게 구성되어 있는 것 같습니다. 원래 닐 포드 님의 글이 그런 경향이 있지만 조금 더 쉽게 작성할 수 있지 않을까? 란 생각이 들었습니다. 이런 특성으로 말미암아 실제 내용보다 더 어렵게 느껴지는 것 같습니다.

개인적인 생각으로 이 책의 주요 내용은 앞으로도 계속 변할 것으로 생각합니다. 그다음 판에는 어떤 내용이 추가되고 어떤 부분이 개선될지 흥미롭습니다. 그리고 이 책에서 배운 지식들은 매력적이었습니다. 혼자 이 책을 보는 것보다는 스터디 그룹을 조직하여 다양한 토론을 하며 읽는 것이 좋을 것 같습니다. 

 

마치면서

이 책은 입문서가 아니며, 저자가 이야기하는 주요 내용을 쉽게 이해하기 어렵습니다. 관련 지식과 경험이 많은 부분에서 필요합니다. 하지만 아키텍처에 대해 고민하고 계신 분이라면 도움을 받을 수 있는 부분이 많습니다. 이 책에서 소개하는 저자들의 주장을 현재 속해있는 조직의 상황에 알맞게 녹일 수 있다면 큰 도움을 받을 수 있다고 생각합니다. 

소프트웨어 아키텍처 101 - 소프트웨어 아키텍처 The Hard Parts - 진화적 아키텍처까지 너무 재미있게 잘 읽었습니다. 내공이 높은 분일수록 이 책에서 얻을 수 있는 가치가 더 많을 것으로 생각합니다. 좋은 책 출간해 주셔서 감사합니다. 

“소프트웨어는 변화해야 하는가?” 저는 이 질문이 진화적 아키텍처를 잘 이해하기 위한 좋은 질문이라고 생각합니다. 컴퓨터 공학에서는 폭포수 개발모델에서 시작하여 비교적 최근의 애자일 방법론으로까지 변화하고 있고 애자일 또한 세부적인 사항이 변화하고 있습니다. 이 책의 후반부에 언급하는 테스트 주도 개발 (TDD) 등도 이러한 변화 과정을 나타내는 방법론이라고 할 수 있습니다.

 

여러 사람이 함께하는 소프트웨어 프로젝트는 분명 달성하기 위한 목적과 목표가 있을 것 입니다. 예를 들면 자사의 제품을 온라인에서도 팔기 위한 쇼핑몰 사이트가 될 수도 있겠습니다. 이 때, 쇼핑몰이라는 큰 틀은 변하지 않는다 하더라도 세부적인 사항들은 언제나 변할 수 있습니다. 만약 소규모 개발이 아닌 대규모 프로젝트를 진행한다면 서로 역할을 나눠 마이크로서비스로 각자의 역할은 분리하되 규약을 세워 API 등을 통해 공동의 문제를 해결해 나갈 것 입니다. 이러한 규모라면 우리는 언제나 레거시를 고려하며 앞으로 전진해야 합니다. “소프트웨어는 변화해야 하는가?” 이 질문을 다시 생각해보자면 변화할 수 밖에 없다고 생각합니다. 이 책의 진화적 아키텍처는 그러한 과정을 저자들이 어떤 관점을 갖고 있고 어떻게 해결해 나가는지에 대해 PenultimateWidgets의 사례를 기반으로 설명하고 있습니다 (이는 물론 가상의 사례일 것이라 생각합니다).

 

이 책을 처음 읽었을 땐 어휘가 익숙하지 않아 눈에 익는데 조금 시간이 걸렸습니다. 제가 알고 있던 용어와 연결하는데 시간이 좀 걸린 것이고 이것이 익숙해지니 변화하는 소프트웨어 개발을 이렇게 볼 수도 있다는 관점을 엿볼 수 있었습니다. 레거시화 된 코드를 보며 어떻게 하면 좀 더 안전하게 그리고 적절한 비용으로 개선할 수 있는지 고민이 있으셨던 분들이 읽어보시면 생각을 정리하는데 도움이 될 수 있을 것이라 생각합니다.

 

전체 리뷰는 아래 링크에서 확인하실 수 있습니다.

https://altari.io/2023/09/24/Building_Evolutionary_Architectures.html

회사 업무로 개발, PM, 아키텍처 설계 업무를 주로 수행하면서 마이크로 서비스 아키텍처, 애자일, 데브옵스 아키텍처 책을 읽고 업무에 적용해 왔는데 이번에 조금은 생소한 "진화적 아키텍처" 책을 읽어 보게 되었습니다. 

 

우선 "진화적 아키텍처" 는 조금 어렵고 수준이 있는 책이라고 생각합니다.

시스템 설계를 하는 입장에서는 정말 재미있고 흥미로운 내용과 예제가 많아서 읽기는 좋았지만 책에 언급한 용어 및 내용은 아키텍처를 처음 접하는 사람에게는 조금 어렵지 않을까 생각이 들기도 했습니다.

하지만 내용 자체는 아키텍처 책을 여러번 읽어본 입장에서 정말 좋았습니다.

 

현재 IT 개발 및 설계에서도 빠른 업무 환경 변화, 개발 환경의 변화, 회사 내부의 보안 등 여러 환경으로 인해 기존 아키텍처와 신규 아키텍처의 혼용으로 여러 기술적 문제점과 어떻게 개선하고 기존 시스템에 반영을 해야 하는가가 업무를 하는 입장에서 언제나 고민이었는데 "진화적 아키텍처" 책에서는 해당 내용에 대한 해결 방안 및 소프트웨어를 어떻게 생각해야 하고 어떤 기술 및 어떤 관점으로 봐야 하는지 설명하고 있습니다. 피트니스 함수, 배포, 아키텍처 거버넌스 자동화, 진화적 데이터, 진화적 아키텍처의 함정과 안티페턴등등 각 장에서 사례 및 패턴 함정이라는 주제로 실제 업무에서 겪어볼 수 있는 내용으로 설명하고 있습니다. 그리고 관련 내용을 그림 및 소스 코드를 통해 이해할 수 있도록 충분히 설명하고 있습니다.



아키텍처 책을 여러권 읽어와서 그런지 아키텍처의 진화형을 "진화적 아키텍처" 책을 통해 볼 수 있었던것 같습니다. 소프트웨어 아키텍처의 답은 없다고 생각합니다. 여러 기술 및 여러 환경에 최선의 답을 찾고 지속적인 변화 및 올바른 방향을 가도록 하는게 아키텍처인데 "진화적 아키텍처" 책에서는 해당 관점 및 다양한 방법을 이야기 하고 있습니다. 저희 회사에서도 고민했던 별점 평가등은 과거의 경험 및 책을 통한 답을 확인 할 수 있었습니다. 

 

전체적으로 수준이 있는 책이지만 아키텍처에 관심이 있거나 마이크로 서비스 아케텍처 공부후에 해당 책을 읽어보면 좋을것 같습니다.

다른 관점의 여러 방법 및 생각을 해볼 내용이 많은 책입니다. 점진적으로 하나의 서비스 및 시스템을 만들려는 모든 아키텍처에게 추천합니다.

 

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



`소프트웨어 아키텍트`는 아직까지는 그렇게 대중적인 포지션은 아닌 것 같습니다. 하지만 포지션에 대해 고민하고, 변화에 대응하기 위한 설계를 고민하는 분들에게 도움이 될 만한 책입니다. 
 
쉬운 책은 아니고 고민할 영역이 많습니다. 소프트웨어에 대한 유연한 대응을 하기 위해선 기초 설계 단계에서부터 해야할 것이 참 많습니다. 설계가 튼튼해야 규모에 대응하고 문제를 풀어갈 수 있습니다. 커지면서 시간에 따라 무너지지 않기 위해선 `아키텍트`의 역량이 중요함을 강조합니다. 
 
거번넌스, 피트니스 함수 등 유연한 설계와 그에 대한 대응에 대한 깊이를 다루고 싶으면 꼭 읽어보기를 추천합니다.
 
 
---
한빛미디어 `2023 도서 서평단 "나는 리뷰어다"`의 일원으로 도서를 제공받아 작성한 리뷰입니다.

KakaoTalk_Photo_2023-09-24-23-48-05.jpeg

 

지난 번 닐 포드의 ‘소프트웨어 아키텍처 The hard Parts’를 읽은 이후 그의 다른 책인 ‘진화적 아키텍처’를 읽게 되었다. 이번 역시 개념이 어렵다고 느꼈으나 페르소나와 구체적인 상황을 정의하여 설명하는 방식으로 비교적 쉽게 이해할 수 있었다.

 

이 책의 주된 내용은 진화적 아키텍처의 개념과 그 당위성, 이를 실현하기 위한 방법이다. 1부에서 진화적 아키텍처와 관련한 메커니즘과 엔지니어링 사례를 정의하며, 진행 시 필요한 기술과 도구, 범주 등을 설명한다. 

2부에서는 구조 설계와 진화와 거버넌스 효과에 대해 설명한다. 기존의 아키텍처의 개념에서 조금 더 현대화된 IT 생리가 담겨있다고 볼 수 있다. 

 

책에서는 진화적 아키텍처가 등장하게 된 배경을 개괄적으로 설명한다. 그 중 한 이유는 데브옵스 도구의 등장이었다. 

퍼펫, 셰프 등의 데브옵스 도구가 머신 프로비저닝을 자동화하며 리눅스의 운영적 비용도 완전히 사라졌다고 한다. 

이 툴의 존재에 대해 처음 알게 되었으나 아키텍트의 진화에 도움이 된 만큼 짚고 넘어가면 좋을 것 같다.  

 

 

 

 

피트니스 함수란 예상 설계 솔루션의 설정 목표 달성도를 간단하게 확인할 수 있는 목적 함수다. 진화적 컴퓨팅에서 피트니스 함수는 대상 알고리즘 시간이 지남에 따라 얼마나 개선되었는지를 나타낸다. 다시 말해, 피트니스 함수는 변형 알고리즘이 생성될 때마다 알고리즘 설계자가 정의한 ‘적합성’에 근거해 각 변형이 얼마나 ‘적합한가’를 판단한다. 진화를 보호할 아키텍처 특성을 아키텍트가 정의하면, 그에 따라 각 기능을 보호할 피트니스 함수가 하나 이상 정의된다. 

30쪽, 진화적 아키텍처.

 

지난 번 책과 동일하게 피트니스 함수의 역할을 강조했다. 아키텍트를 수치화하여 객관적으로 적합성을 검증할 수 있는 도구이므로 이 개념은 꼭 숙지하고 가야할 것 같다. 

 

 

공식 웹 사이트 ( https://evolutionaryarchitecture.com ) 

책과 관련한 공식 웹사이트를 운영하고 있다고 한다. 저자들이 직접 만든 참고 자료와 강연을 제공한다.

 

cloudshadow@gmail.com

또, 기술적인 궁금증이 있거나 코드 예제에서 오류가 발생한 경우 문의 또한 넣을 수 있다고 한다. 

 

 

KakaoTalk_Photo_2023-09-24-23-48-00.jpeg

 

아키텍트의 역할에 관심이 있는 이들은 물론, 컨설턴트와 개발자가 읽어도 실무를 진행하는데 있어 큰 도움이 될 것이다.

 

 

 

 

 

 

 

 

 

 

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

 

 

 

진화적 아키텍처

 

클라우드 기술의 발전으로 서버, 스토리지, 네트워킹 등의 리소스를 온디맨드로 이용할 수 있게 되었습니다.

이는 확장성과 유연성을 높여 비용 효율적인 IT 인프라 관리를 가능하게 합니다.

기존 이론적으로만 존재하는 기술들을 현실로 가능하게끔 환경이 조성됐습니다.

 

품질의 성능을 높일 수 있도록 도움을 주는 아키텍처 책이 나왔습니다.

 

바로 진화적 아키텍처란 책이 나왔습니다.

 

이 책에 대해서 2가지로 정리해보도록 하겠습니다.

 

 

123.jpg

 

 

1) 진화적 아키텍처의 특성

진화적 아키텍처는 초기에 완벽하지 않아도 되며 시간이 지남에 따라 조정, 개선되는 유연한 시스템 설계를 말합니다.

이는 초기에 중요한 기능에 중점으로 운영하면서 적응하고 발전할 수 있도록 합니다.

이때 시스템이 변화에 유연하게 대응하고 효율적으로 운영될 수 있도록 설계되어야 합니다.

이 책은 시스템이 지속적인 발전을 할 수 있도록 아키텍처를 설계하는 것을 강조하는데요.

전체적인 아키텍처를 어떻게 설계하면 좋을지 많이 배울 수 있습니다.

 

 

123.jpg

 

 

 

2) 컨테이너 기술로 이론을 현실화

이론적으로 알게 된 진화적 아키텍처를 시스템에 구성하기 위해서는 컨테이너 기술은 필수적입니다.

컨테이너 기술은 애플리케이션을 격리하고 이식성을 높여주기 때문입니다.

컨테이너는 환경에 독립적으로 실행됩니다.

또한 개발 환경과 프로덕션 환경 간의 간극을 줄여줍니다.

컨테이너는 자동화와 빠른 배포를 해 개발자와 운영팀이 효율적으로 협력할 수 있게 합니다.

이로 인해 진화적 아키텍처 원칙을 더욱 적용하고 적응할 수 있는 환경이 조성되어 시스템이 더 유연하게 발전할 수 있게 되었습니다.

 

222.jpg

 

 

PS

리팩토링 책의 저자인 마틴 파울러가 추천한 책인데요.

주니어 개발자는 기반지식이 없다면 상당히 어렵지만 배울 게 많은 책입니다.

 

또한 변화에 빨리 적응하기 위해선 테스트에 대한 강조가 많습니다.

그 이유는 기존 테스트를 바탕으로 변경한 코드를 검증하는 구조로 많이 사용합니다.

 

기존 코드에 테스트 코드를 습관화 하면서 이 아키텍처를 이해하고 도입해 보는 것도 추천해 드립니다.

 



KakaoTalk_20230924_222850482_01.jpg

 

 



 

아키텍처는 코드를 작성하기 전 개발되고 완성하는 것이라는 오랜 관념이 있었습니다. 선계획된 아키텍처는 코딩을 시작하기 전에 요구 사항이 고정되어야 한다는 전제가 있었기 때문입니다. 특히 폭포수 개발 모형에서는 고정된 요구 사항을 아키텍처가 뒤따르며, 그 뒤에 개발이 단계적으로 진행이 되었습니다. 하지만 이러한 고정관념은 애자일 소프트웨어 방법론의 등장으로 거센 도전에 직면하게 되었습니다.

 



렇다면 책의 제목인 진화적 아키텍처란 무엇을 의미할까요?

 

 

현대의 아키텍처는 요구 사항의 변화와 프로그래밍의 피드백에 모두 대응해야 한다. 변화를 예측할 수는 없지만 아키텍처를 안전한 방향으로 이끄는 것은 가능하기에 우리는 이러한 노력을 진화적 아키텍처라 부르기로 했다. 진화적 아키텍처의 핵심은 피드백 순환 속에서 작은 변화를 일으키는 것이며, 피드백을 통해 모든 이가 시스템의 발전 과정을 파악하는 것이다. - 해외 추천사 중

 

 

 

 

[PART 1 역학]

 

CHAPTER 1 진화적 소프트웨어 아키텍처

 

CHAPTER 2 피트니스 함수

 

CHAPTER 3 점진적 변화 엔지니어링

 

CHAPTER 4 아키텍처 거버넌스 자동화

 

 

[PART 2 구조]

 

CHAPTER 5 진화하는 아키텍처 토폴로지

 

CHAPTER 6 진화적 데이터

 

 

[PART 3 영향력]

 

CHAPTER 7 진화 가능한 아키텍처 구축

 

CHAPTER 8 진화적 아키텍처의 함정과 안티패턴

 

CHAPTER 9 아키텍처 실천

 

 

 

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

 



    개발자라면 이렇게 책으로, 개념적으로 정의하지 않더라도 모두가 생각하고 있는 유지보수가 가능하면서도 생산성이 향상되는 소프트웨어를 꿈꾸면서 개발하고 있을 겁니다. 비록 나중에 엉망진창이 된다고 할지라도 말이죠.

 

 

 

 

    이 책은 소프트웨어의 거장이자 책 "리팩터링"의 저자인 마틴 파울러가 추천하는 책이라고 합니다. 이것만 봐도 이미 신뢰가 뿜뿜 솟아오릅니다. 사실 저는 리팩터링 저자의 추천이라서라기 보다는 이 전에 나온 책들인 "소프트웨어 아키텍처 101" 을 통해서 이 저자를 알고 있었기에 더 반가운 책이었습니다. "소프트웨어 아키텍처 101" 도 정말 좋은 책입니다!!

 

 

 

 

   책은 크게 3부로 나눠집니다. 1부는 진화적 아키텍처의 역학을 정의합니다. 피트니스 함수, 배포 파이프라인 등 소프트웨어 프로젝트를 관리하고 발전시키는 아키텍처 역학 전반에 대해서 다룹니다. 이 단원에서 왜 진화적 아키텍처를 목표로 해야 하는지, 점진적 변화 엔지니어링은 무엇인지 그리고 아키텍처 거버넌스의 자동화 (코드 기반 피트니스 함수, 통합/엔터프라이즈 아키텍처, 데브옵스 등)을 배웁니다. 

 

 

 

 

    2부에서는 아키텍처의 구조에 대해 본격적으로 들어갑니다. 소프트웨어 시스템의 토폴로지는 진화에 큰 영향을 미치고 구조 설계 역시 상당한 비중을 차지하기 때문에 명확한 원칙에 따라 올바르게 설계된 구조가 필요하다는 점을 강조합니다. 크게 두 가지로 "진화하는 아키텍처 토폴로지" 와 "진화적 데이터"를 배우게 됩니다. 이 챕터의 내용도 상당히 흥미롭습니다.

 

 

 

    마지막 파트 3은 지금까지 배운 엔지니어링에 대한 사례들과 그에 대한 고찰을 해보는 시간을 갖는 내용입니다. 진화적 아키텍처를 구축할 때는 어떤 원리로, 어떤 역학으로, 어떤 가이드라인을 가지고 구축해야하는지를 자세하게 배울 수 있습니다. 

 

 

 

 

    책을 읽다보면 중간중간 사례 연구를 보여주고 이를 기반으로 책에서 배운 내용들을 접목시켜서 이해하는 과정을 거치다 보니 실제 개발하는 내용과 비슷한 내용이 나오면 고개를 끄덕이면서 읽게 됩니다. 어디 하나쯤을 실무에 반영할 거리를 찾을 수 있을 거라고 생각하고 부지런히 읽었습니다.

 

 

 

 

    아키텍처를 많이 생각할 일이 아직은 없어서 책의 진짜 가치를 모두 이해하지는 못하고 있는 것 같아 조금 아쉽습니다. 옆에 두고 계속 보면서 실무에도 반영하다보면 더 많은 것을 배우고 실력도 많이 늘겠죠? 오랜만에 상당히 어렵지만 많은 깨달음을 주는 책을 만나서 재밌네요. 

 

 

 

 

마지막은 책에 포함되어 있는 포스텔의 법칙을 보면서 마무리하겠습니다.

 

끝.

 

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

진화적_아키텍처.jpg

 

소프트웨어 아키텍처만으로도 생각이 많아지는데 진화적 아키텍처라니.

처음 드는 느낌은 마치 열심히 걷고 있는데 저 멀리서 달려 나가고 있는 상대를 보고 있는 느낌이었습니다.

그처럼 진화적 아키텍처는 디디고 있는 현실을 생각하면 너무 먼 얘기처럼 보였습니다.

하지만, 내용을 알아갈수록 현재를 돌아보고 앞으로를 살피게 하는 힘이 있었습니다.

 

역학, 구조, 영향력

피트니스 함수,  자동화,  점진적 변화, 커플링과 중복, 데이터, 함정, 안티패턴 등.

생각지도 못했던 내용, 어렴풋하게나마 추측한 상태에 머무르던 개념, 나름 안다고 생각했지만 그게 다가 아니었던 관계 같은 내용이 생생하게 펼쳐져 있습니다. 사례가 있어서 그나마 따라갈 수 있었습니다.

책에서 인용한 한 문장이 이 모든 걸 한마디로 정리해 주는 것 같습니다.

'소프트웨어 재사용은 레고 블록 조립이 아닌 장기 이식에 가깝다.'

 

언뜻언뜻 보이는 이야기

다양한 사례에서는 직접적인 고객을 언급하지 않았지만 실제 경험일 수밖에 없는 상황이 연출됩니다.

물론, 얘기를 풀어나가기 위해 여러 경험들을 조합하긴 했겠지만요.

가상 기업 사례로 설명을 하다가 한마디 툭 던져놓은 문장을 보고, '아, 이거 실제 상황이었구나' 하는 느낌이 들기도 했습니다. 지금 보고 있는 내용이 실무에서 겪은 수많은 좌절과 오랜 고민이 만들어낸 결과물이라는 생각을 하게 됩니다.

더하여, 차마 글로 풀어놓지 못한 얘기가 더 많을 거라 짐작에, 업계를 리드하는 업체조차도 무수한 난관과 마주한다는 사실이 위로가 되기도 했습니다. 난관이라 해도 클래스가 다르겠지만요.

 

현실에서 시작

읽을수록 공감과 함께 의문도 커졌습니다.

이걸 과연 적용할 수 있을까?  하려면 어떤 식으로 어디서부터 시작해야 할까?

내용 중간중간에 선행되어야 하는 조건들을 상기시켜 줍니다만, 뭔가 아쉬운 느낌을 계속 가지고 있었습니다.

마지막 장에 다다르면 기술적인 부분뿐 아니라 비즈니스 분야를 포함해서 시작할 수 있는 부분을, 맞닥뜨릴 상황을 펼쳐 보여줍니다.

 

 

진화적 아키텍트를 그려볼 수 있는 환경보다 그렇지 못한 환경이 많은 게 현실이라고 생각합니다.

필요에 따라 일회성 프로젝트가 반복되는 상황과

운영진을 설득하다 아키텍트가 지쳐버릴 가능성이 높은 상황에서 진화 가능한 아키텍처를 바라본다라.

 

오히려 지금 상황을 돌아보는 계기가 되었습니다.

배포 파이프라인은커녕 테스트조차도 아직 걸음마 단계인 상황이 부지기수니까요.

개발, 아키텍처, 자동화, 거버넌스, 비즈니스, 진화

개인적으로 많은 생각을 하게 하는 책이었습니다.

 

 

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

 

비즈니스 세계는 하루하루 변화한다. 이뿐만 아니라 고객의 요구 사항 역시 끊임없이 변경되며, 이러한 변화와 변경은 소프트웨어의 구조를 바꾸는 동인이 된다. 그런데 소프트웨어의 구조를 변화시키는 건 결코 쉽지 않은 일이다. 소프트웨어는 그 자체로서 복잡하고, 여러 구성 요소로 이뤄진 복합체이기 때문이다. 하나의 구성 요소가 변경되었을 때 그와 맞물린 다른 요소 역시 그에 따른 영향을 받을 수 있으며, 이는 곧 전체 시스템의 영향으로 파급되기도 한다. 

 

애자일로 대변되는 현재의 프로그래밍 패러다임 속에서, 소프트웨어는 끊임없이 변화하고 있다. 애자일을 지원하는 데브옵스 철학과 CI/CD라는 엔지니어링 프랙티스가 소프트웨의 점진적 변화를 주도하는 일등 공신으로 온전히 자리매김하고 있다. 그런데 이러한 기조가 소프트웨어 아키텍처에는 적용될 수 없을까? 아키텍처 역시 변화를 피할 수 없고, 반드시 변해야 한다면 바로 점진적 변경이 해답이 될 수 있다. '진화적 아키텍처'는 어떻게 하면 아키텍처의 변화를 유도하고, 그 변화를 안착시킬 수 있는가에 대한 논의를 심층적으로 다루는 책이다. 

 

본 서적에서 자주 접하게 되는 '피트니스 함수'라는 용어가 굉장히 낯설고 그 의미가 한번에 와닿지 않았지만, 입력과 출력을 통해 어떠한 값을 평가하는 함수의 본래 의미와 같이, 아키텍처의 특성을 평가하는 도구로 이해하고 나서야 그것의 중요성을 명료하게 인지할 수 있었다. 피트니스 함수를 통해 아키텍처의 컴포넌트와 제반 요소를 올바르게 평가하고, 아키텍처를 올바른 변화로 유도할 수 있을 때 비로소 아키텍처는 '진화'에 성큼 다가서게 된다.

진화적 아키텍처를 구현하기 위한 여러 담론이 책 전체를 관통하면서 끝내 머릿속에 남는 건 바로 '점진적 변화'였다. 애자일과 데브옵스 그리고 CI/CD가 지향하는 점진적 변화가 소프트웨어 아키텍처에도 적용되어, 궁극적으로는 아키텍처의 진화를 꾀하게 되고, 이는 곧 소프트웨어 전체의 가치 향상으로 이어지게 된다. 좋은 소프트웨어는 좋은 구조 위에서 꽃을 피우게 되고, 좋은 소프트웨어를 이용할 수 있는 고객은 행복해지게 되는 게 아닌가? 결국 진화적 아키텍처는 소프트웨어 생태계를 이루는, 모든 플레이어를 행복하게 만드는 공공선의 아키텍처다. 진화적 아키텍처를 뒷받침하는 여러 구성 요소와 이와 관련된 진지한 논의가 궁금한 이들에게 이 책에 대한 일독을 권한다. 

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

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

 

 

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

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

 

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

 

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

 

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

 

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

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

 


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

진화적 아키텍처는 소프트웨어 아키텍처의 진화와 발전에 대한 심도 있는 이해를 제공하는 책이다. 이 책은 기업들이 변화하는 요구사항과 기술 환경에 적응하며, 지속 가능하고 유연한 아키텍처를 구축하는 방법에 대해 탐구한다. 다양한 사례 연구와 실제 경험을 기반으로 한 이 책은 아키텍처를 설계하고 유지하는 데 있어 중요한 원칙과 패턴을 제시한다.

  • 실용적인 접근법: 이 책은 이론적인 내용과 실용적인 지침을 적절하게 조화시켜, 현실 세계의 문제에 대응할 수 있는 방법을 제시한다.
  • 다양한 사례 연구: 다양한 산업과 환경에서의 실제 사례 연구는 독자에게 깊은 통찰력과 함께 다양한 상황에서의 적용 방법을 제시한다.
  • 진화적인 관점: 소프트웨어 아키텍처의 지속적인 변화와 발전에 대한 중요성을 강조하며, 이를 실현하기 위한 전략과 기술을 소개한다.

서비스를 출시하고 나면 그때부터가 진짜 시작이라는 얘기를 많이 한다. 서비스가 생명력을 갖고 진화해 나가기 위해 고려하게 되면서 고민하는 지점들이 생기게 되는데 업무를 하며 만나는 용어들에 대한 설명을 친절하게 설명해 주기도 한다. 예를 들면 카오스엔지니어링, 카나리아 배포, 데이터 메시, 데이터 제품 퀀텀, 협력 퀀텀, 마이크로서비스 아키텍처로의 진화, 트리거와 저장 프로시저의 대체 등의 현실에서 마주할 수 있는 이슈들에 대해 언급한다.

이 책은 그림 4-1에서 볼 수 있는 피트니스 함수 로드맵을 통해, 애플리케이션의 다양한 측면을 점검하며 발전시켜나갈 수 있는 방법을 제시한다.

책 내용은 마이크로서비스 아키텍처와 통합에 큰 중점을 둠으로써, 엔터프라이즈 환경에서의 통신과 어플리케이션 간의 의존성 관리에 대한 실용적인 지침을 제공한다. 또한, 코드의 클래스/패키지 구조와 그에 따른 구심/원심 커플링, 임포트 지향성 등을 자세히 다루며, 개발자에게 구조적인 판단 기준을 세워준다. 제로데이 취약점과 같은 보안 이슈에 대한 점검과 부하 테스트를 통한 성능 평가, 그리고 접근성과 가용성에 대한 중요성도 강조된다. 또한, 상속 검사와 어노테이션 검사 등을 통해 코드의 순환 복잡도와 안정성을 평가하는 방법을 배울 수 있다.

카오스 엔지니어링의 원칙을 통해 시스템의 복잡성과 불확실성을 관리하는 동시에, 오픈소스 라이브러리의 적법성과 사용에 대한 주의점도 소개된다. 선행형 접근과 반응형 접근의 차이를 명확히 구분하며, 추상도와 불안정도, 그리고 주계열과의 거리에 대한 평가 기준을 배울 수 있다. 다양한 종류의 사례 연구를 통해, 실제 엔터프라이즈 환경에서의 애플리케이션 포팅 원칙과 구조 검사 방법 등이 구체적으로 어떻게 적용될 수 있는지에 대한 예시를 제공한다. 이를 통해 독자는 피트니스 함수를 효과적으로 사용하여, 진화하는 아키텍처를 구축하고 유지보수하는 방법을 배울 수 있다.

다만 이 책은 초보자가 보기에는 책의 내용이 상당히 고급 지식을 요구하기 때문에, 소프트웨어 아키텍처에 대한 기본 지식이 부족하다면 다소 어렵고 추상적일 수 있다. 또 구체적인 해결책이나 답을 제시하지 않고 방법론 위주로만 설명한다.

현재 개발, 운영하고 있는 서비스의 아키텍트를 어떻게 발전시켜나가야할지 고민이 된다면 그 키워드를 함께 고민해 볼 수 있는 책이지 않을까 싶다.

이 리뷰는 한빛미디어의 나는 리뷰어다 이벤트를 통해 책을 제공받아 작성했습니다.

 

피티니트 함수라는 개념을 도입함으로써 유동적이며 역동적인 서비스 환경을 가진 아키텍처를 구축할 수 있는 방법에대하 새로운 지평을 재시 한 지침서

모든 서비스를 개발하기 이전에 가장 중요한 일은 바로 서비스의 성격에 맞게 설계, 즉 아키텍처링을 하는 것이다.

아키텍처링은 간단히 말해 서비스 목적에 맞게 시스템 전반에 걸친 각각의 컴포넌트를 적재적소 혹은 적당한 기술을적용하여 효율적인 서비스 환경을 구축하기 위한 청사진을 그리는 작업이라 할 수 있다.

특히 아키텍처링은 근미래에 있어서 가장 중요한 프로그래밍 덕목 중에서 하나가 될 가능성이 농후한데, 왜냐하면 코딩과 같은 AI가 학습을 통해 자동화가 가능한 분야를제외하고는 유일하게 인간의 손에 의해 끝까지 이뤄지는 작업이 될 가능성이 크기 때문이다.

그만큼 아키텍처링은 프로그래머에게 있어서 중요한 능력이며 꼭 갖춰야 할 덕목으로써 입지를 다지고 있는 상태이다.

이러한 관점에서 이번에 소개하게 될 '진화적 아키텍처'는 이러한 유동적으로 변화해가는 서비스 시장에서 보다 역동적이며 확장성을 갖춘 서비스 아키텍처링에 대한 효과적인접근법을 제안했다는 점에서 그 의의가 크다 할 수 있다.

【책의 구성】 "진화적 아키텍처"의 구성은?

이 책은 총 3개의 파트로 구성되어 있으며 각 파트별 해당 파트에필요한 챕터들로 구성이 짜여있는 형태이다.

파트 1의 주제는 역학이며, 해당파트에서는 이 책에서 주장하는 피트니스 함수란 무엇인지, 그리고 배포 파이프라인의 자동화 등에 대해서설명하고 있다.

파트 2의 주제는 구조이며, 해당파트에서는 아키텍처링 관점에서의 응집도란 무엇인지 그리고 커플링이란 무엇이며 이 과정에서 어떤 것들이 안티 패턴이고 회피해야 하는지 등에 대해서설명하고 있다.

마지막 파트인 3파트에서는 아키텍처링을 진행하며 겪을 수 있는 사례와경우들에 대한 적절한 예시 그리고 저자들이 생각하는 올바른 방향에 대해서 지침을 제안하고 가이드 해줌으로써 위에서 제시한 문제들을 효과적으로 극복하고개선할 수 있는 방법에 대해서 제안하였다.

이번 포스팅에서는 파트 1 1챕터와 3챕터의 내용에 대해서 간략히 소개할 예정이다.

 

 

1 챕터(장) : 진화적 소프트웨어 아키텍처

이 챕터에서는 진화적 소프트웨어 아키텍처의 가장 기본 개념이 되는 진화란 무엇인지에 대해서 저자의 생각을 설명하고있다.

저자들이 말하는 진화적 아키텍처란

"여러 차원에 걸쳐 유도된 변화와 점진적 변화를 지원하는 .." 소프트웨어 아키텍처를 의미한다.

여기서 말하는 유도된 변화는 "아티켁처의 핵심 특성에 대한안정적 보장을 유지하는 방향으로의 아키텍처 변화"를 의미하며

점진적 변화란 소프트웨어의 점진적 빌드와 배포 방법을 의미한다.

, 유도는 원초의 해당 아키텍처가 적용되게 된 목적에 대해서 아키텍처가확장되거나 변형되어도 일관성을 유지해야 함을 의미하며

점진적 빌드와 배포 방법은 구축된 아키텍처의 지속적은 배포와 자동화된 빌드 방법 등이라 명할 수 있다.

특히 이 챕터를 읽으며 마음에 들었던 문구가 있는데 그 문구는 하기와 같다.

"분리된 시스템은 없다. 세상은연속체다. 시스템의 경계를 어떻게 그릴 것인지는 논의의 목적에 달려있다."

, 세상을 구성한 요소들 사이에 단절은 없다. 소프트웨어 역시 마찬가지다. 그러한 소프트웨어를 이루는 아키텍처도어찌 보면 당연히 단절이 있을 수 없다. 그렇기에 아키텍처링은 지속적으로 세상과 소통하며 연속적인 개체로써생성해야 한다.

 

 

3 챕터(장) : 점진적 변화 엔지니어링

이 책에서 가장 마음에 드는 점은 책의 챕터를 시작하는 부분에서 각 챕터의 주제에 해당하는 표현에 대해서 저자가직접 정의를 정리해 준다는 점이다.

"점진적"이라는단어를 읽게 되면 제일 먼저 생각나는 단어는 "서서히","조금씩 앞으로 나아가는" 따위의 생각이 드는데, 저자가 말하는 점진적이라는 표현은 서비스에 신규 기능 혹은 변화 등이 가미될 때 이에 대해서 사용자가 점진적으로적응되게 해야 한다는 것을 표현한 것이었다.

이러한 점진적인 환경을 구성하기 위해서는 자동화된 빌드와 테스트 환경, 그리고지속적인 테스트 라인 등에 대한 구축이 필요한데, 이에 대해서는 적절한 예시를 통해 저자의 주장을 뒷받침하고있다.

무엇보다 저자의 표현 중 "자동화된 검증 절차를 등에 업은개발의 자신감이야말로 온전한 소프트웨어 개발의 결정적 비결이다!"라는 표현이 있다.

아마 아직 실무에 오래 경험하지 못한 개발자의 경우, 위의 표현이크게 와닿지 않을 수 있지만, 정말로 중요한 요소 중 하나이다. 빌드, 테스트, 배포 자동화는 반드시 모든 프로젝트 초반에 적용하길 권장한다.

 

【 진화적 아키텍처를 읽고 나서 】

필자가 생각하기에 세상에 존재하는 모든 것들은 변화한다. 변화하는이유는 단순하다. 세상에 존재하는 것들은 동적이며 가만히 그 자리에만 머무는 생명은 없기 때문이다.

이러한 맥으로 보았을 때, 소프트웨어도 하나의 생명체라 할 수 있다. 최초의 출현은 누군가의 필요에 의해 탄생하였지만, 그 필요 역시언제든 변화할 수 있기 마련이다. 그렇기에 소프트웨어도 그에 맞게 변화할 준비를 해야만 한다. 아니 정확히 말하면 변화해야 한다.

따라서 이러한 변화에 대한 흐름과 필요를 정확히 이해하고 이를 소프트웨어에 효율적으로 반영할 수 있는 개발자. 그런 개발자가 앞으로의 IT 시장에서 주역이 될 날이 머지않았다란생각이 부쩍 드는 요즘이다.

 

- 원문: https://velog.io/@broccolism/%EB%B3%80%ED%99%94%ED%95%98%EB%8A%94-%EC%9A%94%EA%B5%AC%EC%82%AC%ED%95%AD-%EC%9A%B0%EC%95%84%ED%95%98%EA%B2%8C-%EB%B0%9B%EC%95%84%EB%93%A4%EC%9D%B4%EA%B8%B0-%EC%A7%84%ED%99%94%EC%A0%81-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EC%84%9C%ED%8F%89

 

Author: 닐 포드, 레베카 파슨스, 패트릭 쿠아, 프라모드 사달게이 지음 / 정병열 옮김

출판사: 한빛미디어

Score /5: ⭐️⭐️⭐️⭐️⭐️

IT 업계에서 쓰이는 아키텍트 또는 아키텍처는 건축에서 가져온 용어다. 우리가 집을 지을 때 하중을 견디도록 치밀한 설계를 바탕으로 집을 짓는 것 처럼 IT 시스템 또한 치밀한 설계가 필요하다. 다만, 이런 관례 또는 선입견을 나는 가지고 있었다. 
 확정된 아키텍처는 변경할 수 없다!

 

그 선입견을 필자는 이 책에서 반대로 뒤집고 있다. 그래서 새롭게 느껴지는 용어를 가져오고 있는데 진화하는 아키텍처라는 개념을 들고 왔다.

 

매우 생소한 개념이었으며 해당 개념을 가지고 다양한 아키텍처 스타일(테스트 등)에 대한 용어를 접해볼 수 있고 생각할 거리를 던져주고 있다. 특히, 요즘 마이크로 서비스에 관심이 많은데 마이크로서비스 아키텍처에서 아키텍처 관점의 여러 고려 사항을 알려주는 부분이 개인적으로는 만족도가 높았다.

 

이 책은 개인적으로 생각하는 오렐리 책의 특성을 그대로 가지고 있다. 한번에 바로 이해하긴 어려운 책이다. 적어도 중급자 수준의 아키텍트나 엔지니어가 읽으면 즉시 도움이 되고 초급 수준의 분들에게는 지침서의 역할(용어에 대한 공부 및 관점에 대한 공부)을 톡톡히 할 수 있는 책이다.

 

이런 어려운 책을 읽을 때 개인적인 팁을 주자면, 당장 이해되지 않는것에 고민하지 말고 넘어가는 것이다. 이 책을 읽으면서 나도 어려운 용어를 많이 겪었으며, 당장 이해가 되지 않는 내용도 많았다. 한번에 모든것을 이해할 필요는 없다. 전체적인 얼개를 파악한 후 필요한 부분을 하나씩 뽑아서 보아도 나쁘지 않은 책이다.

 

또한, 한번만 읽기에는 너무 아까운 책이라고 생각한다. '독서백편 의자현'이라는 말처럼 여러번 읽고 내용을 곱씹어 보면 어느새 발전한 관점으로 아키텍처를 바라보는 IT 엔지니어가 되어 있지 않을까 조심스레 생각하며,

이 책을 모든 IT 엔지니어 분들에게 추천한다.

 

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

소프트웨어 개발 생태계는 새로운 혁신이나 관행이 등장해 현재 상태를 뒤흔들고 새로운 균형을 잡도록 종용한다.

 

 

위 내용은 1장에 등장한 내용으로 서비스를 운영한 사람이라면 정말 공감할 내용이다. 2010년대 프로젝트를 20년도에 운영적이 있었는데, 그때는 그게 최선의 선택이어서 했던것이겠지만, 10년 뒤 나에게 왔을 때에는 언제 무너져도 이상하지 않은 상태였다.

이 책에서는 아키텍처 피트니스 함수를 사용하여 끊임없이 변화하는 상황에 대응하는 방법을 알려준다. 피트니스 함수를 통해 아키텍처의 상황을 감시하고 개선하며, 요즘 유행하는 msa와 관련한 방식도 설명한다.

책의 정말 좋았던 점은 실생활과 연관하여 예시를 들어준다는 점이다. 기술적인 언어로 예시를 들면 더 머리가 아픈 법이지만, 실생활에 일어날 법한 언어로 예를 들어주어 이해하기 편했다. 아키텍처에 관심이 많은 사람이라면 가볍게 읽어 보기 좋은 책인 것 같다.

"진화적 아키텍처"은 현대 소프트웨어 개발의 핵심 주제를 다루는 혁신적인 책입니다. 이 책은 어려움을 무릅쓰고 읽어내기 어렵지만, 그만큼 가치 있는 내용을 제공합니다. 아키텍처 설계의 중요성을 강조하며, 변화에 대응하고 유연하게 시스템을 구축하는 방법을 상세하게 설명합니다.

 

특히, 피트니스 함수와 같은 개념을 통해 아키텍처의 건강 상태를 감지하고 개선하는 과정을 다루며, 클라우드 네이티브 환경에서의 적용 방법도 소개합니다. 이 책은 아키텍트, 개발자, 데브옵스 엔지니어 등 소프트웨어 개발과 관련된 분야에서 꼭 필요한 지식을 제공하며, 미래에 대비하는 아키텍처 설계에 도움이 될 것입니다.

 

아직 이해가 어렵다면, 연차가 쌓이고 더 많은 경험을 쌓은 후에 다시 읽어보는 것을 고려해보세요. 이 책은 현대 소프트웨어 개발 환경에서의 아키텍처 설계와 발전에 대한 중요한 지침을 제시하고 있으므로, 업무에서 큰 도움이 될 것입니다.

 

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

"진화적 아키텍처: 소프트웨어 개발의 혁신을 이끄는 방법"은 현대 소프트웨어 개발의 중요한 주제인 아키텍처에 대한 혁신적인 접근법을 제시하는 책입니다. 마틴 파울러(Martin Fowler)와 다른 세계적으로 인정받은 전문가들의 고찰과 노하우가 담긴 이 책은 소프트웨어 개발 생태계에 혁신을 가져올 독특한 접근법을 제시합니다.


진화적 아키텍처의 개념

"진화적 아키텍처"란 끊임없는 변화에 유연하게 적응하기 위한 아키텍처를 의미합니다. 이 책은 변화를 예측하기 어렵다고 하더라도 변화를 수용하고 대응하는 방법을 제시합니다. 특히, "피트니스 함수"를 도입하여 시스템의 건강 상태를 감지하고 개선하는 과정을 통해 소프트웨어의 진화를 명확하게 파악할 수 있도록 합니다.


소프트웨어 아키텍처의 중요성

현대 소프트웨어 개발에서 아키텍처 설계의 중요성은 더욱 높아지고 있습니다. 이 책은 아키텍처 설계가 소프트웨어 개발의 핵심 부분이며, 개발자와 아키텍트 모두에게 필수적인 역량임을 강조합니다. 빠르게 변화하는 비즈니스 환경에 적응하고 대응하기 위해서는 "진화적 아키텍처"에 대한 이해가 필수입니다.


진화적 아키텍처를 통한 유연성 확보

이 책은 어떻게 소프트웨어 아키텍처를 유연하게 만들어 비즈니스와 기술 변화에 민첩하게 대응할 수 있는지에 대한 해답을 제시합니다. 클라우드 네이티브 환경을 포함한 다양한 시나리오에 적용 가능한 실용적인 가이드라인을 제공하며, 피트니스 함수를 통한 아키텍처 특성의 유지와 소프트웨어의 진화를 설명합니다.


책의 가치와 추천

"진화적 아키텍처"은 전 세계적으로 인정받은 전문가들의 노하우와 경험이 담긴 책으로, 아키텍처 관련 주제를 다루는데 필수적인 자료입니다. 비즈니스와 기술 변화에 유연하게 대응하며 소프트웨어 개발의 새로운 지평을 열고자 하는 개발자, 아키텍트, 그리고 소프트웨어 리더들에게 강력하게 추천합니다. 이 책을 통해 혁신적인 아키텍처 설계와 개발의 핵심 원리를 익히고, 미래에 대비하는 소프트웨어 개발의 새로운 지식을 습득할 수 있을 것입니다.


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


[도서 소개]

새로운 시대, 애자일을 넘어선 진화적 소프트웨어 개발의 부상

소프트웨어 개발 생태계에 혁신을 가져올 진화적 아키텍처


- 소프트웨어의 거장이자 『리팩터링』 저자 ‘마틴 파울러’ 추천 도서

- 미래에 대응하는 소프트웨어 개발의 새로운 지평을 열게 될 진화적 아키텍처

- 전 세계적으로 인정받은 전문가들의 노하우가 담긴 책!


진화적 아키텍처란 끊임없는 변화에 유연하게 적응하기 위한 ‘가드레일이 내장된’ 아키텍처를 의미한다. 변화는 예측하기 어렵지만 변화 자체를 기정사실화하면 사전에 피트니스 함수를 도입해 감지하고 대응할 수 있다. 이러한 피드백을 통해 시스템은 점진적으로 발전하며 그 과정은 마치 소스코드 히스토리처럼 명확하게 파악할 수 있게 된다. 결국, 진화적 아키텍처를 구축하면 향후 대대적인 재구축의 필요성은 줄어들고 그에 따른 비용과 노력을 절감할 수 있다.


현대의 소프트웨어 개발에서 아키텍처 설계가 차지하는 비중과 중요도는 끝없이 높아지고 있다. 소프트웨어의 설계는 우리가 ‘소프트웨어 개발’이라 여기는 거의 모든 것에 코딩을 더하는 작업이나 다름없다. 그렇기에 아키텍처를 이해하는 능력은 아키텍트뿐만 아니라, 개발자에게도 핵심적인 역량이 되어야 한다. 게다가 빠르게 변화하는 환경에 적응하고 대처하기 위해서는 ‘진화적 아키텍처'에 대한 이해가 모든 소프트웨어 리더의 필수 역량이기도 하다.


이처럼 급변하는 비즈니스를 감당하는 소프트웨어 아키텍처의 유연성을 어떻게 확보할 수 있는지는 중요한 고민이다. 어떻게 하면 소프트웨어 아키텍처를 유연하게 만들어 비즈니스와 기술 변화의 속도에 민첩하게 대응할 수 있을까? 이 책은 이런 핵심 질문들에 대한 해답을 제시한다. 따라서 이 책을 통해 비즈니스와 기술 변화에 유연하게 대응할 수 있는 아키텍처를 구축하는 방법을 습득하길 바란다.



[주요 내용]

- 고수준 아키텍처 설계에 대한 설명은 물론, 피트니스 함수, 진화적 데이터까지 대폭 수록

- 진화적 아키텍처 설계의 이해를 높여주는 직관적인 그림 제공

- 친절하고 상세한 저자의 설명과 원서에 없는 역자의 주석 추가 제공


[서평]

"진화적 아키텍처”로 기존 서비스를 유지한 채 점진적으로 서비스를 개선해보자는 진화적 아키텍처의 핵심 원칙과 그 구현 방법에 대해 상세하게 다루고 있습니다. 이 책은 현재 소프트웨어 아키텍처의 주요 흐름인 마이크로서비스 아키텍처(MSA)와 클라우드 네이티브 환경에서의 진화적 아키텍처 활용에 대한 필수 가이드라고 할 수 있습니다.


진화적 아키텍처는 빠르게 변화하는 비즈니스 요구사항에 유연하게 대응할 수 있는 소프트웨어 설계 방식입니다. 이 책에서는 이러한 진화적 아키텍처의 핵심 원칙을 명확하게 제시하며, 실제 업무에서 어떻게 효율성을 높일 수 있는지에 대한 실질적인 지침을 제공합니다.


특별히 주목할 만한 부분은 피트니스 함수를 사용하여 소프트웨어가 지속적으로 발전하면서도 그 기본 구조를 유지하는 방법입니다. 피트니스 함수는 애플리케이션의 성능, 안정성 등 다양한 요소를 측정하는 지료로서, 이를 통해 시간이 지나도 변하지 않아야 하는 핵심 요소들을 확인하고 보호할 수 있습니다.


그러나, 이 책은 단순한 가이드북 그 이상입니다. 여기에는 전문가들의 경험이 담겨 있으며, 그들은 독자가 직면할 수 있는 과제와 문제 해결 전략에 대해 깊이있게 공유합니다. 따라서 독자는 본인의 상황과 요구사항에 맞추어 좀 더 실질적인 해결책을 찾아낼 수 있습니다.


결론적으로 "진화적 아키텍처”로 기존 서비스를 유지한 채 점진적으로 서비스를 개선해보자는 진화적 아키텍처의 이론과 실제 사례를 결합하여, 이를 실전에 적용하려는 아키텍트들에게 귀중한 지침을 제공하는 독특한 자료입니다. 그것은 변화하는 비즈니스 환경에서 끊임없이 발전하고 적응해야 하는 모든 소프트웨어 개발자와 아키텍트에게 필독서로 추천할 수 있습니다.

 

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

끊임없이 변화하는 기술과 비즈니스 환경에 대응하기 위해서는 기존의 아키텍처 설계 방법론으로는 한계에 부딪히는 경우가 있다.

이러한 변화에 대응하기 위해서는 변화 자체를 받아들이고, 적응할 수 있는 아키텍처 구축을 해야한다. 

 

예를 들면, 기존에 모놀리식 아키텍처 서비스들이 서비스가 커지면서 마이크로서비스로 전환을 하는 경우처럼 말이다. 

 

그래서 이 책은 이러한 변화에 대응하기 위한 새로운 아키텍처 설계방법론을 제시해주는 책이다. 변화 자체를 기정사실화하고

피트니스 함수를 도입하여 변화에 유연하게 적응할 수 있는 아키텍처를 구축해야된다고 한다. 

 

이런 진화적 아키텍처는 다음과 같은 특징을 같는다고 한다.

  • 변화에 적응할 수 있는 유연한 구조
  • 변화를 수용하기 위한 자동화된 거버넌스
  • 변화에 대한 피드백을 반영하는 점진적인 발전

 

아마존, 넷플릭스, 구글 등 우리가 알만한 세계적인 기업들은 새로운 기능을 출시하고, 새로운 기술을 도입하기 위해 이런 아키텍처를

적용하고 있다니 좋은 예가 될 것 같다. 

 

이론적인 내용이 많지만 앞으로 어떤 아키텍처가 필요할지 모르므로 개념을 알아두기에 좋은 책인 것 같다.

물론 내용은 조금 어렵다. 2-3번 읽어봐야 다 이해될 것 같지만, AA가 아니더라도 개발자로써 전반적인 아키텍처 흐름과 

방법론에 대한 내용을 알 수 있다. 

 

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

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

개요

  • 일단, 어렵다. 어려운 책이다. 무작정 읽어내려간 책이지만, 아직 역량이 부족한 취업 준비생의 입장에서는 이해가 잘 되지 않는 부분도 많았다.
  • 일을 시작하고, 연차가 쌓이고 다시 한번 봐야될 책이라고 생각한다.

총평

  • 물론 어려운 책이어서 100% 이해하지는 못했지만, 얻어갈 것이 없던 것도 아니었다.
  • 지속적으로 발전하고 있는 현 상황에서 아키텍처의 중요성을 강조하며, 확장성을 고려한 아키텍처를 설계하는 방안에 대해 설명하고 있다.
  • 예제에서 그치는 것이 아닌, 진화적 아키텍처에 대한 개념과 구현, 어떠한 방향으로 나아가야 하는지에 대해 자세하게 설명하고 있다. 따라서, 아키텍트, 개발자, 데브옵스 엔지니어 등 소프트웨어에 관련된 분야 종사자에게 다양한 기술과 방법에 대해 설명하며, 도움이 될 것이라고 생각한다.
 

진화적 아키텍처

진화란 무엇인가?

환경의 끊임없는 변화에 유연하게 적응한다는 것이다.

시스템적 진화란 무엇일까?

시스템을 사용하는 사람들의 문화 관습 사용 습관이 변화하는 것을 유기적으로 손쉽게 반영할 수 있는 프로세스나 아키텍처를 준용하는 것이다.

서비스의 진화란 무엇인가?

사용자의 Needs에 맞추어 사용자 편의성을 극대화하고 사용자 맞춤형 UI/UX개선을 통하여 고객의 접점을 늘리고 Trigger Point를 확대하는 것이다.

이 책에서 바라보고자 하는 진화적 아키텍처 의 정의는 기존의 설계의 패러다임을 피트니스 함수와 아키텍처 거버넌스 자동화 그리고 진화적 데이터 파이프라인과 프로세스 체계를 통하여 유연하게 변화시켜보고자 하는 것이다.

변화에 대해 선대응 하여 대대적인 재구축 필요성을 줄이고 불필요한 비용의 낭비를 최소화하고자 함이다.

비용을 절감하여 비즈니스와 기술 변화의 속도에 민첩하게 대응하려면 어떻게 해야할지에 대하 아키텍처 관점으로 서술한 책이다.

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

 

저는 한빛미디어의 나는 리뷰어다라는 프로그램덕분에 본책을 본의아니게 리뷰하게 되어 너무나 감사하게 생각합니다. 진화적 아키텍쳐라는 책의 제목만 들었을때에는 뭔가 아키텍쳐에 대한 고민을 정리해서 내놓은 것이라는 생각이 가볍게 들었지만 본 책을 본격적으로 읽기 시작하면서 제가 생각하던 것 이상의 고민과 원인 그리고 그에 대한 해결방안에 대한 의견을 잘 정리해 놓은 책이라는 생각이 들었습니다.
본 책을 리뷰하는 기간이 마침 케냐 출장 기간과 겹치면서 상당히 긴 시간동안의 비행기안에서 본책을 일독을 할 정도로 책이 너무 재미있고 흥미로웠습니다.

진화적 아키텍쳐의 목표는 오늘날의 역동적인 소프트웨어 환경에 맞는 진화 가능한 시스템 구축의 가치와 구현 방법을 보여주는 것입니다. 본 서적은 -성(-ilities)라고 하는 특성을 식별한 다음 기술 구현이나 데이터 스토리지와 같은 차원에서 -성(-ilities)라고 식별하고 해당 특성들간의 균형을 맞추어서 개별 서비스들이 가지는 특성을 최대한 살리면서도 추후 변화 대응에 충분한 유연성을 가진 진화적인 아키텍쳐로 나아가는 방법들에 관하여 상세하게 설명합니다. 특히 진화적인 아키텍쳐로 나아가기 위한 실천방법으로 피트니스 함수를 소개하며 해당 함수와 배포 파이프라인의 통합을 통하여 유연하면서도 미래의 변화에 적응가능한 서비스 아키텍쳐 구현에 관하여 다양한 예를 통하여 설명하고 있습니다.
 
여기서 피트니스함수는 개발자가 특정 알고리즘을 설계하여 의도하는 결과를 얻으려면 결과물의 품질을 객관적으로 측정가능하면서 동시에 통제할 수 있는 방법이 필요합니다. 이처럼 특정 결과물이 목표에 얼마나 근접한지를 나타내는 함수를 피트니스 함수(fitness function)이라고 합니다. 특히 아키텍쳐 피트니스 함수는 어떤 아키텍처 특성(또는 그런 특성들의 조합)의 객관적인 무결성을 평가하는 모든 메커니즘을 의미합니다.

또한 거버넌스 자동화를 통한 클라우드 전반의 공통된 경험을 설정하고 모든 지리적 위치와 가상위치에서 시행 일정을 수립하고 리소스 관리 자동화를 통하여 사용자의 작업 방식을 규제하고 시스템의 일관된 성능을 촉진하는 방안에 관하여 살펴보고 있습니다.

상기의 짧은 리뷰에서 알 수 있듯이 본 도서는 숙련된 IT엔지니어가 개발자가 새로이 출시되거나 혹은 기존 서비스에 대한 유지보수및 관리에 있어서 클라우드 환경을 최대한 활용하기 위한 방법론을 피트니스 함수와 거버넌스 자동화라는 주요 키워드를 통하여 상세하게 잘 설명하고 있습니다.

변화가 빠른 IT환경에서 특히 클라우드 기반의 서비스 관리에 있어서 더 나은 방법론을 고민해 오던 분들에게 강력하게 추천드립니다.

 

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

 

[이 책은...]
아키텍처라는 것은 그 단어가 가진 '설계'라는 뜻만큼이나 굉장히 여러면에서 접근이 가능한 개념임에는 틀림이 없습니다.
이 책은 완전히 기술적인 면에서 접근하기보단 기술은 보조적인 도구로서의 개념이고, 아키텍트의 측량가능한 목표로서 재시할 수 있는 피트니스 함수라는 개념을 중심으로 현실세계에서 부딪힐 수 있는 문제에 대하여 시작부터 끝까지 풀어냅니다.
다르게 말하면 온전히 기술중심이 아니기 때문에 어떻게 보면 실무와 동떨어져있는 것이 아니냐 라고 할 수 있겠지만 읽다보면 아키텍트의 위치 혹은 그에 해당하는 레벨에서 생각하는 방법, 혹은 그 관점 자체에 수정을 가할만한 내용으로 저에겐 받아들여 졌습니다.
예를 들어 많은 개발자들이 그러하듯 저도 'TDD가 분명 좋아보이지만 현실에서 적용하기엔 너무 어려운데..'라는 말에 대하여 '당신은 아직 소프트웨어 개발을 제조업 관점에서 바라보고 그렇게 하고 있다'라는 것은 꽤나 큰 충격이었습니다. 생각해보니 워터폴 방식의 업무방식은 멀리하면서 결국 코드레벨에서는 제조업에서 하듯 워터폴과 다름없는 방법으로 하고 있다라는 것을 세삼스레 깨달았기 때문이죠.
그렇다고 해서 기술적 솔루션이 전혀 없는 것은 아닙니다. 다만 그 깊이가 아주 깊지는 않고 가볍게 소개하고 넘어가는 수준이죠. 그렇지만 키워드를 얻는 정도로는 충분히 가치 있는 내용들이고 무엇보다도 기술적 설명보다도 훨씬 가치가 있는 다른 관점에서의 설명이 이 책의 좋은 점이라고 생각합니다.
(기술적인 솔루션 관점에서의 접근은 [소프트웨어 아키텍처: The Hard Parts]라는 책을 추천드립니다.)


[이런 분에게 추천해요]
단순히 코드적인 관점에서의 설계에 포커스가 있는 책이 아니고 넓은 관점에서 아키텍처를 기술하고 있기 때문에
관련 업무의 팀장 혹은 CTO를 하고 계신분들에게 강력하게 추천드립니다.

[마치며...]
개인적으로 가장 큰 충격을 받은 문구를 인용하며 후기를 마칩니다.
"소프트웨어 아키텍처 패턴에 모범 사례는 존재하지 않는다. 모범 사례가 존재한다는 것은 특정상황에서 아키텍트가 자기 두뇌로 사고하는 것을 포기해버렸다는 뜻이다."

소프트웨어 아키텍처 101, 소프트웨어 아키텍처 The Hard Parts 책에 이어서 아키텍터라면 반드시 읽어봐야될 재미있는 내용들로 가득하다

 

현대에는 진화적 아키텍처를 왜 설계 해야되는지 

진화적 아키텍처는 현대에는 왜 가능한건지 

진화적 아키텍처를 설계할때 고려해야될 부분은 어떤것들이 있는지 

진화적 아키텍처로 설계하면 어떤 부분들이 좋은지 

상세한 사례를 들어 구체적으로 설명하고 있으므로 쉽고 빠르게 이해할 수 있고 아키텍터로써 한층 더 성장할 수있는 발판을 마련할 수 있을 것이다

진화적 아키텍처_02.png

 

소프트웨어 개발 생태계가 지속적으로 변화하고 발전하는데, 이러한 변화는 프로그래밍 플랫폼, 개발언어, 운영환경, 지속성 등 여러 측면에서 발생하고 있습니다. 이러한 변화는 예측할수 없지만, 변화가 불가피하다는 것은 분명합니다. 따라서 우리는 기술적인 변화가 발생할 것을 예상하고 시스템을 설계해야 하는데 노력하고 있습니다. 이를 위해 기업 아키텍트와 개발자들은 장기 적인 정직인 계획을 세웠습니다. 그러나 현재는 이전과 달리 DevOps도구가 머신 프로비저닝을 자동화 하여 운영적 비용도 완전히 사라졌으며, 장기 계획을 세우는 것이 더이 상 필요하지 않게 되었습니다.

 

이 책에서는 이러한 변화에 대응하기 위한 진화적 아키텍처가 무엇인지를 설명하고 현재의 아키텍처 상황과 어떻게 변화를 해야하는지를 안내해주고 있습니다. 그리고 시스템 품질을 측정하고 유지하기 위한 피트니스 함수를 도입하는 방법을 소개하고 있으며, 이러한 것은 시스템 변화에 유연하게 대응할 수 있는 진화적 아키텍처의 개념과 원칙에 대해서 이해를 하는데 도움을 주며, 후반부에서는 실제로 어떻게 적용을 했는지를 실제 사례를 중심으로 설명을 해주고 있습니다.

 

 

 

진화적 아키텍처_04.png

 

진화적 아키텍처란 끊임없는 변화에 유연하게 적응하기 위한 '가드레일이 내장된' 아키텍처를 의미합니다. 변화는 예측하기 어렵지만 변화 자체를 기정사실화하면 사전에 피트니스 함수를 도입해 감지하고 대응할수 있습니다. 피트니스 함수는 소프트웨어 시스템의 상태를 측정하고 평가하는 함수로 소프트웨어 시스템의 성능, 안정성, 보안 등의 요소를 모니터링하고, 시스템이 정상적인 동작을 하는지 여부를 판단할수 있도록 구현할수 있습니다.

 

이 책에서는 진화 가능한 소프트웨어를 구축하는 두가지 근본 원리로 애자일 소프트웨어 운동에서 확립된 효과적인 엔지니어링 관행과 변화와 거버넌스를 촉진하는 아키텍처 구조에 대해서 설명을 하고 있는데요, 이는 지속적인 통합, 자동화된 테스트, 소규모 개발, 지속적인 리팩터링, 단순성 추구, 사용자 중심 접근, 시각화와 커뮤니케이션 이며, 변화에 대응할수 있는 유연하고 협력적인 개발 조성에 기여하며, 시스템 요구사항이나 환경이 변화할 때 유연하게 대응하고, 시스템의 품질이나 성능을 관리하고 향상시키는 구조입니다.

 

 

 

진화적 아키텍처_06.png

 

이 책은 진화적 아키텍처에 대한 개념과 이를 구현하는 방법을 이해하고, 이를 실제 프로젝트에 적용할 수 있는 소프트웨어 개발자, 시스템 설계자, 소프트웨어 아키텍트, 소프트웨어 개발 관련 종사자에게 실질적으로 적용할수 있는 다양한 기술과 방법을 소개하고 있으며, 진화적 아키텍처를 구현하기 위한 다양한 사례연구를 통해서 소개하고 있어서 많은 도움이 되나, 책의 내용 어려운 내용들을 다루고 있기 때문에, 주니어 개발자분들에게는 다소 어려울수 있다.

 

참고로 이 책은 따로 언급이 되어 있지는 않으나 Building Evolutionary Architectures 2nd 에디션으로 기존의 첫번째 에디션에서와 큰 차이는 없어 보이며, 5장에 진화하는 아키텍처 토폴로지 부분만 추가된듯 합니다.

 

 

 

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

 

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
진화적 아키텍처
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
진화적 아키텍처
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
진화적 아키텍처
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0