모종닷컴

[클린 아키텍처] 챕터 1 본문

독서나 해볼까

[클린 아키텍처] 챕터 1

모종 2022. 12. 11. 22:29
반응형

클린 아키텍처 - 소프트웨어 구조와 설계의 원칙 (로버트 C. 마틴)

많은 개발자 분들께 책을 추천해달라 하면 클린 아키텍처는 항상 빠짐없이 나오는 책인 것 같습니다. 너무 늦은 감이 있지만 한번 지긋이 읽어보고 있습니다. 아직 3분의 1도 다 읽어보지는 못했지만 책이 재미가 있습니다. 뭔가 술술 읽힌다기보다는 생각할 포인트들이 많아서 고민을 많이 하게 되는데 그런 의미에서 참 재밌는 책인 것 같습니다. 생각날 때마다 이렇게 다시 한번 읽어보면서 생각을 정리해보려고 합니다.

설계와 아키텍처란?

설계와 아키텍처 둘 사이에는 차이가 없다. 흔히 아키텍처는 저수준의 세부사항과는 분리된 고수준의 무언가를 가리킬 때 흔히 사용되고, 설계는 저수준의 구조 또는 결정사항 등을 의미할 때가 많다. 하지만 아키텍트가 실제로 하는 일을 보면 이러한 구분은 무의미하다.

책에서 집을 설계하는 아키텍트를 예시로 설명을 한다. 집 설계에 있어 고수준의 구조란 아마 집의 형태, 외관, 입면도, 공간, 방 배치가 포함될 것이고, 저수준의 세부사항이라 하면 콘센트, 전등 스위치, 보일러 등의 세부사항들일 것이다. 아키텍트의 설계도를 보면 이 고수준의 구조와 저수준의 세부사항 모두 포함이 되어있다. 다시 말해, 모든 고수준의 결정사항을 지탱하는 모든 세부사항을 자세하게 확인할 수 있으며, 이러한 것들이 모두 설계의 구성요소가 된다.

소프트웨어의 설계도 위와 같다. 저수준의 세부사항(=설계)과 고수준의 구조(=아키텍처)는 모두 소프트웨어 전체 설계의 구성요소다.

소프트웨어의 두 가지 가치

소프트웨어란 Soft (부드러운)+ Ware(제품, =production(상품))의 합성어이다. “기계의 행위를 쉽게 변경할 수 있도록 부드러워야 하는 제품”이라 이해하였다. 그렇다면 여기서 프로그래머는 2가지에 집중을 해야 한다. 행위와 아키텍처(구조)이다.

행위

이해관계자는 기계가 수익을 창충하거나 비용을 절약하도록 만들기 위해 기능 명세서나 요구사항 문서를 만든다. 프로그래머는 이러한 요구 사항 문서 사항들을 기계에 구체화할 수 있도록 돕는다. 대부분의 프로그래머는 이러한 활동이 자신이 해야 할 일의 전부라고 생각하며 구현하는 것 자체에만 중점을 둔다.

아키텍처

프로그래머는 상품을 부드럽게 만들어야 하는 책임도 있기 때문에 아키텍처(구조)에 대해서도 신경을 써야 한다. 언제든 이해관계자가 기능에 대한 생각을 바꾸면 이 변경사항을 간단하고 쉽게 적용할 수 있어야 하기 때문이다.

개인적인 해석을 덧붙여 얘기하자면 책에서는 이런 말을 하고 있는 것 같다

“만약 이해관계자가 변경사항을 제시했을 때 복잡한 퍼즐 조각을 맞추라는 지시처럼 느껴진다면 이는 소프트웨어의 가치 중 ‘행위’에만 집중한 결과이다”

행위와 아키텍처 중 어느 것의 가치가 더 높은가?

“소프트웨어 시스템이 동작하도록 만드는 것이 더 중요한가? 소프트웨어 시스템을 더 쉽게 변경할 수 있도록 하는 것이 중요한가?”

책에서는 “변경이 불가능하지만 완벽하게 동작하는 프로그램” , “변경이 가능하지만 제대로 동작하지 않는 프로그램”을 예시로 들며 얘기했었는데 뭔가 밸런스 게임 같아서 재밌게 읽었습니다. 그런데 만약 극단적인 상황이 아니고 5.1, 4.9의 가치를 두어야 한다 했다면 저는 “정확하게 동작”하는 것에 집중했을 것 같긴 합니다.

아이젠하워 매트릭스

아이젠하워 매트릭스

아이젠하워의 4가지의 업무 유형에 대해서 아래와 같이 우선순위를 매겼다.

  1. 중요함 / 긴급함
  2. 중요함 / 긴급하지 않음
  3. 중요하지 않음 / 긴급함
  4. 중요하지 않음 / 긴급하지 않음

책에서는 소프트웨어의 “행위”와 “아키텍처”를 아이젠 하워의 매트릭스의 “중요함”과 “긴급함”으로 빗대어 표현했으며 아키텍처는 “중요한 일”, 행위는 “긴급한 일”이라고 했다.

그리고 대부분의 업무관리자나 개발자는 업무를 수행할 때 행위에만 집중하므로 3순위에 해당하는 업무를 1순위로 생각하고 있다고 얘기한다. 그래서 개발할 때는 아키텍처는 중요한 일이며, 행위에만 집중할게 아니라 아키텍처에도 고민을 해야 한다라는 얘기를 하고 싶은 것 같다.

설득 과정에 아이젠하워 매트릭스를 끼워놓은 게 잘 이해가 가지 않지만 결국 행위와 아키텍처 두 가지를 고려해야 1순위에 해당하는 작업을 할 수 있다는 말이라고 이해하고 넘어가야겠다.

반응형

'독서나 해볼까' 카테고리의 다른 글

카프카 책 추천  (0) 2023.10.14
[클린 아키텍처] 7장 ~ 11장  (2) 2023.01.08
[클린 아키텍처] 5장 ~ 6장  (0) 2022.12.28
[클린 아키텍처] 3장 ~ 4장  (0) 2022.12.17