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


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

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

공부 시작

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

공부 종료

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

강의 클립:Spring Cloud Stream

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


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

토픽을 생성하는 학습이다.
기존과 다른 점은 일단 지금까지 토픽의 생성은 카프카의 프로듀스와 컨슘을 이해하기 위한 실습의 토픽 생성이었다면,
이번의 토픽 생성은 스프링 프로젝트에 연결하기 위한 프로젝트의 토픽 생성이란 부분이다.
또한 지금까지 kafka CLI를 통해 만들었던 것과 달리
이번 주에 배웠던 카프카 ui를 이용한 토픽을 생성하는 부분이 다른 부분이 되겠다.

cli를 통한 것돠 매우 다른 경험이다.

스프링 어플리케이션 레벨에서 해당 토픽이 없으면 자동으로 생성하고, 있으면 자동으로 생성하게 끔 할 수가 있다.

해당 기능을 쓰지 않는 이유 
- 위의 기능으로 토픽을 암시적으로 만들지 않고 명시적으로 토픽을 생성하는 방법의 중요성을 강의에서 가르키는 것 같다

  • 파티션 수 조절
  • 설정 값 원하는 대로 조정
  • 더 안정적인 운영 가능

토픽생성 미리 정해줄 수 있는 옵션들을 보면서 운영에 따라 각각 설정을 다르게 줄 수 있다.

설정값

  • Number of Partitions(필수값): 3
    • 현재 실습 환경의 broker가 3개이다.
    • 따라서 파티션 수를 3으로 정하면 각각의 broker에 하나씩 리더 파티션이 할당 되게 된다.
    • 현재 실습 환경에서 적합한 값
    • 운영환경이라면 안정된 운영이 가능할 것이다.
  • Replication Factor: 2
    • 장애상황에서도 데이터를 안전하게 보호하기 위한 최소한의 복제 파티션을 유지하기 위한 상황
    • 카프카 다루는게 미숙해서 단순하게 이용하는 것이 더 중요한 경우 1로 두는 것을 강사님은 권장하심
    • 그래도 최대한 똑같이 해야지 않나 싶어서 난 2로 했다.
  • Time to retain data : 7 day
    • 로그를 연동해서 사용하는 케이스의 경우 데이터가 엄청 많을 수 있기 때문에
      해당 케이스의 경우 12시간이나 하루로 설정을 해야 한다.
    • 실습 환경에서는 7일로 설정한 것으로 보아 일반적으로는 7일로 설정하는 것이 무방할지도

 

처음 프로젝트 실행

여기서 엄청 애먹었는데... 아무리봐도 실습이 안되는데...
내가 완성된 예제 branch를 보고 있었다..아오
처음엔 1-run-project라는 branch로 보면 hello world만 찍히는 처음 세팅만 된 환경을 볼 수 있다.

hello 뿐이지만 swagger-ui가 붙어있는 실습 환경이라 학습하기 좋은 실습 환경이 구성되어 있다.



블로그 이미지

감동맨

rkaehdaos의 블로그

,

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

 


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

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

공부 시작

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

공부 종료

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

이전의 토픽 생성이 카프카 실습이었다면, 이제는 스프링 프로젝트를 위한 카프카 토픽 생성이다.

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

카프카ui를 통한 토픽만들기, 강사님이 설정해둔 컨테이너로 접속해서 만든다. ..위의 날짜는 카프카 프로젝트의 github commit 날짜다.


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

토픽을 생성하는 학습이다. 지금까지 실습해서 늘 해왔던..


기존과 다른 점은
일단 지금까지 토픽의 생성은 카프카의 프로듀스와 컨슘을 이해하기 위한 실습의 토픽 생성이었다면,
이번의 토픽 생성은 스프링 프로젝트에 연결하기 위한 프로젝트의 토픽 생성이란 부분이다.

또한 지금까지 kafka CLI를 통해 만들었던 것과 달리
이번 주에 배웠던 카프카 ui를 이용한 토픽을 생성하는 부분이
다른 부분이 되겠다.

cli를 통한 것돠 매우 다른 경험이다.

스프링 어플리케이션 레벨에서 해당 토픽이 없으면 자동으로 생성하고,
있으면 자동으로 생성하게 끔 할 수가 있다. 강사님은 해당 부분을 끄라고 하신다.

해당 기능을 쓰지 않는 이유
- 위의 기능으로 토픽을 암시적으로 만들지 않고 명시적으로 토픽을 생성하는 방법의 중요성을 강의에서 가르키는 것 같다

  • 파티션 수 조절
  • 설정 값 원하는 대로 조정
  • 더 안정적인 운영 가능

토픽생성 미리 정해줄 수 있는 옵션들을 보면서 운영에 따라 각각 설정을 다르게 줄 수 있다.

설정값

  • Number of Partitions(필수값): 3
    • 현재 실습 환경의 broker가 3개이다.
    • 따라서 파티션 수를 3으로 정하면 각각의 broker에 하나씩 리더 파티션이 할당 되게 된다.
    • 현재 실습 환경에서 적합한 값
    • 운영환경이라면 안정된 운영이 가능할 것이다.
  • Replication Factor: 2
    • 장애상황에서도 데이터를 안전하게 보호하기 위한 최소한의 복제 파티션을 유지하기 위한 상황
    • 카프카 다루는게 미숙해서 단순하게 이용하는 것이 더 중요한 경우 1로 두는 것을 강사님은 권장하심
    • 그래도 최대한 똑같이 해야지 않나 싶어서 난 2로 했다. 
    • 하다가 안되면 1로 바꾸던가 할 순 있겠지만 시작부터 1로 하는 것은... 아닌 것 같다.
  • Time to retain data : 7 day
    • 로그를 연동해서 사용하는 케이스의 경우 데이터가 엄청 많을 수 있기 때문에
      해당 케이스의 경우 12시간이나 하루로 설정을 해야 한다.
    • 실습 환경에서는 7일로 설정한 것으로 보아
      일반적으로는 7일로 설정하는 것이 무방할지도
    • 실제 운영에서는 데이터 쌓이는 속도와 디스크 용량을 보면서 조절을 해야 하는 듯 싶다.

 

처음 프로젝트 실행

여기서 엄청 애먹었는데... ㅠㅠ
아무리봐도 실습이 안되는데...
내가 완성된 예제 branch를 보고 있었다..아오
처음엔 1-run-project라는 branch로 보면 hello world만 찍히는 처음 세팅만 된 환경을 볼 수 있다.
강사님이 너무 친절하게 다 환경을 만들어 놓으셨네..

hello 뿐이지만 swagger-ui가 붙어있는 실습 환경이라 학습하기 좋은 실습 환경이 구성되어 있다.

토픽을 만들고 이제 저 보일러 플레이트에서 개발을 시작하는 듯 하다.

블로그 이미지

감동맨

rkaehdaos의 블로그

,

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
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의 블로그

,