1. 마이크로서비스 아키텍처(MSA) vs 모놀리식 아키텍처
마이크로서비스 아키텍처 (MSA)
마이크로서비스 아키텍처는 애플리케이션을 독립적인 서비스 단위로 분리하여 운영하는 방식을 의미한다.
장점
- 독립적 배포 및 확장: 각 서비스는 별도로 배포 및 확장이 가능하여, 필요에 따라 개별적으로 조정할 수 있다.
- 장애 격리: 하나의 서비스에 장애가 발생해도 전체 시스템에 미치는 영향을 최소화할 수 있다.
- 기술 선택의 유연성: 서비스마다 최적의 기술 스택을 선택할 수 있어 개발 환경에 유연하게 대응할 수 있다.
단점
- 운영 및 모니터링 부담 증가: 서비스 수가 늘어남에 따라 운영, 모니터링 및 로깅 체계가 복잡해진다.
- 테스트 난이도 상승: 분산 환경에서의 통합 테스트 및 서비스 간 상호작용 테스트가 어려워진다.
- 구현 및 운영 복잡도 상승: 서비스 간 통신, 데이터 일관성 유지 등 추가적인 복잡성이 발생한다.
모놀리식 아키텍처
모놀리식 아키텍처는 전체 애플리케이션이 하나의 코드베이스로 구성되는 전통적인 구조를 말한다.
장점
- 단순한 구현 및 빠른 배포: 모든 기능이 하나의 애플리케이션으로 통합되어 있어 구현이 단순하고 배포 속도가 빠르다.
단점
- 변경에 따른 위험 증가
- 특정 부분의 변경이 전체 애플리케이션에 영향을 미칠 수 있다.
- 단일 장애 지점의 규모가 커져 장애 발생 시 심각한 영향을 초래할 수 있다.
- 대규모 서비스 확장의 한계
- 특정 리소스에 대한 세밀한 Scale Out이 어려워 성능 최적화에 제약이 있다.
- 기술 스택의 경직성
- 새로운 기술 스택 도입 시 전체 시스템이 해당 기술에 종속되어 유연성이 저하된다.
주의 사항
Scale Out
은 아키텍처의 차이가 아니다. 모놀리식 아키텍처 역시 무상태 서버, Redis 세션, Auto Scaling 등을 활용하여 확장이 가능하다.
2. API 게이트웨이
API 게이트웨이는 클라이언트의 요청을 적절한 내부 서비스로 전달하는 중간 계층으로, 다음과 같은 역할을 수행한다.
- 요청 라우팅: 클라이언트의 요청을 목적에 맞는 서비스로 분배한다.
- 집계 및 변환: 여러 서비스의 응답을 집계하거나 필요한 데이터를 변환한다.
- 보안 및 인증: 서비스 접근에 대한 인증 및 권한 부여를 담당한다.
- 로깅 및 모니터링: 시스템 로그와 트래픽, 에러 등을 수집하여 모니터링 체계를 지원한다.
3. 클린 코드
클린 코드는 읽기 쉽고, 이해하기 쉬우며, 유지보수하기 쉬운 코드를 의미한다. 클린 코드를 작성함으로써 다음과 같은 효과를 기대할 수 있다.
- 개발 생산성 향상: 가독성과 유지보수성이 높아져 개발 과정에서 발생하는 오류를 줄일 수 있다.
- 코드 품질 개선: 명확한 코드 구조를 통해 시스템 확장성과 안정성을 보장할 수 있다.
- 협업 효율 증대: 여러 개발자가 협업할 때 코드를 이해하기 쉽고 수정하기 용이하다.
4. 느슨한 결합
느슨한 결합은 시스템 내의 모듈 또는 컴포넌트가 직접적으로 의존하지 않고, 중간 매개체나 인터페이스를 통해 소통함으로써 결합도를 낮추는 설계 원칙이다.
- 직접 참조의 회피: 모듈 간의 직접적인 의존성을 줄여 시스템의 유연성을 확보한다.
- 유지보수 용이성: 모듈 변경 시 다른 부분에 미치는 영향을 최소화하여, 전체 시스템의 유지보수가 용이하다.
- 확장성 향상: 개별 모듈을 독립적으로 개발, 테스트, 배포할 수 있어 시스템 확장이 용이하다.
'CS Repo > 소프트웨어 공학 - Clean Code & Architecture' 카테고리의 다른 글
빅뱅 방식 vs 이터레이션 방식 (0) | 2025.03.03 |
---|---|
소프트웨어 공학적인 개발 방법 (0) | 2024.10.03 |
분석 마비 (0) | 2024.09.27 |