티스토리 뷰

OpenSource/Study With Ai

Kafka와 느슨한결합

개발자22 2025. 3. 26. 08:27

✅ 느슨한 결합(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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함