본문 바로가기

생각정리/항해99

[실전 프로젝트] 3주차 - 2

Kafka 학습 및 적용 고려해보기


카프카란? 

분산 이벤트 스트리밍 플랫폼, 고성능 강조

TCP 네트워크 프로토콜을 통해 통신하는 서버와 클라이언트로 구성된 분산 시스템

이벤트 스프리밍이란 ?

데이터베이스, 센서, 모바일 장치, 클라우드 서비스 및 소프트웨어 애플리케이션과 같은 이벤트 소스에서 이벤트 스트림 형태로 실시간으로 데이터를 캡처하는 방식으로 나중에 검색할 수 있도록 이러한 이벤트 스트림을 영구적으로 저장한다.

상시 접속 세상을 위한 기술

 

이벤트 스트리밍 사용 분야

  • 증권거래소, 은행, 보험 등 결제 및 금융거래를 실시간으로 처리하기 위해.
  • 물류 및 자동차 산업 등에서 자동차, 트럭, 차량 및 배송을 실시간으로 추적하고 모니터링합니다.
  • 공장, 풍력 단지 등 IoT 장치나 기타 장비에서 센서 데이터를 지속적으로 캡처하고 분석합니다.
  • 소매업, 호텔 및 여행 산업, 모바일 애플리케이션 등에서 고객 상호 작용 및 주문을 수집하고 즉시 대응합니다.
  • 응급 상황 시 적시에 치료를 받을 수 있도록 병원 치료 중인 환자를 모니터링하고 상태 변화를 예측합니다.
  • 회사의 여러 부서에서 생성된 데이터를 연결, 저장 및 사용 가능하게 합니다.
  • 데이터 플랫폼, 이벤트 중심 아키텍처 및 마이크로서비스의 기반 역할을 합니다.

이벤트 스트리밍 사용 사례

  • 다른 시스템에서 데이터를 지속적으로 가져오기/내보내기를 포함하여 이벤트 스트림을 게시구독(쓰기)하고 (읽기) 합니다 .
  • 원하는 기간 동안 이벤트 스트림을 지속적이고 안정적으로 저장합니다.
  • 이벤트 스트림을 발생 시 또는 소급하여 처리합니다.

Kafka는 주로 두 가지 종류의 애플리케이션을 만드는 데 사용됩니다.

  • 실시간 스트리밍 데이터 파이프라인:
  • 엔터프라이즈 시스템 간에 수백만 개의 데이터 또는 이벤트 레코드를 대규모로 실시간으로 이동하고 손상, 데이터 중복 및 기타 문제 없이 안정적으로 이동하도록 특별히 설계된 애플리케이션입니다. 일반적으로 이러한 대용량 데이터를 고속으로 이동할 때 발생합니다.
  • 실시간 스트리밍 애플리케이션:
  • 레코드 또는 이벤트 스트림에 의해 구동되고 자체 스트림을 생성하는 애플리케이션입니다. 온라인에서 시간을 보내면 지역 상점의 제품 수량을 지속적으로 업데이트하는 소매 사이트부터 클릭스트림 분석을 기반으로 개인화된 권장 사항이나 광고를 표시하는 사이트에 이르기까지 매일 수많은 애플리케이션을 접하게 됩니다.

기본 구조

  • 프로듀서(producer) : 메시지(이벤트)를 카프카 클러스터에 넣는 역할 - 생성자 API
  • 카프카 클러스터(Kafka Cluster) : 메시지(이벤트)를 저장하는 저장소 - Streams API
    • 카프카 클러스터는 브로커로 구성되어 있다.
    • 브로커 : 메시지(이벤트)를 저장, 이중화 처리, 대체 등등
  • 주키퍼 클러스터(Zookeeper Cluster) : 카프카 클러스터를 관리 - 커넥터 API
    • 새로운 토픽 생성/삭제, 브로커 추가/제거 등
    • 홀수의 서버로 작동하게 설게되어 있음
  • 컨슈머(Consumer) : 메시지(이벤트)를 카프카 클러스터에서 읽는 역할 - 소비자 API

 

카프카 적용 고려

비동기 처리할 로직 - order

주문요청 API → orderproduct 생성 → Product의 재고 redis에 있냐 없냐 체크 있으면 → 재고 체크 → redis에 현재 주문 하는 product의 정보를 저장 → 카프카로 메세지(비동기) → 주문 저장 → 응답

  • 시간 줄어든 만큼(응답시간 줄어든 만큼) Throughput 증가

예시)

물품 A 의 재고가 5개 있고, 사람이 5개 구매 예정 재고 체크를 하고 redis 에 A의 stock = 0을 저장 → 카프카로 메세지 보냄 → 카프카의 컨슈머가 repo의 stock을 0으로 업데이트

kafka 메세지 어떤걸 보낼지 확인

order - > 메시지 보내려면 String → 문제 양방향 순환참조 → JSON 무한대로. ORDER 생성에만 필요한 거 빼고 걸어야 하는데. 뭘 보내야 할까 고민 필요

주문 처리 부분에 비동기 처리를 하기 위해서 카프카를 공부하고 적용 방법도 고려해 보는데 카프카 자체를 처음 사용해보는 스택이라 개념적으로 이해하는데도 상당히 힘든 부분이 있었다. 어떤 식으로 작동을 하는 건지 다른 메시지 큐 기술들과의 다른 점은 무엇인지 왜 카프카를 사용해야 되는지 등을 좀 더 자세히 확인을 해보면서 적용 점을 찾아봐야겠다.

 

 

 

참고 사이트

https://kafka.apache.org/

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

https://www.ibm.com/topics/apache-kafka?utm_medium=OSocial&utm_source=Youtube&utm_content=000023UA&utm_term=10010608&utm_id=YTDescription-101-What-is-Kafka-LH-Kafka-Guide&cm_mmc=OSocial_Youtube-_-Cloud+and+Data+Platform_SFT+Cloud+Platform+Digital-_-WW_WW-_-YTDescription-101-What-is-Kafka-LH-Kafka-Guide&cm_mmca1=000023UA&cm_mmca2=10010608

 

What is Apache Kafka? | IBM

Learn about Apache Kafka, the open source streaming technology behind some of the most popular real-time, event-driven user experiences on the web.

www.ibm.com

 

'생각정리 > 항해99' 카테고리의 다른 글

[실전 프로젝트] 4주차 - 2  (0) 2023.11.17
[실전 프로젝트] 4주차 - 1  (0) 2023.11.17
[실전 프로젝트] 3주차 - 1  (0) 2023.10.14
[실전 프로젝트] 2주차 - 2  (0) 2023.10.13
[실전 프로젝트] 2주차 - 1  (0) 2023.10.13