728x90
모놀로식 아키텍처 (Monolithic Architecture)
하나의 WAS에서 모든 기능을 처리하도록 구성한다.
장점
- 구조가 간단하다
- 시스템 운영과 개발이 편리하다
- 네트워크로 인한 지연 및 데이터 유실 안전하다
- 디버깅이 쉽다 ( 로그 추적에 용이하다 )
- 트랜잭션 관리가 편하다
- 장애에 견고하다
단점
- 기능이 많아지면 복잡해질 수 있다 (스파게티 코드)
- 코드베이스가 어지럽다 ( HTML, JS, CSS 파일을 포함해야 하므로 )
- 클라이언트 코드에 버그를 수정하더라도 서버를 다시 실해야하 하는 불편함이 있다
- Git 브랜치도 많아지고 관리가 어렵다
- 애플리케이션에 대한 확장이 비효율적이다
점차 늘어나는 사용자의 요청을 감당하기 위해 시스템을 확장하여 고가용성을 확보해야 한다.
소스코드가 증가함에 따라 서버의 빌드시간은 점차 늘어나게 되고, 자연스럽게 개발 속도와 생산성도 낮아진다.
로드밸런서를 통해 요청을 분산 시키려 서버를 증설하면 모든 기능에 대한 스케일 아웃이 되어 비효율 적이다.
서비스 확장 측면에서 보면 모놀리식 아키텍처는 효율적이지 않다.
소규모 개발팀이 비교적 간단하고 작은 기능을 제공하는 서비스를 개발한다면 모놀로식 아키텍처가 효율적이다.
빠르고 가벼운 서비스 개발시 효율적이다.
마이크로 서비스 아키텍처 (Micro Service Architecture)
각 서비스가 기능을 처리한다.
각 서비스는 독립적으로 동작해야 하고 서비스 간의 의존도가 있으면 안된다.
의존도가 생기는 이유 ( 데이터베이스 , 인프라 스트럭쳐 소프트웨어 )
장점
- 독립성이 뛰어나다 - 각 서비스의 책임과 역할이 분명 하다
- 독립적인 배포가 가능하다 - 버그와 장애에 견고하다
- 각 서비스의 확장이 간단하다 - 효율적인 확장이 가능하다
- 사용자의 반응에 민첩하게 대응할 수 있다
단점
- 학습하기 매우 어렵다.
- 운영하기 매우 어렵다.
- 데이터 정합성 문제 - 데이터 중복
- 트랜잭션 문제
- 네트워크 장애 문제 - 네트워크 지연으로 시스템 성능 하락
잘못 설계된 마이크로 서비스는 오히려 개발 속도와 서비스 안전성면에서 역효과가 발생 할 수 있다.
대규모 설계에서는 하이브리드 형식으로 두 아키텍처를 골고루 사용 하기도 한다.
한번에 완벽한 아키텍처를 설계 할 수 없다 - 분리 한것을 모으기도, 모은것을 분리 하기도 해야 한다.
지속적인 리펙토링을 하자
끗!
728x90
'개-발 > 이론' 카테고리의 다른 글
[WEB] MIME 타입 모음 (2) | 2024.09.02 |
---|---|
[CS] Spring Web MVC의 Dispatcher Servlet의 동작 원리 (0) | 2023.11.03 |
[CS]쓰레드와 쓰레드 풀 (0) | 2023.05.23 |
[CS] HTTP Method 특성 (멱등성, 안정성) (0) | 2023.04.24 |
[CS]웹 브라우저에 URL 입력하면 일어나는 일 (0) | 2023.04.14 |