모놀리스 아키텍처 ( Monolithic Architecture )
- 모든 종류의 서비스가 하나의 어플리케이션으로 구성되어 있는 아키텍처를 의미한다.
특징
- 하나의 주요 프로세스로 구성
- 모든 서비스가 하나의 DB endpoint를 사용
- 단 한줄만 코드 수정이 되더라도, 모든 어플리케이션의 재배포가 필요
- 싱글 혹은 멀티 모듈로 구성할 수 는 있지만 CI의 단위가 달라질 뿐, CD(배포) 의 범위는 여전히 전체이다.
모놀리스 아키텍처가 일반적이었던 이유
Easy
개발하고 빌드하고 나온 결과를 서버에서 실행시키기만 하면 됐기에 쉽다!
No time, No Human Resource
고려할것이 그리 많지 않고 서버 리소스의 효율적인 활용이 가능하다
IDC, Server/DB is very Expensive
IDC가 일반적이었고, 굉장히 비싼 자원이었습니다.
HVAC 관리하는 사람이 항상 필요합니다.
모놀리스 아키텍처에서 개발/배포의 프로세스
모놀리스의 배경과 종류
싱글모듈 / 멀티모듈 아키텍처
- 모놀리식 아키텍처에서 모듈을 구성하는 방식이 다르다.
- 대표적으로 싱글/멀팉 모듈 아키텍처가 존재하고, 특징이 조금 다르다.
싱글 모듈
- 모든 소스가 단일 모듈 내에 존재한다.
- 응집성과 결합도가 매우 높다.
- 설계/구현이 간단하고 단순하다.
- 최상위 싱글 패키지에 존재한다.
- 유연성, 확장성이 제한적이다.
멀티모듈
- 역할, 서비스 별로 모듈화 되어 있다.
- 응집성과 결합도가 낮은 편이다.
- 모듈간 인터페이스 정의가 필요하다.
- 최사우이 멀티 패키지이다.
- 유연성, 확장성이 비교적 좋다.
싱글 모듈 아키텍처 ( Monolithic Architecture )
멀티모듈 아키텍처 ( Monolithic Architecture )
모놀리스의 장점과 단점
모놀리스 아키텍처의 장점
- 쉽다, 간단하다
- 배포가 간단하다
- 어디서 패키징해도 상관 없고, 어떻게든 배포만 하면 된다.
- 유지보수가 비교적 쉽다.
- 비싼 서버 리소스를 최적화해서 사용이 가능하다
- 고통 모듈 등을 활용하기가 매우 쉽다.
모놀리식 아키텍처의 장점이 있을 수 있는 Case
- 창업 혹은 새로운 서비스를 시작하는 경우
- 소수의 팀원으로 빠르게 오픈해야 하는 경우 ( 협업이 적을 수 있는 경우 )
- 클라우드 환경을 사용하기 어려운 경우
- 금융 등 보안과 안정성이 최고로 중요한 경우
- 개발자들의 역량이 비교적 낮을 경우
- DevOps등 전문 인력이 부족할 경우
- CI/CD 파이프라인 등의 구축이 어려울 경우
모놀리식 아키텍처의 단점
- 수평 확장 (Scale Out) 이 어렵다.
- 단일 DB에 대한 의족성이 너무 크다.
- 모놀리식 환경이 보편화되고, 시스템이 커질 수록 커뮤니케이션 코스트가 기하급수적으로 늘어난다.
- 규모가 커질 수록, 복잡성이 증가하여 수정에 대한 부담이 증가한다.
- 대규모 어플리케이션 환경에서는 단순한 수정 사항일지라도, 배포까지 시간이 오래걸릴 수 있다.
- 장애 시, 전체 어플리케이션에 영향을 크게 받게된다.
모놀리식 아키텍처를 채용하는 게 단점이 될 수 있는 경우
- MSA, Cloud 환경에 충분히 숙련된 개발자들이 많은 경우
- 많은 서비스가 식별이 되어 동시 다발적으로 개발을 진행하는 경우
- 보안과 안정성보다는 빠른 기능 개발과 배포가 중요한 서비스
- DevOps등 전문 인력이 충분하고, 개발자들이 CI/CD 파이프라인에 대해서 어느정도 이해가 있는 경우
'Architecture' 카테고리의 다른 글
클린 아키텍처가 뭘까?? [ Clean Architecture, 개념 ] (0) | 2023.07.11 |
---|---|
헥사고날 아키텍처가 뭘까?? [ Hexagonal Architecture, Port & Adapter Pattern ] (0) | 2023.07.09 |
MSA 사용하기 위해 필요한 패턴들 [ MSA, 패턴, 데이터쿼리, 가시성 패턴, 신뢰성 패턴 ] (0) | 2023.07.05 |
MSA를 언제 사용해야 할까?? [ MSA, 자가진단 해보기 ] (0) | 2023.06.22 |
MSA의 등장 [ Micro Service Architecture ] (0) | 2023.06.21 |