본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/4hTSJNB

 


I. 학습 인증샷 4장 이상 포함

1. 공부시작: 날짜, 시각 다 나오도록

공부 시작

2. 공부 종료: 날짜 시각 다 나오도록

공부 종료

 

 

3. 1개 클립 수강 (강의장 목록 캡쳐, 수강화면이 보이지 않도록) 1장

실습인 파트2에서 드디어 스프링 프로젝트 등장

4. 학습 인증샷 1장(필기 촬영이나 작업물 촬영)


II. 학습 후기 700자 이상 (공백 제외)

실습파트2에서  드디어 실제 프로젝트를 소개하는 ch3이 시작되는 순간이다.
나는 지금까지 카프카는 `kafka-clients`를 무조건 사용해야 하는지 알고 있었다.

강의에서 내가 몰랐던 2가지를 소개하고 있다.

스프링 부트에서 카프카를 사용하기 위해서는?

  • 내가 사용한 것처럼 `kafka-clients`를 사용하는 경우는
    • Spring의 의존성이 불필요한 경우
    • Spring 버전이 너무 낮아서 Spring kafka 사용이 불가능한 경우
  • 보통은 Spring-kafka나 spring-cloud-stream을 많이 사용한다고 한다

Spring- kafka와 spring-cloud stream의 차이(느낌)

Spring- kafka의 느낌

동일한 Config를 사용하다가 별도의 분리나 설정이 필요하게 된다면???
별도의 컨피규레이션 클래스를 하나 만듬

  • 기본적으로 하나를 만들어서 설정을 재활용 하는 방법 , 필요하면 하나 더 만들기 -> spring cloud의 느낌

 

Spring- cloud-stream 의 느낌

  • 하나의 커다란 Configuration
  • 설정과 비즈니스로직이 완전 분리
  • 하나의 Config에 세분화된 설정을 사용 가능
  • 공통화된 영역도 존재
  •  

그럼 언제 어떻게 사용해야 하나?

  • 라고 gpt에게 물어봄

 

Spring-Kafka

  • 장점
    • Kafka의 고급 기능(예: Kafka Streams, 트랜잭션)을 직접 사용 가능
    • 메시지 송수신을 세밀하게 제어 가능
    • @KafkaListener와 같은 어노테이션을 통해 간단하게 메시지 소비자 생성 가능
    • 실시간 데이터 처리 및 복잡한 데이터 변환 작업에 적합.
  • 단점
    • Kafka에 특화되어 있어 다른 메시징 시스템과의 통합이 어려움.
  • 적합한 상황
    • Apache Kafka만 사용하는 환경
    • 실시간 분석, 복잡한 스트림 처리 또는 데이터 변환이 필요한 경우
    • Apache Kafka만 사용하는 환경에서 고성능 실시간 데이터 처리가 필요한 경우
    • 개발자가 Kafka의 내부 동작을 잘 이해하고 있는 경우.
    • 복잡한 스트림 처리(예: 데이터 집계, 변환, 윈도우 연산 등)가 요구되는 애플리케이션.
    • 시스템이 이미 Kafka 중심으로 설계되어 있고, 세부적인 제어가 필요한 경우.

Spring-cloud-stream

  • 장점
    • Binder 추상화를 통해 다양한 메시징 시스템과 쉽게 통합 가능
    • 선언적 프로그래밍 모델로 빠른 개발 가능
    • 이벤트 중심 마이크로서비스 아키텍처 구축에 최적화
    • Spring Cloud와의 자연스러운 통합으로 확장성과 관리 용이성 제공
  • 단점
    • Kafka의 고급 기능(예: Streams API)에 대한 접근이 제한적.
    • 추상화가 많아 성능 최적화나 세부 제어가 어려울 수 있음.
  • 적합한 상황:
    • 다양한 메시징 시스템을 사용하는 환경
    • 여러 메시징 시스템(Kafka, RabbitMQ 등)을 통합해야 하는 환경.
    • 이벤트 중심 마이크로서비스를 빠르게 구축해야 하는 경우.
    • Spring 생태계를 사용하는 팀에서 빠른 개발과 배포가 중요한 경우.
    • Spring Boot와 Spring Cloud를 사용하는 팀에서 생산성과 유지보수성을 중요하게 여기는 경우.

 

  • spring-kafka는 kafka-clients를 의존
  • spring-cloud-stream은 spring-kafka에 의존하고 있음
  • spring-cloud-stream은 kafka만 보고 만든게 아님
    • kafka보단 일반화된 용어를 많이 씀
    • kafka의 topic을 spring-cloud-stream에서는 destination이라고 한다
  • 커스터마이징을 하고 싶다면 spring-cloud-stream
    • kafka-spring은 커스터마이징 하려면 모든 configuration을 각각 커스터마이징을 해야 한다.
    • 추상화가 많아 성능 최적화나 세부 제어가 어려울 수 있음
블로그 이미지

감동맨

rkaehdaos의 블로그

,