인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

kongminoo님의 프로필 이미지

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Kafka를 활용한 데이터 동기화 테스트 ②

카프카를 사용한 이유 이거 맞나요?

작성

·

79

0

이번 카프카에서는 두 가지를 배운거 같은데
1. order -> catalog로 프로듀서와 컨슈머로 역할을 나눠서 재고관리
2. 두개의 포트에서 단일 데이터베이스에 접근했을 때 카프카를 이용해서 관리하는 거 이렇게 두 가지 가르쳐주신 거 같습니다.

제가 생각했을 때
1번은 카프카를 사용한 이유는 예제를 보여주기 위해서라고 생각했습니다. 카프카말고 @FeignClient를 사용해서 주문을 했을 시에 catalog에 접근하여 재고를 업데이트 시켜주면 되겠다 라고 생각했습니다.

2번은 카프카를 사용했어야 했다고 생각한 이유가 2개의 서버포트가 단일 데이터베이스에 접근했을 시에 카프카 유무에 따라 동시에 같은 주문이 들어왔을때 데이터의 일관성이 깨질수도 있다고 생각했습니다.

제가 적은 내용이 틀리면 말씀해주시면 감사하겠습니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. kongminoo님.

질문해 주신 내용에 대해 답변 드리겠습니다. 카프카를 사용한 이유와 관련하여 여러 가지 요인이 있습니다. 각각의 항목에 대해 간단히 설명드리겠습니다.

1. Order -> Catalog로의 카프카 사용

  • 예제의 의미: 카프카를 활용한 producer-consumer 패턴을 보여주는 예제로 사용되었습니다. 이는 시스템의 비동기 통신을 제공하여 재고 관리와 같은 시나리오에서 효율성을 증대시킬 수 있습니다.
  • 대안적 방법: @FeignClient와 같은 동기적 HTTP 요청 방법을 사용할 수도 있습니다. 하지만 이는 호출의 블로킹으로 이어질 수 있으며, 특히나 병목현상이 발생할 수 있습니다. 이에 비해 카프카는 비동기적으로 처리가 가능하여 여러 서비스 간의 데이터를 빠르게 주고받을 수 있습니다.

2. 두 개의 포트에서 단일 DB 접근 시 카프카 사용

  • 동시성 문제 해결: 두 개의 서버 포트가 단일 데이터베이스에 접근할 때 카프카를 이용하면 데이터의 일관성을 유지하는데 유리할 수 있습니다. 이는 카프카의 메시지 브로커 역할로 인해, 데이터 변경 로그를 잘 관리하고, 메시지를 순서대로 처리함으로써 여러 인스턴스들이 동시에 같은 주문을 처리할 때 발생할 수 있는 경합 상태를 줄여줍니다.
  • 데이터 일관성 유지: 즉각적으로 데이터를 업데이트하는 경우, 특히 많은 요청이 동시에 들어올 때 데이터의 일관성이 깨질 수 있는 상황에서 카프카가 큰 도움이 될 수 있습니다.

위의 두 가지 사용 사례에서 카프카는 각각 비동기 통신과 일관성 유지의 장점을 제공하고 있습니다. 여러 서비스 간의 효과적인 통신과 데이터 동기화 문제를 해결하는 강력한 도구로 활용될 수 있습니다.

질문에 대한 더 많은 정보를 원하신다면, 관련된 질문과 답변을 통해 추가적으로 학습해 보실 수 있습니다:
- Kafka sink connector를 통해서 단일 데이터베이스 저장을 했을 때 장점?
- 단일 DB 연결을 위한 Kafka 사용 이유 질문

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.