[소프트웨어 아키텍처 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분 규칙은 하루가 시작될 때 가장 먼저 실천하는 게 좋다
이번 리뷰를 하며 모르는게 여전히 너무 많다라는 것을 다시금 깨닫게 되었다. 가야할 길이 멀고 많이 남은 것 같긴 하지만 가늠하기 어려울만큼 많이 남은 것 같아서 아마도 평생을 배우다 죽을 것 같다는 생각이 들기도 했다. 다만 그 과정에서 크고 작은 성취와 성장을 누리는 개발자가 되어보아야겠다라는 생각을 할 수 있는 귀중한 시간이었다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
'항해 > 독서' 카테고리의 다른 글
[식량위기 대한민국] (0) | 2022.10.19 |
---|---|
[파이썬을 활용한 베이지안 통계] (0) | 2022.07.24 |
[데이터 익명화를 위한 파이프 라인] (0) | 2022.05.29 |
[내 인생 5년 후] (0) | 2022.05.24 |
[ELIXIR 처음 배우는 엘릭서 프로그래밍] (0) | 2022.04.24 |