hongsoohyuk
홈이력서방명록프로젝트인스타그램블로그

© 2026 hongsoohyuk. All rights reserved.

GitHubLinkedIn
블로그/서론

서론

BookSoftware Architecture

마지막 수정: 2026년 2월 16일

📢

독서 동기

프론트엔드 개발자로서 나에게 익숙한 지식과 경험이 너무 미미하다고, 쉽게 대체 가능하다고 느꼈다.

마크업, API 상하차 외에 커다란 프로젝트가 어떻게 구성되고 각자의 영역이 맞물리는지 알고 싶었다.

좀 더 거시적인 인력이 되고자 가장 먼저 눈에 띄었던 책을 집어들었다.

(그리고 새 그림 그려진 오렐리 표지가 마음에 들었다.)

소프트웨어 아키텍트는 복잡한 소프트웨어를 깊게 이해해야 한다.

불완전한 정보에 근거해 수많은 트레이드오프를 결정해야 하며, 이는 생성형 AI 그 이상의 역할이다.

20세기 후반에는 MSA를 구축할 수 없었을 것이다. 아키텍트는 우리가 처한 상황의 맥락 안에서 결정을 내려야 하며, 복잡하게 변화하는 상황에서 여러 트레이드오프를 저울질하여 최적의 균형을 맞춰야 한다.

모든 아키텍처는 자신이 탄생한 환경의 영향을 받는다.

소프트웨어 아키텍처 정의

  • 아키텍처 스타일
    • 아래 두 가지를 분석하고 나면, 스타일을 결정할 수 있는 정보를 갖춘다.
    • 스타일의 선택은 주어진 요구사항들에 대한 가장 쉬운 구현 경로를 찾는 것.
  • 아키텍처 특성 — 아키텍처가 무엇을 해야 하는지
    • 시스템의 역량이다. 가용성, 신뢰성, 보안, 확장성 등
  • 논리적 컴포넌트 — 시스템의 행동 방식을 구현
    • Domain, Entity, Workflow를 형성
  • 아키텍처적 결정 — 위의 것들을 모두 정당화하는 결정
    • 레이어드 아키텍처라면, 표현 계층에서는 DB에 대한 접근을 제한해야 한다.
    • 이 같은 시스템의 constraints들, 해도 될 것과 안 되는 것에 대한 지침을 제공한다.

소프트웨어 아키텍처 법칙

1법칙 소프트웨어의 모든 것은 트레이드오프이다.

모든 트레이드오프를 아우르는 포괄적인 아키텍처 정의는 절대로 할 수가 없다.

환경과 상황마다 매번 트레이드오프 평가를 다시 해야 한다.

2법칙 어떻게(방법)보다 왜(이유)가 더 중요하다.

경험이 많은 아키텍트는 아키텍처가 어떻게 작동하는지 파악할 수 있지만, 왜 그렇게 결정했는지는 알 수 없다.

3법칙 대부분의 아키텍처적 결정은 양자택일이 아니라 양극단 사이의 스펙트럼에 있는 한 지점이다.

의사 결정을 내리는 상황, 고려하던 트레이드오프가 우선시되도록 맥락을 형성하는데, 이 상황의 특징은 대부분 양자택일이 아니라는 것이다.


소프트웨어 아키텍처의 역할

  • 아키텍처적 결정을 내린다.
    • 기술적 결정을 명시하는 것이 아니다!
    • 프론트엔드 스택 중 Vue가 아닌 React를 쓸지는 아키텍처적 결정이 아니다.
    • 아키텍트 역할은 반응형 프레임워크를 웹 개발에 사용하라고 이끄는 지침을 내리는 것이다.
  • 아키텍처를 지속적으로 분석한다.
    • Architecture vitality 확보.
    • 개발자가 성능, 가용성, 확장성과 같은 아키텍처 특성에 영향을 주는 코드를 만들 수 있다. (구조적 붕괴 structural decay)
    • 테스트와 릴리즈 환경을 간과하지 않는다. (개발 Agility - 테스트)
  • 최신 트렌드를 따라간다.
  • 결정 사항의 준수를 보장한다.
  • 다양한 기술, 프레임워크, 플랫폼 및 개발/운영 환경을 이해한다.
    • Comfort zone을 벗어나 Depth보다 Breadth에 중점을 둔다.
  • 비즈니스 도메인을 숙지한다.
  • 팀을 이끌며 대인 관계 스킬을 갖춘다.
  • 조직 내 정치를 이해하고 조율한다.
    • 개발자가 꼬인 코드를 개선하고자 설계 패턴을 도입한다. 이는 프로그래밍의 기술적 영역이며 아키텍처적 결정이 아니다.
    • CRM의 아키텍트가 DB의 무분별한 접근과 수정을 개선하기 위해 Application silo를 만들기로 결정한다면, 다른 애플리케이션으로부터 반발과 도전을 받게 된다. 아키텍트에게는 이를 조율하는 협상 능력과 리더십이 요구된다.