티스토리 뷰
✅ 느슨한 결합(Loosely Coupled)이란?
💡 정의:
컴포넌트(시스템 간)가 서로에 대해 최소한의 정보만 알고,
직접 의존하지 않고, 독립적으로 동작할 수 있는 구조
📌 느슨한 결합이 중요한 이유
장점설명
확장성 | A → B, C, D로 쉽게 연결 가능 |
유지보수성 | 한 쪽 바뀌어도 다른 쪽 영향 적음 |
장애 격리 | B가 죽어도 A는 메시지만 보내고 끝냄 |
재사용성 | 특정 서비스가 다양한 곳에 재활용 가능 |
테스트 용이성 | 모의(mock) 구성으로 단위 테스트 쉬움 |
✅ Kafka는 왜 느슨한 결합 구조에 적합할까?
Kafka는 발행-구독(Pub/Sub) 메시지 큐 시스템.
즉, **생산자(Producer)**와 **소비자(Consumer)**가 직접 연결되지 않음.
🔁 Kafka 기반 메시지 흐름
[Service A] → Kafka Topic (Message 저장소) → [Service B], [Service C]
- A는 B, C가 존재하는지도 몰라.
- 그냥 Topic에 메시지를 던지기만 함.
- B와 C는 나중에 와서 소비하면 됨.
🔍 Kafka가 느슨한 결합을 만드는 구조적 특징
Kafka 특징느슨한 결합에 어떻게 기여?
비동기 메시징 | 응답을 기다리지 않음 → 의존성 낮음 |
Durability (메시지 저장) | 소비자가 늦게 와도 메시지 소비 가능 |
Topic 기반 Pub/Sub | 다수 소비자가 자유롭게 구독 가능 |
Offset 관리 | 각 서비스는 처리 시점을 개별적으로 조절 |
확장성 (파티션) | 새로운 소비자/서비스 추가해도 생산자 코드 안 바뀜 |
🔧 실제 아키텍처에서 예시
✍️ 예: 사용자 업로드 처리
[Upload API] --(Kafka Topic: upload.success)--> [검수 시스템] --> [알림 시스템] --> [분석 시스템]
- Upload API는 메시지를 던지고 끝
- 나머지 시스템은 독립적으로 소비
- 검수 시스템이 나중에 붙어도 OK
- 알림 로직이 바뀌어도 Upload 쪽은 몰라도 됨
✅ 정리
핵심 개념설명
느슨한 결합 | 서비스 간 의존도를 최소화해서 유연한 구조 유지 |
Kafka | 느슨한 결합을 위한 강력한 메시지 브로커 도구 |
결과 | 고가용성, 확장성, 장애 격리에 유리한 시스템 구축 가능 |
'OpenSource > Study With Ai' 카테고리의 다른 글
CDN을 두는이유 (0) | 2025.03.26 |
---|