[Apache Kafka] 기본 개념 및 용어 정리

01. Kafka의 시작

00) 시작하기 전에

아파치 KAFKA 를 이해하기 위해서는 이벤트의 대한 이해가 필요합니다. 이에 따라 이벤트의 대한 개념을 설명하고, 뒤에 설명을 드리겠습니다.

(01) 이벤트란(Event) ?

이벤트란, 시스템 상 혹은 비즈니스 상 발생되는 모든 데이터를 이야기 합니다.
-> 일반적으로, 우리가 생각하는 클릭도 이벤트에 해당하고, 키보드의 키를 누르는 행위도 이벤트에 해당 합니다.

(02) 이벤트 스트림 이란 ?

이벤트 스트림은 이벤트의 흐름 즉, 데이터가 이동하는 것을 이야기 합니다.

예를 들자면, 키보드를 200타를 치는 사람은 1분에 이벤트를 200타를 발생 시킬 수 있습니다. 이런 데이터는 1분에 200건의 이벤트 스트림이 발생한다고 볼 수 있습니다.

(03) 메세지 큐 시스템(MQ)

메세지 큐는 서버와 클라이언트 간의 통신을 돕기 위해 만들어 졌습니다. 기본적으로 클라이언트는 서버가 정상적으로 데이터를 수신 했다고 하기 이전까지는 데이터를 지니고 있어야 합니다. 그러다 보니 서버의 부하가 있는 경우 클라이언트는 요청이 실패하여, 데이터를 보관하고 있어야 하는 단점이 있었습니다.

이를 극복하기 위해, 클라이언트와 서버 사이에 주고 받는 데이터를 보관할 수 있는 메세지 큐를 만들었습니다. 서버와 클라이언트는 요청을 직접 받지 않고, 메세지 큐에 대상에게 보낼 데이터를 넣거나, 자신에게 온 데이터를 보면서 처리할 수 있도록 하였습니다.

이를 통해, 지연이 있는 상황에서도, 클라이언트 서버 모두 상대가 응답하지 않아 대기 상태로 있지 않게 할수 있습니다.
또한, 메세지 큐의 경우 여러 서버에서 동시에 사용가능하니, 처리하는 서버에 직접적인 확장 없이 많은 데이터를 처리 할 수 있게 되었습니다.

01) Apahce Kafka 탄생 배경

카프카를 개발한 링크드인은 아래와 같은 상황을 가지고 있었습니다.

[상황 ]
1. 하루 5 조개 이상의 이벤트 스트림* 처리가 필요
2. 하루 3,000억 개 이상의 사용자 관련 이벤트 스트림* 처리 필요

[ 문제 ]
기존 MQ 서비스(메세지 큐)*의 경우 대용량 데이터 처리시, 지연시간의 상승으로 실시간 데이터 처리가 어려워 졌습니다.

[해결]

자체적으로 이벤트를 처리할 수 있는 솔루션을 만들고자 하였고, 그 결과 카프카가 탄생 하였습니다.

02) Kafka 란 ?

Apache Kafka 는 대용량 Event Streaming(이벤트 스트리밍)을 처리하기 위한 플랫폼 입니다.
(쉽게 이야기 해서는 움직이는 데이터를 처리하기 위한 플랫폼 이라고 보시면 됩니다. )

Kafka Event Stream

[출처] https://developer.confluent.io/patterns/event-stream/event-stream/

03) Kafka 의 특징

  1. 이벤트 스트림을 안전하게 주고 받을 수 있도록 구성 하였습니다.
  2. 이벤트 스트림을 디스크에 저장 합니다.
    -> 메세지 큐의 경우, 메모리 상에서 저장하기에 용량과 비용적으로 고비용이 소모 되었습니다.
    그렇기에, 대용량 데이터를 처리 하기에는 적합하지 않았습니다.
    이를 극복 하기 위해, HDD 를 이용한 메세지 큐를 만들어 내었습니다.
    (참고로, HDD의 속도는 메모리 보다 느리긴 하지만, 데이터를 순차 저장 함으로써, 하드 디스크 속도를 극대화 시켰습니다. )
  3. 이벤트 스트림 분석 및 처리
    ( 현재 전송되고 있는 데이터 들을 분석하고, 처리가 가능해 졌습니다. )

04) 기존 메세지 큐보다 얼마나 좋아 졌는가 ?

출처 : confluent.io

기존에, 주로 많이 사용되던 RabbitMQ 의 경우 대용량 데이터 처리는 지원되지 않아, 30 MB 까지 제한된채 사용 되었습니다.
크지 않은 데이터에서는 RabbitMQ가 메모리를 사용하기에 속도가 좋았지만, 대용량 데이터를 지원하지 못하였고, 대용량 데이터를 지원하는 플랫폼 에서는 Kafka가 빠르게 처리할 수 있음 확인할 수 있었습니다.

02. Apache Kafka에서 사용되는 용어 개념

01) Topic, Producer, Consumer

(01) Topic

Kafka 안에서 메세지가 저장되는 장소의 논리적인 표현
– 쉽게 이야기하면, 그냥 메세지를 저장할때 분류로 정하는 개념과 동일 합니다. 예를 들자면, 쇼핑몰에서 나눈다면 결제 모듈, 장바구니 모듈, 상품 모듈 등으로 구분 지어 놓는 기준 입니다.

(02) Producer

메세지를 생산하는 생산자 입니다. ( 클라이언트가 요청을 보낸다고 보셔도 됩니다. )
(데이터의 변화가 발생하면 이 이벤트를 Kafka 측에 보내는 역할을 합니다. )

(03) Consumer

메세지를 가져와 활용하는 소비자를 이야기 합니다.
(자신이 참고해야하는 메세지를 보고 메세지를 소비합니다. )

(04) Consumer Group

동일한 데이터를 처리할 수 있는 Consumer 서버가 2대 이상인 경우, 이를 그룹화 하는 것을 이야기 합니다. 이를 통해, 자신에게 할당된 메세지를 분산 병렬 처리 할수 있게 됩니다.

02) Commit Log, Offset , Log-END-OFFSET 등 Offset

(01) Commit Log

우리가 흔히 생각하는 Git 과 같은 형상관리의 Commit Log 와 동일한 개념입니다. 다만, 코드가 아닌 이벤트를 저장하고 기록하는 로그 입니다. 그리고, 커밋 로그는 기본적으로, 변경이 불가능한 데이터 구조를 지니고 있습니다.

(02) Offset

offset 은 말그대로 거리 차이를 의미 합니다. 일반적으로 Offset 이란 단어로만 사용 되는 경우 로그의 시작점 부터 끝점 까지의 차이 거리를 이야기 합니다.

(03) Log-end-offset

말 그대로, 로그의 마지막 위치 입니다. 로그는 기본적으로 생산자에 의해 쓰여지기 때문에, 생산자가 마지막으로 등록한 이벤트의 위치라고 이해하시면 됩니다.

(04) Current-offset

Consumer 가 읽는 로그의 위치를 이야기 합니다.

(05) Consumer-Lag

[ 마지막 커밋 위치 – 현재 소비하고 있는 위치의 차이를 이야기 합니다.

03) Topic, Partition, Segment

(01) Topic

Kafka 안에서 메세지가 저장되는 장소의 논리적인 표현
– 쉽게 이야기하면, 그냥 메세지를 저장할때 분류로 정하는 개념과 동일 합니다. 예를 들자면, 쇼핑몰에서 나눈다면 결제 모듈, 장바구니 모듈, 상품 모듈 등으로 구분 지어 놓는 기준 입니다.

(02) Partition

앞서 배운 Commit Log 와 동일한 개념 입니다. 1개의 토픽은 여러개의 파티션을 구성할 수 있습니다.
(일반적으로, 토픽은 여러개의 파티션을 무조건 구성하게 됩니다. 이유는, Multi Partition 을 구성하면, 데이터의 병렬 처리가 가능해지기 때문입니다. )

  • 카프카의 데이터를 저장하는 서버(Broker)는 여러대가 될 수 있습니다. 이때, 파티션을 여러개로 분할 하면, 여러개의 서버에 파티션이 분산 저장되는 효과도 있습니다. (동일한 데이터를 가지는 개념은 아니며, 같은 Topic 의 데이터 이지만 여러 곳에 저장된다고 보시면 됩니다. )

(03) Segment

메세지(데이터)가 저장되는 실제 물리적인 파일을 이야기 합니다.

  • Segement 의 분할 기준 ( Rolling Strategy [롤링 정책] )
    • log.segment.bytes [기본 1 GB] : 메세지 파일의 크기가 1 GB 가 되면 다음 파일로 넘어간다
    • log.roll.hours [기본 168 시간] : 메세지의 시간이 168시간이 되면 다음 파일로 넘어 간다. ( 일반적으로 많이 사용 )

04) Broker , Zookeeper/Kraft

(01) Broker

브로커는 Kafka를 구성하는 서버를 이야기 합니다. (실제로는 Partition 에 대한 Read / Write 를 관리하는 SW 를 이야기 합니다. )

(02) Kafka Cluster

여러대의 브로커를 묶어 놓은 것을 이야기 합니다. 기본적으로, Cluster 를 설정하기 위해서는, 3대 이상의 서버를 묶어야 하며 4대 이상을 권장하는 편 입니다.

(03) Bootstrap Server

부트스트랩의 용어는 굉장히 모호한 개념이지만, Kafka 에서는 Kafka 클러스터 중 서버 1대에 만 연결해도 전체 서버가 연결되도록 해준다는 개념으로 사용 되고 있습니다.
(그렇기에, 클라이언트 입장에서는 1대의 서버 접속 정보만 알고 있어서 클러스터에 접근할 수 있다는 장점이 있지만, 해당 서버가 장애가 발생할 것을 대비하여, 클러스터 전체의 정보를 가지고 있는 것이 좋습니다. )

(04) Zookeeper

Zookeeper 는 브로커들을 관리하는 소프트웨어 입니다.
Zookeeper는 원래 분산형 서버들의 설정 정보를 유지하고, 분산 동기화 서비스를 제공 하였습니다.

그렇기에 Kafka 는 초기 클러스터 유지 관리를 위해, Zookeeper 를 통해 구성하였습니다.
( 하지만, Zookeeper 를 사용하면서, 클러스터의 대한 최적화 부분이나, 메타 데이터 들이 카프카 클러스터 외부로 노출 되는 점등이 있어, KIP-500 [카프카 개선 요청] 을 통해서, Zookeeper 를 대체할 Kraft 가 개발 되었고, 2022년 때 배포 되었습니다. 다만, 현재는 Zookeeper의 기능 보다 부족한 부분이 있어, 2024년에 출시될 4.0 버전 부터 완전히 대체될 예정입니다. )

KRAFT 설명 주소

279 thoughts on “[Apache Kafka] 기본 개념 및 용어 정리”

  1. Hello, There’s no doubt that your blog may be having web browser compatibility issues. When I look at your blog in Safari, it looks fine however, if opening in I.E., it has some overlapping issues. I just wanted to provide you with a quick heads up! Apart from that, excellent site!

    응답
  2. When I initially commented I appear to have clicked the -Notify me when new comments are added- checkbox and now whenever a comment is added I recieve four emails with the same comment. Perhaps there is an easy method you can remove me from that service? Thank you.

    응답
  3. Oh my goodness! Awesome article dude! Thanks, However I am having problems with your RSS. I don’t know why I am unable to subscribe to it. Is there anybody else getting similar RSS problems? Anyone that knows the solution can you kindly respond? Thanx!!

    응답
  4. Oh my goodness! Awesome article dude! Thanks, However I am experiencing issues with your RSS. I don’t know why I cannot subscribe to it. Is there anybody getting identical RSS problems? Anybody who knows the solution will you kindly respond? Thanx.

    응답
  5. Having read this I believed it was really enlightening. I appreciate you spending some time and effort to put this content together. I once again find myself spending a significant amount of time both reading and leaving comments. But so what, it was still worthwhile!

    응답
  6. I really love your site.. Excellent colors & theme. Did you develop this amazing site yourself? Please reply back as I’m wanting to create my own personal site and would like to learn where you got this from or what the theme is called. Thanks.

    응답
  7. May I just say what a relief to uncover someone that really understands what they are discussing on the net. You definitely know how to bring a problem to light and make it important. More and more people ought to look at this and understand this side of the story. It’s surprising you’re not more popular given that you definitely possess the gift.

    응답
  8. I seriously love your website.. Great colors & theme. Did you build this website yourself? Please reply back as I’m trying to create my own personal website and want to find out where you got this from or exactly what the theme is named. Many thanks!

    응답
  9. Right here is the perfect blog for anyone who really wants to understand this topic. You understand so much its almost hard to argue with you (not that I personally will need to…HaHa). You definitely put a brand new spin on a subject that’s been discussed for ages. Great stuff, just great.

    응답
  10. I’m impressed, I have to admit. Rarely do I encounter a blog that’s equally educative and entertaining, and without a doubt, you’ve hit the nail on the head. The issue is something too few folks are speaking intelligently about. I am very happy that I stumbled across this during my search for something concerning this.

    응답
  11. Hi, I do believe this is an excellent blog. I stumbledupon it 😉 I will return yet again since I saved as a favorite it. Money and freedom is the greatest way to change, may you be rich and continue to guide others.

    응답
  12. When I initially left a comment I appear to have clicked on the -Notify me when new comments are added- checkbox and now whenever a comment is added I get 4 emails with the exact same comment. Is there an easy method you can remove me from that service? Cheers.

    응답
  13. I was excited to uncover this page. I want to to thank you for your time just for this wonderful read!! I definitely enjoyed every bit of it and i also have you book-marked to see new stuff on your site.

    응답
  14. Hi there! This post could not be written any better! Going through this post reminds me of my previous roommate! He continually kept preaching about this. I most certainly will send this article to him. Fairly certain he’ll have a good read. Thank you for sharing!

    응답
  15. I’m impressed, I have to admit. Seldom do I come across a blog that’s equally educative and entertaining, and without a doubt, you have hit the nail on the head. The issue is something which not enough folks are speaking intelligently about. Now i’m very happy I found this in my search for something concerning this.

    응답
  16. This is the perfect site for everyone who hopes to understand this topic. You realize so much its almost tough to argue with you (not that I really would want to…HaHa). You definitely put a brand new spin on a subject that has been written about for decades. Great stuff, just excellent.

    응답
  17. Oh my goodness! Impressive article dude! Many thanks, However I am experiencing troubles with your RSS. I don’t understand why I cannot subscribe to it. Is there anyone else having identical RSS issues? Anybody who knows the answer will you kindly respond? Thanx!!

    응답
  18. Integrating Sugar Protector right into my day-to-day routine overall well-being.

    As somebody who focuses on healthy and balanced consuming, I appreciate the additional protection this supplement offers.
    Because starting to take it, I have actually observed a marked renovation in my
    energy degrees and a substantial reduction in my wish for unhealthy
    snacks such a such a profound influence on my every day life.

    응답
  19. For many years, I have actually fought unpredictable blood sugar level
    swings that left me feeling drained pipes and sluggish.
    Yet since incorporating Sugar Protector into my routine, I have actually seen a
    considerable enhancement in my total energy
    and stability. The dreaded mid-day thing of the past, and I value that this natural
    treatment accomplishes these outcomes with no unpleasant or damaging responses.
    honestly been a transformative exploration for me.

    응답
  20. Finding Sugar Protector has been a game-changer for me, as I’ve
    always been vigilant concerning handling my blood sugar level levels.
    I now really feel encouraged and certain in my capacity to
    keep healthy levels, and my most current health checks have mirrored
    this development. Having a trustworthy supplement to complement my a huge
    source of convenience, and I’m absolutely grateful for the
    considerable distinction Sugar Protector has made in my general
    well-being.

    응답
  21. I’ve struggled with blood glucose variations for several years,
    and it actually impacted my energy levels throughout the day.
    Given that starting Sugar Protector, I really feel much more well balanced and
    alert, and I don’t experience those afternoon sags any
    longer! I enjoy that it’s an all-natural
    remedy that functions with no severe negative effects.

    It’s genuinely been a game-changer for me

    응답
  22. For several years, I have actually fought unforeseeable
    blood sugar swings that left me really feeling drained pipes and sluggish.
    Yet because integrating Sugar my power levels are currently secure and constant, and I no longer
    hit a wall in the mid-days. I value that it’s a mild, natural technique that does not included any type of unpleasant adverse effects.
    It’s truly transformed my every day life.

    응답
  23. Sugarcoating Defender to my day-to-day routine was among the
    most effective choices I’ve produced my health and wellness.
    I take care regarding what I eat, yet this supplement includes an added
    layer of support. I feel much more consistent throughout the day, and
    my yearnings have decreased significantly. It behaves to have something so straightforward that makes such a huge difference!

    응답
  24. An impressive share! I have just forwarded this onto a friend who was conducting a little homework on this. And he actually bought me dinner due to the fact that I found it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanks for spending time to talk about this matter here on your site.

    응답
  25. After looking at a few of the blog articles on your site, I truly like your technique of blogging. I book marked it to my bookmark webpage list and will be checking back soon. Take a look at my web site too and let me know how you feel.

    응답
  26. Right here is the right website for anyone who hopes to understand this topic. You realize a whole lot its almost hard to argue with you (not that I actually would want to…HaHa). You definitely put a fresh spin on a subject which has been written about for years. Excellent stuff, just excellent.

    응답
  27. The next time I read a blog, I hope that it doesn’t fail me just as much as this one. I mean, I know it was my choice to read, nonetheless I genuinely thought you would have something useful to talk about. All I hear is a bunch of crying about something that you could possibly fix if you were not too busy looking for attention.

    응답
  28. Hello, I do think your web site could be having browser compatibility problems. When I take a look at your blog in Safari, it looks fine however, when opening in IE, it’s got some overlapping issues. I simply wanted to provide you with a quick heads up! Aside from that, wonderful website.

    응답
  29. Hello! I could have sworn I’ve been to your blog before but after browsing through some of the articles I realized it’s new to me. Regardless, I’m certainly pleased I found it and I’ll be bookmarking it and checking back frequently.

    응답
  30. Oh my goodness! Incredible article dude! Thanks, However I am encountering problems with your RSS. I don’t understand why I can’t join it. Is there anybody getting the same RSS problems? Anyone who knows the solution will you kindly respond? Thanx!

    응답
  31. An impressive share! I have just forwarded this onto a friend who was doing a little homework on this. And he in fact bought me dinner due to the fact that I stumbled upon it for him… lol. So allow me to reword this…. Thank YOU for the meal!! But yeah, thanx for spending some time to talk about this issue here on your internet site.

    응답
  32. sugar defender reviews For many years, I have actually battled unforeseeable blood glucose swings that
    left me really feeling drained pipes and inactive. However since integrating Sugar my energy levels are currently
    stable and regular, and I no longer strike a wall in the afternoons.

    I appreciate that it’s a gentle, natural technique that doesn’t come
    with any unpleasant adverse effects. It’s truly changed my
    daily life.

    응답
  33. I have to thank you for the efforts you’ve put in penning this website. I’m hoping to check out the same high-grade blog posts by you later on as well. In fact, your creative writing abilities has motivated me to get my very own website now 😉

    응답
  34. Next time I read a blog, Hopefully it won’t disappoint me just as much as this particular one. After all, I know it was my choice to read through, however I actually thought you’d have something interesting to talk about. All I hear is a bunch of moaning about something that you could possibly fix if you weren’t too busy looking for attention.

    응답

Leave a Comment