본문 바로가기
항해/독서

[소프트웨어 아키텍처 101]

by ggoboogi_house 2022. 6. 26.
반응형

[소프트웨어 아키텍처 101]

제목 : 소프트웨어 아키텍처 101(Fundamentals of Software Archtecture)
초판 2쇄 발행 : 2022년 02월 08일
지은이 : 마크 리처즈, 닐 포드
옮긴이 : 이일웅
출판사 : 한빛미디어


 

  SW공부를 하고 있는 요즈음, 이런저런 알고리즘들 뿐만 아니라 SW 설계를 담당하는 아키텍트에 대한 내용이 궁금해서 리뷰하게 되었다. 막상 책을 받으니... 대학 전공서적으로 해도 될만큼 두껍고 내용도 상세하였다. 챕터가 무려 24개나...

  이 책은 한달봐서는 제대로 리뷰를 할 수 없을 것 같았다. 그리고 실제로 약 3주간 살펴보았지만 진도가 많이 나가지도 못했다. 하지만 전체적으로 훑어보면서 내가 아는 것과 모르는 것들의 키워드들을 정리해볼 수 있었다. 이 책은 사전처럼 곁에 두고 아키텍트 학습을 준비하는 동안 꺼내보면서 학습할때 유용할 것 같다. 

 

  몇몇 정리해보고 싶은 키워드들과 내용들을 작성해보면 아래와 같다.

- "아키텍처는 중요한 것들에 관한 것이다. 그게 무엇이든 말이다. (Ralph Johnson)"

(아키텍트에 대한 요구사항 8가지) (pg 33-34)

- 아키텍처 결정을 내린다.

- 아키텍처를 지속적으로 분석한다.

- 최신 트렌드를 계속 유지한다.

- 아키텍처 결정의 컴플라이언스를 보장한다.

- 다양한 기술과 경험에 노출된다.

- 비지니스 도메인 지식을 보유한다.

- 대인 관계 기술이 뛰어나다.

- 정치를 이해하고 처세를 잘한다.

 

(도널드 럼즈펠드, 전 미국 국방부 장관의 말 중)

'알려진 기지의 것들(known knowns)' , 즉 우리가 알고 있다는 사실을 알고 있는 것들입니다. 그리고 '알려진 미지의 것들(known unknowns)', 즉 우리가 모르는 뭔가가 있다는 사실을 알고 있는 것들입니다. 하지만 여기서 하나 더, '알려지지 않은 미지의 것들(unknown unknowns)' 도 있습니다. 우리가 모른다는 사실조차 알지 못하는 것들이죠.

  : 이 말이 참 인상깊었다. 내가 아는 것, 모르는 것만 생각해보았는데, 모른다는 것 조차도 모르는 것들이 있다는 것에 대해서는 깊이 생각해보지 못했던 것 같다.

이 책에서는 '내가 알고 있는 것'을 [기술 깊이]로 '내가 모른다는 사실을 아는 것' 까지를 [기술 폭]으로 설명하였다. 아키텍트에게는 깊이보다 폭이 더 중요하다는 설명과 함께.

 

(pg 47) "소프트웨어 아키텍처의 모든 것은 다 트레이드오프다." (소프트웨어 아키텍처 제1법칙)

(pg 48) " '어떻게'보다 '왜'가 더 중요하다. " (소프트웨어 아키텍처 제 2법칙)

 

(몰랐던 용어들)

- LCOM(Lack of Cohesion in Methods) : 메서드의 응집 결여도

- 추상도와 불안정도

- 커네이선스(connascence) : "두 컴포넌트 중 한쪽이 변경될 경우 다른 쪽도 변경해야 전체 시스템의 정합성이 맞는다면 이들은 커네이선르를 갖고 있는 것이다.(밀러 페이지-존스)

- CC(Cyclomatic Complexity) : 순환 복잡도

- 아키텍처 퀀텀 : 높은 기능 응집도(high functional cohesion)와 동기적 커네이선스(synchronous connascence)를 가진, 독립적으로 배포 가능한(independently deployable) 아티팩트 (pg 133)

- 아키텍처 결정 레코드(Architecture Decision Record, ADR)

 

(모놀리식 대 분산 아키텍처) (pg 170~171)

<모놀리식>

- 레이어드 아키텍처

- 파이프라인 아키텍처

- 마이크로커널 아키텍처

<분산형>

- 서비스 기반 아키텍처

- 이벤트 기반 아키텍처

- 공간 기반 아키텍처

- 서비스 지향 아키텍처

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

 

(분산 아키텍처의 8가지 오류)

- 네트워크는 믿을 수 있다

- 레이턴시는 0이다

- 대역폭은 무한하다

- 네트워크는 안전하다

- 토폴로지는 절대 안 바뀐다

- 관리자는 한 사람뿐이다

- 운송비는 0이다

- 네트워크는 균일하다

 

"상황을 더 잘 이애하기 위해 문법과 유행어(buzzword)를 사용하세요" (pg 418)

 

(나인(9) 가용성 중)

'파이브 나인스'는 연중 다운타임이 5분 35초 이내 또는 비계획 다운타임이 하루 1초 이내인 가용성

 

(20분 규칙) (pg 438~439)

- 아키텍트로서 커리어를 유지하기 위해 새로운 것을 배우거나 특정 주제를 깊이 파고드는 시간을 매일 최소 20분은 할애하라는 규칙

- 20분 규칙은 하루가 시작될 때 가장 먼저 실천하는 게 좋다

 

 

이번 리뷰를 하며 모르는게 여전히 너무 많다라는 것을 다시금 깨닫게 되었다. 가야할 길이 멀고 많이 남은 것 같긴 하지만 가늠하기 어려울만큼 많이 남은 것 같아서 아마도 평생을 배우다 죽을 것 같다는 생각이 들기도 했다. 다만 그 과정에서 크고 작은 성취와 성장을 누리는 개발자가 되어보아야겠다라는 생각을 할 수 있는 귀중한 시간이었다.

 

 

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

 

반응형