소프트웨어 아키텍처 - 모놀리식 vs 분산형

SeungTaek·2022년 2월 3일
0
post-thumbnail

아키텍처 스타일은 크게 2가지로 나뉜다.
1. 모놀리식: 전체 코드를 단일 단위로 배포
2. 분산형: 원격 액세스 프로토콜을 통해 여러 단위로 배포


두 큰 틀을 기준으로 잡고 분류를 하면 다음과 같다.

  1. 모놀리식
    • 레이어드 아키텍처
    • 파이프라인 아키텍처
    • 마이크로커널 아키텍처
  2. 분산형
    • 서비스 기반 아키텍처
    • 이벤트 기반 아키텍처
    • 공간 기반 아키텍처
    • 서비스 지향 아키텍처
    • 마이크로서비스 아키텍처

최근 분산형 중 마이크로서비스 아키텍처가 각광을 받고 있다. 분산 아키텍처 스타일은 모놀리식 아키텍처스타일에 비해 성능, 확장성, 가용성 측면에서 훨씬 강력하지만, 다음과 같은 트레이드오프가 수반된다.

1. 네트워크는 믿을 수 없다.

  • 서비스는 정상이지만 네트워크 오류로 인해 문제가 생길 수 있다.
  • 이를 방지하기 위해 타임아웃(timeout), 서킷 브레이커(circuit breaker)를 둔다.
  • 하지만 네트워크에 더 의존할수록 시스템의 신뢰도는 잠재적으로 떨어질 가능성이 있다.

2. 레이턴시 값이 클 수 있다.

  • 로컬 인메모리 메서드를 호출하는 것보다, 원격 액세스를 호출하는게 레이턴시가 클수밖에 없다.
  • 더군다나 마이크로 아키텍처처럼 잘게 나뉘어 있으면 서비스 호출을 여러번 한다.
  • 평균 레이턴시보다 레이턴시의 최대값을 파악하는게 중요하다. 이런 특이값들이 서비스 성능을 저해하는 주범이 된다.

3. 네트워크는 안전하지 않다.

  • VPN, 신뢰할 수 있는 네트워크, 방화벽 등이 있지만 네트워크 보안은 더 어려운 문제이다.
  • 모든 엔드포인트에, 서비스 간 통신에도 보안이 적용돼야 하므로 당연히 성능이 떨어질 수밖에 없다.

4. 운송비는 0이 아니다.

  • 분산 아키텍처는 하드웨어, 서버, 게이트웨이, 방화벽, 신규 서브넷, 프록시 등 리소스가 더 많이 동원된다.

Reference

소프트웨어 아키텍처 101 (마크 리처즈, 닐포드, 한빛미디어)

profile
I Think So!

0개의 댓글