Fix: Restore unified Topics folder and reorganize specialized category folders

This commit is contained in:
Antigravity Agent
2026-05-02 23:25:02 +09:00
parent b71a0b82d3
commit fdfbc83535
6241 changed files with 147626 additions and 194 deletions
@@ -1,46 +1,69 @@
---
id: P-REINFORCE-WIKI-ARCH-MICROSERVICES
title: "마이크로서비스 아키텍처 (Microservices Architecture, MSA)"
category: Dev
status: verified
canonical_id: ""
aliases: ["MSA", "마이크로서비스", "Microservices", "분산 시스템"]
duplicate_of: ""
source_trust_level: A
confidence_score: 1.0
tags: ["Architecture", "MSA", "Cloud_Native", "Scalability", "Agility"]
raw_sources: ["Datacollector_Export_2026-05-02"]
last_reinforced: 2026-05-02
github_commit: ""
tags: [Architecture, Microservices, Cloud Native, Scalability]
title: Microservices Architecture (MSA)
description: 대규모 애플리케이션을 독립적으로 배포 및 확장 가능한 작은 서비스 단위로 분할하여 관리하는 시스템 설계 방식
last_updated: 2026-05-02
---
# [[마이크로서비스 아키텍처 (Microservices Architecture, MSA)]]
# Microservices Architecture (MSA)
## 1. 개요
마이크로서비스 아키텍처(MSA)는 거대한 단일 애플리케이션(Monolith)을 독립적으로 배포 및 확장 가능한 작은 서비스 단위들로 분할하여하는 시스템 설계 방식이다. 각 서비스는 특정 비즈니스 기능(Bounded Context)에 집중하며, 가벼운 통신 프로토콜(HTTP/REST, gRPC, 메시지 큐 등)을 통해 상호작용한다.
## 📌 Brief Summary
**마이크로서비스 아키텍처(Microservices Architecture, MSA)**는 하나의 거대한 애플리케이션(Monolith)을 비즈니스 기능 단위로 쪼개어, 독립적으로 개발, 배포, 운영이 가능한 **작은 서비스들의 집합**으로하는 방식입니다. 각 서비스는 자신만의 데이터베이스를 가질 수 있으며, API를 통해 서로 통신합니다. 이는 클라우드 네이티브 환경에서 대규모 시스템의 복잡성을 관리하고, 변화에 민첩하게 대응하기 위한 현대 소프트웨어 공학의 핵심 패러다임입니다.
## 2. 핵심 특징
- **독립적 배포 및 확장**: 전체 시스템을 중단하지 않고 특정 서비스만 개별적으로 업데이트하거나, 트래픽에 맞춰 특정 모듈만 수평 확장(Scale-out) 가능.
- **기술 자율성 (Polyglot)**: 각 마이크로서비스의 특성에 따라 서로 다른 프로그래밍 언어, 데이터베이스, 프레임워크를 선택할 수 있는 유연성 제공.
- **격리된 실패 (Fault Isolation)**: 특정 서비스에 장애가 발생하더라도 서킷 브레이커 등을 통해 전체 시스템으로의 장애 전파를 차단하여 가용성 유지.
- **조직 정렬 (Conway's Law)**: 비즈니스 도메인 단위로 팀을 구성하고, 팀별로 독립적인 서비스 소유권을 부여하여 개발 민첩성 극대화.
---
## 3. 실전 아키텍처 결합
- **클라우드 네이티브와 서버리스**: AWS Lambda, Kubernetes 등 클라우드 인프라를 활용하여 마이크로서비스의 배포와 운영 자동화.
- **헥사고날 아키텍처의 확장**: 각 마이크로서비스 내부를 헥사고날 아키텍처로 설계하여 비즈니스 로직의 순수성을 지키고 외부 기술과의 결합도 최소화.
- **API 게이트웨이**: 수많은 마이크로서비스의 엔드포인트를 단일 창구로 통합하고 인증, 로깅, 라우팅을 중앙 집중적으로 관리.
## 📖 Core Content
## 4. 트레이드오프 및 주의사항
- **분산 시스템의 복잡성**: 네트워크 지연, 분산 트랜잭션 처리(Saga 패턴 등), 데이터 일관성 유지(Eventual Consistency) 등 고난도의 기술적 과제 수반.
- **운영 오버헤드**: 서비스 수가 늘어남에 따라 모니터링, 로깅, 배포 파이프라인 관리의 난이도가 급격히 상승함.
- **분산 모놀리스 (Anti-pattern)**: 서비스 간의 의존성이 너무 강해 결국 함께 배포해야 하는 상황이 발생하지 않도록 바운디드 컨텍스트 설계를 정교하게 해야 함.
### 1. 주요 특징
* **독립성:** 각 서비스는 독립적으로 빌드, 테스트, 배포될 수 있습니다. 특정 서비스의 업데이트가 전체 시스템 중단으로 이어지지 않습니다.
* **기술 다양성 (Polyglot):** 각 서비스의 특성에 맞는 최적의 언어와 데이터베이스를 선택할 수 있습니다. (예: 결제 서비스는 Java, 실시간 분석은 Python)
* **탄력적 확장:** 트래픽이 몰리는 특정 서비스만 골라서 리소스를 확장(Scale-out)할 수 있어 비용 효율적입니다.
* **책임의 분리:** 도메인 주도 설계(DDD)의 **바운디드 컨텍스트(Bounded Context)**를 기준으로 팀과 코드를 분리하여 전문성을 높입니다.
## 5. 지식 연결 (Related)
- [[Hexagonal_Architecture]]: 마이크로서비스 내부를 설계하는 기반 패턴.
- [[Event_Driven_Architecture]]: 서비스 간 느슨한 결합을 구현하기 위한 핵심 통신 방식.
- [[Bounded_Context]]: 마이크로서비스를 나누는 논리적/비즈니스적 기준.
### 2. 아키텍처 구성 요소
* **API Gateway:** 클라이언트의 요청을 받아 적절한 마이크로서비스로 라우팅하고, 인증/인가, 속도 제한 등을 통합 관리합니다.
* **Service Discovery:** 동적으로 변하는 마이크로서비스 인스턴스의 위치(IP, Port)를 자동으로 등록하고 찾아주는 기능을 합니다.
* **Config Server:** 서비스별 설정 정보를 중앙에서 관리하여 동적으로 반영합니다.
* **Message Broker:** 서비스 간 비동기 통신을 담당하여 결합도를 낮춥니다. (Kafka, RabbitMQ 등)
## 🧪 검증 상태 (Validation)
- **정보 상태**: 검증 완료 (Verified)
- **출처 신뢰도**: A
- **검토 이유**: 대규모 트래픽과 복잡한 비즈니스 요구사항을 탄력적으로 수용하기 위한 현대적 아키텍처의 표준 명세 정립.
### 3. 구현 철학: 헥사고날 아키텍처와의 관계
각 마이크로서비스 내부는 **헥사고날 아키텍처**를 적용하는 것이 일반적입니다. 비즈니스 로직을 중심에 두고 외부 통신(API, DB)을 어댑터로 처리함으로써, 서비스 자체가 하나의 독립적인 '섬'처럼 동작하게 설계합니다.
---
## ⚖️ Trade-offs & Caveats
### ✅ Benefits
* **민첩성:** 작은 단위의 배포가 가능하여 새로운 기능을 시장에 빠르게 출시할 수 있습니다.
* **안정성:** 서비스 하나에 장애가 발생해도 전체 시스템으로 전파될 확률이 낮습니다 (Fault Isolation).
* **조직의 확장:** 큰 팀을 작은 서비스 단위의 팀으로 나누어 커뮤니케이션 비용을 줄일 수 있습니다.
### ⚠️ Challenges
* **분산 시스템의 복잡성:** 네트워크 지연, 데이터 정합성(최종 일관성), 분산 트랜잭션 처리 등 해결해야 할 기술적 난제가 많습니다.
* **운영 오버헤드:** 관리해야 할 서비스, 컨테이너, 네트워크 설정이 기하급수적으로 늘어납니다.
* **테스트의 어려움:** 여러 서비스가 얽힌 통합 테스트와 엔드 투 엔드(E2E) 테스트가 까다롭습니다.
---
## 🔗 Knowledge Connections
### Related Concepts
* [[Hexagonal_Architecture]]: 개별 마이크로서비스 내부의 견고한 설계 틀을 제공합니다.
* [[Domain_Driven_Design]]: 마이크로서비스의 경계를 나누는 논리적 기준(Bounded Context)을 제공합니다.
* [[Serverless_Computing]]: 인프라 관리 없이 마이크로서비스 기능을 실행할 수 있는 이상적인 배포 환경입니다.
* [[Event_Driven_Architecture]]: 서비스 간 느슨하게 결합된 통신을 구현하는 핵심 패턴입니다.
### Practical Application Contexts
* **Cloud Native:** 컨테이너(Docker)와 오케스트레이션(Kubernetes) 도구를 필수로 사용합니다.
* **JAMstack:** 프론트엔드에서 호출하는 다양한 백엔드 API 서비스들의 집합으로 MSA가 활용됩니다.
---
## 💡 Adjacent Topics
* [[CI_CD]]: MSA 환경에서 수많은 서비스를 안전하게 배포하기 위한 필수 자동화 프로세스입니다.
* [[Distributed_Tracing]]: 분산된 서비스 간의 요청 흐름을 추적하기 위한 기술(Zipkin, Jaeger 등)입니다.
* [[API_First_Architecture]]: 서비스 간 협업을 위해 API 설계를 최우선으로 하는 개발 문화입니다.
---
*Last updated: 2026-05-02*