고승범(peter5236)

2024-10-17
지난 글에 이어 이번에는 카프카 커넥트 오프셋 관리 기능에 대해 설명하겠습니다. 혹시라도 1부 글 을 읽지 않으신 분들은 1부 글과 이어지는 내용이 있으니, 1부 글을 먼저 읽고 오시는 편이 좋을 것 같습니다. 지난 글에서 소스 커넥터는 프로듀서와 유사하고, 싱크 커넥터는 컨슈머와 유사하다는 말씀을 드린 적이 있습니다. 이번에 주로 다룰 내용은 싱크 커넥터와 오프셋 관련된 부분이므로 참고하시기 바랍니다. 싱크 커넥터와 오프셋 싱크 커넥터는 컨슈머와 유사한 기능을 하며, 카프카의 토픽에서 데이터를 읽은 뒤 싱크 시스템으로 전송하는 역할을 합니다. 컨슈머의 경우 카프카의 토픽에서 메시지를 읽어가게 되면, 컨슈머의 점검, 컨슈머의 확장, 컨슈머의 재시작 등을 유연하게 대응하기 위해 컨슈머가 메시지를 어디까지 읽었는지 위치를 표시하게 됩니다. 이러한 위치를 카프카에서는 오프셋이라고 하고, 컨슈머 그룹마다 오프셋 위치를 별도의 공간에 저장하게 됩니다. 컨슈머 그룹의 오프셋은 초기 카프카 버전에서는 주키퍼의 지노드에 저장하였습니다. 이는 성능상의 이슈로 현재 버전의 카프카에서는 카프카의 내부 토픽인 __consumer_offset 토픽에 저장하고 있습니다. 컨슈머...
2024-10-15
이번 글에서는 먼저 카프카 커넥트에 대해 간략한 소개를 하고, 3.5 버전부터 새롭게 추가된 카프카 커넥트 오프셋 관리 기능에 대해 소개하고자 합니다. 글은 총 2부로 나누어 작성하며, 먼저 1부에서는 카프카 커넥트 소개와 동작 방식에 대해 간략하게 소개하고, 다음으로 이어지는 2부에서 카프카 커넥트 오프셋 관리 기능에 대해 소개하겠습니다. 카프카 커넥트(Kafka Connect)란? 카프카 커넥트는 아파치 카프카(Apache Kafka)와 다른 시스템 간에 데이터를 보내고 받을 수 있는 도구입니다. 소스 시스템에서 카프카로 데이터를 스트리밍 하거나 카프카에서 싱크 시스템으로 데이터를 스트리밍 하는 것에 중점을 두며, 고품질, 안정성, 고성능 등을 제공하여, 사용자 및 관리자가 유연하게 사용할 수 있습니다. 뿐만 아니라, REST API를 제공하여 별도의 코드 작성 없이 사용자가 원하는 커넥터를 생성, 삭제 등을 할 수 있는 장점도 가지고 있습니다....
2024-03-29
이번 글에서는 이전 글에 이어 KRaft의 구성 방법, 마이그레이션 전략, 릴리스 노트와 향후 계획에 대해 살펴보겠습니다. 아직 이전 글 을 읽어보지 못한 분들은 이전 글을 먼저 읽어보시기를 추천드립니다. KRaft의 구성 전통적인 주키퍼 모드를 사용하면서 많은 사용자들이 느꼈던 불편함 중 하나는 바로 주키퍼와 카프카 서버를 별도로 운영해야 한다는 점이었습니다. 이는 단순히 별도의 애플리케이션 운영 관리를 넘어서, 추가로 별도의 물리적 서버 자원의 할당까지 포함하고 있습니다. 제가 받은 많은 질문 중 하나도, 주키퍼 물리 서버의 할당과 관련된 주제로, 주키퍼와 카프카를 동일한 서버에서 실행해도 되는지에 관한 것이었습니다. 사실 주키퍼는 카프카를 관리하는 역할을 하므로, 이상적으로는 카프카와 분리된 별도의 서버에서 운영하는 것을 권장합니다. 하지만 이는 강제성을 요구하는 것도 아니고, 서버의 리소스 제약이 있는 경우 주키퍼와 카프카를 동일한 서버에서 실행할 수도 있습니다. KRaft의 등장 이후 카프카 사용자들이 환영한 변화중 하나는 주키퍼의 의존성 제거입니다. 이는 애플리케이션의 관리 단순화뿐만 아니라, 물리적 서버의 리소스 절감도 가능하다고 생각했던 것 ...
2024-03-26
이번 글에서는 아파치 카프카(Apache Kafka)의 새로운 협의 프로토콜인 KRaft에 대해 다룰 예정입니다. 카프카를 사용하면서 초기에는 최신 버전의 릴리스를 추구했지만, 카프카가 점점 데이터 파이프라인의 중심이 되면서 보다 보수적으로 접근하게 되었습니다. 지금까지 KRaft에 대해 크게 고려하지 않았으나 이제는 KRaft에 대한 준비와 주키퍼 모드로 운영 중인 카프카를 마이그레이션 하는 방법 등에 대해서도 심도 있는 검토가 필요한 생각이 들었습니다. 이번에 새롭게 KRaft에 대한 자료 조사도 하고, 마이그레이션 테스트도 진행하면서 경험한 내용들을 간략히 공유하고자 합니다. 전체 글의 내용은 KRaft의 등장 배경과 중요성, 마이그레이션 전략, 릴리스 노트와 향후 계획 등을 설명하며, 총 2편으로 나누어 작성하겠습니다. 먼저 KRaft의 등장 배경과 중요성에 대해 살펴보겠습니다....
2019-09-19
이번 주제는 디스크와 관련된 주제로 글을 작성해보겠습니다. 디스크 구성과 관련된 질문들을 여러 차례 받은 경험도 있고, 이러한 주제를 가지고 정리된 글은 없다고 생각되어 적게 되었습니다. 디스크 구성에 대해 이러한 방식이 표준이다라는 정답은 없지만, 향후 규모가 큰 카프카 클러스터를 구성하거나 IO 때문에 고민이신 분들에게 조금이나마 도움이 되었으면 합니다. 사실 예전부터 쓰려고 했던 주제였는데 조금 늦어졌습니다. 오래된 내용이지만, 기억에 의존해가며 작성해보겠습니다....
2019-07-08
카프카 보안과 커버로스(Kerberos)를 이용해 구성하는 방법에 대해 다루는 글을 쓰려다가, 현재 제가 구성한 보안 클러스터 구성환경에 접속할 수도 없고 새로 구성하기도 어려운 상황이라, 평소 주위 분들에게 많은 질문을 받은 “빠르게 카프카 사용하기”라는 주제로 먼저 글을 써봐야겠다는 생각이 들었습니다. 이 내용은 생각보다는 매우 단순하고 쉽습니다. 이 글이 필요한 분들은 다음과 같습니다. 카프카를 빨리 구성해야 한다. 카프카를 빨리 업무에 사용해야 한다....
2019-01-10
최근에 카프카 운영과 관련해 어드민 페이지 개선 작업을 했고, 워크 큐로 카프카를 활용하여 관련 내용을 공유하고자 합니다....
2018-05-03
이번 글은 카프카와 관련된 주제가 아닌 시스템 엔지니어로서 제가 담당하는 서비스에서 실제로 트러블슈팅했던 내용을 공유하고자 합니다. 이 글 중간에 나오는 TIME_WAIT이나 tw_reuse, tw_recycle에 대한 이야기는 제가 가진 지식보다 정리를 잘 해주신 분들이 있기 때문에 자세히 다루지 않고, 경험한 내용을 바탕으로 필요한 부분만 간략하게 설명하겠습니다. 저와 같이 유사한 사례가 발생했을 때 빠른 원인 파악 후 간단하게 해결하였으면 하는 바람입니다....
2018-04-25
최근 운영하고 있던 카프카 매니저를 최신 버전으로 업그레이드를 진행하였고, 이번 글에는 카프카 매니저에 대해 공유하고자 합니다. 카프카에 대한 예전 글들도 있으니 필요하신 분들은 참고하시면 좋을 것 같습니다. Kafka 운영자가 말하는 처음 접하는 Kafka Kafka 운영자가 말하는 Kafka Consumer Group Kafka 운영자가 말하는 Producer ACKS Kafka 운영자가 말하는 Kafka 서버 실전 로그 분석 Kafka 운영자가 말하는 TIP Kafka 운영자가 말하는 Topic Replication kafka 운영자가 말하는 Replication Factor 변경...
2018-03-06
이번 글에서는 kafka에서 사용하는 토픽의 Replication Factor(이하 RF)를 변경하는 방법에 대해 설명하겠습니다. kafka에 대한 예전 글들도 있으니 필요하신 분들은 참고하시면 좋을 것 같습니다. Kafka 운영자가 말하는 처음 접하는 Kafka Kafka 운영자가 말하는 Kafka Consumer Group Kafka 운영자가 말하는 Producer ACKS Kafka 운영자가 말하는 Kafka 서버 실전 로그 분석 Kafka 운영자가 말하는 TIP Kafka 운영자가 말하는 Topic Replication 카프카를 운영하다 보면, 토픽의 RF를 변경해야 하는 경우가 종종 있습니다. 한 가지의 사례를 예를 들어 설명하겠습니다. 1. 테스트 용도로 토픽을 생성합니다. 토픽의 생성 옵션은 테스트로 사용할 예정이다 보니 partition:1, RF:1로 만들고 난 후 테스트를 진행합니다. 2. 테스트가 성공적으로 끝난 후 테스트 용도의 토픽이라는 사실을 잊고 실제 리얼 환경까지 적용합니다. 3. 서비스 운영 중인 상태에서 모니터링을 하다 우연히 RF1로 만들어진 토픽이라는 사실을 알게 됩니다.(ㅠㅠ)...
더보기