GDSC SungShin Women's University 23-24/Study

[자율스터디] 아파치 4월 스터디 보고

GDSC SungShin Team 2024. 6. 30. 17:47

 

 

 

안녕하세요 GDSC 5기 멤버 장유정입니다.

아파치 카프카 스터디 팀의 4월 스터디 진행 상황 보고를 시작하겠습니다 🍀

1. 스터디 진행 방식

  • 스터디 장소 및 요일: 매주 목요일 오후 9시 온라인 스터디
  • 스터디 전: 매주 정해진 분량의 강의 수강 후 블로그에 핵심 내용 정리해 일지에 업로드
  • 스터디 당일: 매주 정해진 발표자가 학습 내용 복습 및 퀴즈 풀기
  • 스터디원: 이유진, 박지현, 장유정

저희는 매주 정해진 분량의 강의를 각자 수강하고 학습한 내용을 개발 블로그에 업로드한 뒤, 일지에 각자의 포스팅을 공유하는 방식으로 스터디 전 개인 학습을 진행합니다. 이후 스터디 당일에는 매주 정해진 발표자가 학습 내용 복습을 주도하고, 마무리 퀴즈를 풀며 함께 열심히 성장하고 있습니다🌱

2. 강의 소개

[1] [데브원영] 아파치 카프카 for beginners → 수강 완료

 

[지금 무료] [데브원영] 아파치 카프카 for beginners 강의 | 데브원영 DVWY - 인프런

데브원영 DVWY | 아파치 카프카란 무엇일까? 아파치 카프카는 어떻게 동작할까? 아파치 카프카의 개념은 무엇이 있을까? 궁금하시다면 이 강의를 선택하세요😎, 아파치 카프카(Apache Kafka), 핵심을

www.inflearn.com

 

소개: 아파치 카프카 기본 개념부터 애플리케이션 개발까지 카프카에 대한 전반적인 중요 개념을 무료로 학습할 수 있습니다. 유료 강의를 수강하기 전에 미리 개념을 다잡을 수 있어서 추천합니다.

[2] [아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지! → 수강 중

 

[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!

데브원영 DVWY | 실전 환경에서 사용하는 아파치 카프카 애플리케이션 프로그래밍 지식들을 모았습니다! 데이터 파이프라인을 구축하는데 핵심이 되는 아파치 카프카의 각종 기능들을 살펴보고

www.inflearn.com

 

소개: 실전 환경에서 사용하는 아파치 카프카 애플리케이션 프로그래밍 지식들을 모아서 데이터 파이프라인을 구축하는데 핵심이 되는 아파치 카프카의 각종 기능들을 살펴보고 실습할 수 있습니다.

( 총 섹션 11 중 현재 섹션 4 학습 중 )

3. 학습 내용

[1] Apache Kafka 소개

아파치 카프카는 링크드인(LinkedIn)에서 데이터 파이프라인의 파편화를 개선하기 위해 개발한 시스템입니다. 카프카는 각각의 애플리케이션끼리 연결하여 데이터를 처리하는 것이 아닌 한 곳에 모아 처리할 수 있도록 중앙집중화했습니다. 카프카 파티션의 동작은 FIFO(Fisrt In First Out) 방식의 큐 자료구조로 동작합니다.

[2] 카프카의 구성 요소

 

Broker : Kafka를 구성하는 각 서버 1대 = broker 1대

Topic : Data가 저장되는 곳

Producer : Broker에 data를 write 하는 역할

Consumer : Broker에서 data를 read 하는 역할

Consumer-Group : 메시지 소비자 묶음 단위

Zookeeper : Kafka를 운용하기 위한 Coordination service

Partition : topic이 복사(replicated)되어 나뉘는 단위

 

[3] 카프카 데이터 흐름

먼저 프로듀서가 데이터를 토픽(가운데)으로 보내면 큐와 같이 토픽에 데이터가 저장됩니다. 토픽은 여러 파티션으로 구분할 수 있는데 데이터를 각 파티션에 분배하는 방법은 라운드 로빈으로 할당하거나 키를 사용해 특정 파티션을 지정하는 것도 가능합니다.

데이터를 파티션에 분배하는 ‘파티셔닝’에 대해 더 자세히 보겠습니다. 파티셔너는 데이터를 토픽의 어떤 파티션에 넣을지 결정하는 역할을 합니다. 파티셔너는 메시지 키가 있나 없냐에 따라 다르게 작동합니다.

[1] 키를 가지는 경우: 파티셔너에 의해 해쉬값이 생성되고 해당하는 파티션 번호로 배정됩니다 -> 파티션이 두 개면 동일한 메시지 키를 가진 레코드는 동일한 해쉬값을 생성해 동일한 파티션에 쌓입니다.

[2] 키가 없는 경우: 라운드 로빈으로 파티션에 들어가는데, 이때 일반적인 라운드로빈이 아니라 UniformStickyPartioner입니다.

컨슈머는 프로듀서가 토픽에 쌓아둔 데이터를 가져갈 수 있는데, 이때 오래된 순으로 가져가고, 컨슈머가 데이터를 가져가더라도 파티션의 데이터는 삭제되지 않고 그대로 남아있습니다. 덕분에 남은 데이터는 다른 컨슈머가 가져할 수 있습니다. 이렇게 동일 데이터에 대해 두 번 이상 처리할 수 있는 특징이 카프카의 주요한 기능입니다.

4. 앞으로 스터디 진행 방향

  • 현재 수강 중인 ‘카프카 프로그래밍’ 완강하기
  • 카프카를 사용한 토이 프로젝트 수행하기

감사합니다.