23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
안녕하세요 저는 데이터 엔지니어링을 공부하고 있는 취업준비생 추태욱입니다. 😊
Kafka KRU에서 주최했던 2023 kafka 스터디 후기를 간략하게 정리해볼까합니다.
올해 7월에 데이터 엔지니어 과정을 들은 뒤, kafka에 대해 관심이 생겨 여러 책과 인강으로 홀로 공부하고 있는 중이였습니다.
카프카 관련 서적으로 <실전 카프카 - 개발부터 운영까지>라는 책을 접하게 되었습니다.

책에 대한 서칭을 해보다 마침 책의 저자 분(고승범님)께서 KafkaKRU의 스터디를 모집하고 있다는 게시글을 보게 되어 스터디를 신청하게 되었습니다.
카프카를 처음 접하시는 분들을 위해 간단히 Kafka를 설명 드리자면
Kafka는 이벤트 처리 시스템 중 하나인 분산 메세지 큐 (비동기) 방식 이벤트 스트리밍 플랫폼입니다.
사전에 정해놓은 topic에 따라 메세지들을 처리하는 모델이라고 보시면 될 것 같습니다.
한 줄로 요약하면 kafka는 발생하는 이벤트들을 topic에 따라 분류하고 수집/저장/처리를 해주는 플랫폼이라고 할 수 있겠습니다.
이벤트 스트리밍 처리 시스템이란?
데이터베이스, 센서 및 모바일 장치와 같은 이벤트 소스에서 발생하는 실시간 데이터를 이벤트 스트림 형태로 캡처하고 저장/처리하는 방법
분산 메세지 큐잉이란?
message queue 서버를 별도로 두고 application은 message queue 서버에 대한 client 로서 pub-sub 모델로 데이터를 읽고 쓰는 방식
pub-sub 모델?
publisher(공급자), subscriber(구독자) 모델로 publisher는 이벤트 데이터를 공급하고, subscriber는 구독한 이벤트를 수신
consumer - producer?
Topic 을 중심으로 producer 라고 하는 publisher 와 consumer(group) 이라고 하는 subscriber 로 데이터를 관리하고 처리
Kafka의 개념을 쉽게 이해해보고자 kafka를 우체국으로 표현(비유)해 보았습니다.
나라별로 각 국에서 동시다발적으로 편지(이벤트,events)를 보내옵니다. 편지 봉투 앞부분에 꼭 나라명(토픽,topic)을 붙이고 편지 봉투 안에 편지지(contents)가 들어있습니다.
각 나라마다 개별 우체통(producer1,producer2,…)이 존재합니다. 편지들은 우체통(producer)에 모인 뒤 특정 일시에 우체국(kafka)으로 발송됩니다.
우체국(kafka)은 우체통들의 편지지를 봉투 앞 부분에 적힌 나라별(토픽,topic)로 보관합니다. 이 때 보관하는 공장(브로커,broker)들이 있습니다. 공장마다 적재하는 편지보관함(partitioin)들이 부서별로 나누어져 있습니다. 예를 들면 공장 1동-1부서 (broker1-partition1) 입니다.
공장(broker)은 들어온 편지들을 나라(topic)에 따라 편지보관함(partition)에 적재하고 잃어 버리지 않게 다른 공장에 똑같이 복제(replicate)해놓습니다.
편지를 보고 싶어하는 사람들(consumer)은 받고 싶은 편지의 나라(topic)을 우체국(kafka)에 전달하면 우체국(kafka)은 해당 나라(topic)의 편지들을 가지고 있는 공장(broker)부서와 연결해줍니다. 예를 들면 A라는 사람이 “대한민국” 나라의 편지가 보고 싶다고 우체국에 말하면 대한민국 편지를 가지고 있는 공장 1동-1부서에 연결됩니다.
공장은 연결된 사람들(consumer)에게 편지(events)가 들어올 때마다 바로바로 전송해줍니다.
공장이 예상치 못하게 중단되거나, 공장이 늘어나버리면 어떻게 관리해야 할까요? 공장들을 전체적으로 관리해주는 공장관리자(zookeeper)가 있습니다!
단순하게 표현하면 kafka는 위 그림과 같은 구조겠네요!
빠른 데이터 수집이 가능한 높은 처리량
이벤트 처리 순서 보장
적어도 한 번 전송 방식 : 멱등성(idempotent)
멱등성 : 동일 작업을 여러 번 수행하더라도 결과가 달라지지 않는 현상
At Least Once 보장
강력한 파티셔닝
토픽을 여러 개로 분할 = 수평 확장 가능
병목 문제 해결, 모니터링, 스냅샷 기능 제공
Kafka와 연계할 수 있는 플랫폼 (실시간 스트리밍형 플랫폼)
기초적인 예시 : 쇼핑몰 플랫폼, IoT 플랫폼
실제 사용처 : 우버, 넷플릭스, 트위터(현재 이름 : X)
Kafka 실습 해보기 : 고승범님 공유 링크
온라인 Zoom으로 조별 발표가 이루어졌고, 마지막 4주차엔 오프라인으로 조별 발표가 이루어졌습니다.
4주 동안 고승범님의 저서 : <실전 카프카 개발부터 운영까지>를 바탕으로 기술 공부했습니다.
4개의 조가 한 주에 한 번씩 발표를 맡아 진행했습니다.
책에서 정리한 내용 + 추가적으로 스터디한 부분을 발표해주셨습니다.
Notion으로 정리해서 발표하신 분도 있고, PPT로 만들어 발표하는 등 자유롭게 발표를 진행했습니다.
이 후엔 질의응답 시간도 가졌습니다. (개인적으로 이 시간이 제일 좋았습니다.)
발표 시간 이 후에 책의 챕터별로 고승범님이 직접 퀴즈를 내주셨습니다. 고득점자에겐 따로 선물도 챙겨주셔서 더 몰입해서 Kafka를 공부했던 것 같습니다.
퀴즈 예시
Q : 주키퍼 구성의 tickTime이 1000, initLimit이 40, syncLimit이 5일 때, 팔로워가 주키퍼 리더에게 연결할 수 있는 시간 제한은 얼마인가?
A : 40sec
tickTime : 한번 작업할 수 있는 최대 시간
initLimit : 횟수
syncLimit : 싱크가 맞아야 하는 최소 시간
Notion에 질문 게시판에 질문을 올리면 저자님 혹은 스터디원 분들이 빠르게 답변을 올려주셨습니다.
위의 공식적인 스터디 외에 스터디 조원끼리 각자 스터디 방식을 꾸려나가는 방식이라 조마다 각자의 스타일로 스터디를 진행했습니다.
저희 조는 커뮤니티 앱인 slack을 위주로 질문을 올리고 답하는 형식으로 스터디를 진행했습니다.
굳이 Kafka가 아니더라도 모든 공부에는 공통적으로 요구되는 것들이 있습니다.
그건 “호기심”과 호기심을 충족시킬 “나만의 해답”입니다.
공부는 크게 세 단계로 나누어질 수 있습니다.
처음 지식을 접하는 단계 (호기심)
해당 지식이 왜 발생하게 되었는지(유래,배경), 사용하는 목적이 무엇인지 (이유)
내가 아는 지식과 다른 점은 무엇인지, 어떻게 활용하면 좋을지 (확장,적용)
공부는 결국 혼자 해야 합니다. 하지만 1번, 2번의 단계에서 대부분 멈춰버리곤 합니다.
3번까지 완전하게 이루어내기 위해선 분명 “먼저 공부한 사람들”의 힘이 필요합니다.
Kafka가 어려워서 배울 엄두를 못 내고 있거나 공부하다 의욕이 떨어져 버린 경우 커뮤니티에 참여해보세요. 그리고 다른 분들에게 도움을 받아보세요!! 분명 도움이 될 거에요.
바쁜 시간 내서 봐주셔서 감사합니다! 좋은 하루 되세요!
Kafka KRU 정보
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.