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

한빛미디어

독자리뷰

유연한 아키텍처링에 대한 접근론을 제시한 책

jrcfore***

|

2023-09-24

진화적 아키텍처

새로운 시대, 애자일을 넘어선 진화적 소프트웨어 개발의 부상. 소프트웨어 개발 생태계에 혁신을 가져올 진화적 아키텍처

  • 저자 : 닐 포드 , 레베카 파슨스 , 패트릭 쿠아
  • 번역 : 정병열
  • 출간 : 2023-08-31

 

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

​

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

​

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

​

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

​

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

​

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

​

​

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

​

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

​

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

​

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

​

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

​

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

 

 

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

​

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

​

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

​

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

​

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

​

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

​

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

​

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

​

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

​

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

​

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

 

 

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

​

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

​

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

​

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

​

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

​

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

​

 

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

​

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

​

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

​

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

 

닫기

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