728x90
Monolithic Architecture (모놀리식 아키텍처)
- 특징
- 소프트웨어의 모든 구성 요소가 한 프로젝트에 통합되어 있는 형태로 단일, 독립적인 단위로 개발
- 모든 기능(사용자 인터페이스, 비즈니스 로직, 데이터베이스 액세스 등)이 하나의 코드베이스 내에 포함되어 있음
- 장점
- 개발의 단순성 : 하나의 코드 베이스와 개발 환경을 사용하기 때문에 초기 개발이 상대적으로 간단
- 배포의 용이성 : 단일 애플리케이션이기 때문에 배포 프로세스가 간단하고 관리가 용이
- 단점
- 확장성의 제한 : 애플리케이션이 커질수록 업데이트와 유지 보수가 어려움. 특히, 특정 기능만을 확장하는 것이 어려움
- 기술 스택의 제한 : 전체 애플리케이션의 기술 스택이 하나로 제한되어, 새로운 기술을 채택하기 어려울 수 있음
- 부분 장애가 전체 서비스 장애로 이어지는 경우 발생
Microservices Architecture (MSA, 마이크로서비스 아키텍처)
- 특징
- 작고 독립적으로 배포 가능한 여러 서비스로 구성
- 각 서비스는 특정 비즈니스 기능을 담당하며, 서로 네트워크를 통해 통신
- 장점
- 확장성 : 각 서비스를 독립적으로 확장하고 관리할 수 있어, 전체 시스템의 확장성이 뛰어남
- 기술적 유연성 : 각 서비스가 독립적이기 때문에, 서로 다른 기술 스택을 사용할 수 있어 기술 채택이 유연
- 빠른 배포와 혁신 : 작은 단위로 개발되기 때문에, 서비스 별 개별 배포 가능하고 배포 시 전체 서비스의 중단이 없음
- 장애가 전체 서비스로 확장될 가능성이 적음
- 단점
- 개발 복잡도 : 여러 서비스 간의 통신을 어떻게 할지 설계가 복잡
- 데이터 트랜잭션 : 비즈니스에 대한 DB를 가지고 있는 서비스가 각기 다르기 때문에 트랜잭션을 유지하는 것이 어려움
- 통합 테스트의 어려움 : 개발 환경과 실제 운영 환경을 동일하게 가져가는게 어려움
- 배포의 어려움 : 서비스들 간의 연계가 정상적으로 이루어져있는지 확인해야하기 때문에 배포 어려움
728x90
'Programming > 개발 공부' 카테고리의 다른 글
[AWS] AWS 계정 생성 및 설정 (0) | 2024.08.23 |
---|---|
[MSA] Multi-Module과 Mini-Service Architecture (0) | 2024.08.22 |
[DB] 함수와 프로시저 차이 및 활용 예시 (0) | 2024.07.30 |
[Localtunnel] local 서버 외부 공유하기 (0) | 2024.07.25 |
[ngrok] local 서버 외부 공유하기 (0) | 2024.07.23 |