기초

  • 아키텍처 스타일은 아키텍처 패턴이며 아키텍처 특성을 다루는 컴포넌트의 명명된 관계를 기술
  • 즉 많은 세부 내용이 함축되어있음
    • 토폴리지와 기본 전제된 아키텍처 특성, 이로운 것과 해로운것 모두 기술

1. 기초 패턴

  • 소프트웨어 아키텍처 역사상 끊임없이 반복적으로 나타나는 패턴이 있는데 이런 패턴들은 코드, 배포, 아키텍처를 구성하는 시야를 넓혀줌, 예를들면 레이어드 아키텍처가 존재(10장)
  • 진흙잡탕
    • 뭐 하나 뚜렷한 아키텍처 구조가 전무한 상태를 진흙잡탕(Big Ball of Mud)이라고 함
    • 내부 구조라 할 만한것 없이 데이터베이스를 직접 호출하는 스크립팅 애플리케이션을 의미
    • 구조가 없이 점점 규모가 커지면 변경하기 더 어려워지면서 이런 아키텍처로 변함
  • 유니터리(unitary) 아키텍처
    • 단일 머신에서 돌아가는 아키텍처
  • 클라이언트/서버
    • 데스크톱 + 데이터베이스 서버
    • 브라우저 + 웹 서버
    • 3티어
      • 데이터베이스
      • 서버 애플리케이션
      • 프론트

2. 모놀리식 대 분산 아키텍처

  • 이 책에서는 다음과 같은 아키텍처를 살펴볼 예정
    • 모놀리식
      • 레이어드 아키텍처 (10장)
      • 파이프라인 아키텍처 (11장)
      • 마이크로커널 아키텍처 (12장)
    • 분산
      • 서비스 기반 아키텍처 (13장)
      • 이벤트 기반 아키텍처 (14장)
      • 공간 기반 아키텍처 (15장)
      • 서비스 지향 아키텍처 (16장)
      • 마이크로서비스 아키텍처 (17장)
  • 분산 아키텍처는 모놀리식에 비해 성능, 확장성, 가용성 측면에서 장점이 있지만 트레이드오프가 수반됨
  • Sun Microsystems - the fallacies of distributed computing에서 다음과 같은 8가지 오류에 대해서 거론
    • 네트워크는 믿을 수 있다.
    • 레이턴시는 0이다.
    • 대역폭은 무한하다.
    • 네트워크는 안전하다.
    • 토폴로지는 절대 안 바뀐다.
    • 관리자는 한 사람뿐이다.
    • 운송비는 0이다.
    • 네트워크는 균일하다.