Apache Kafka란 무엇일까요?
요약
Apache Kafka는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산형 데이터 스트리밍 플랫폼입니다. 여러 소스에서 데이터 스트림을 처리하고 여러 사용자에게 전달하도록 설계되었습니다. 간단히 말해 A지점에서 B지점까지 이동하는 것뿐만 아니라 A지점에서 Z지점을 비롯해 필요한 모든 곳에서 대규모 데이터를 동시에 이동할 수 있습니다.
Apache Kafka는 전통적인 엔터프라이즈 메시징 시스템의 대안입니다. 하루에 1조 4천억 건의 메시지를 처리하기 위해 LinkedIn이 개발한 내부 시스템으로 시작했으나, 현재 이는 다양한 기업의 요구 사항을 지원하는 애플리케이션을 갖춘 오픈소스 데이터 스트리밍 솔루션이 되었습니다.
Apache Kafka 비동기 통합: 실시간 데이터 처리의 핵심
마이크로서비스는 개발 환경을 바꾸어 놓았습니다. 공유 데이터베이스 계층과 같은 종속성을 줄여 개발자들이 더욱 민첩하게 작업을 수행하도록 해줍니다. 그러나 개발자가 구축 중인 분산형 애플리케이션이 데이터를 공유하려면 특정한 유형의 통합이 필요합니다. 널리 사용되는 통합 옵션으로 동기식 방법이 있는데, 이는 서로 다른 사용자 간 데이터를 공유하는 데 애플리케이션 프로그래밍 인터페이스(API)를 활용합니다.
또 다른 통합 옵션으로는 중간 스토어에서 데이터를 복제하는 비동기식 방법이 있습니다. Apache Kafka는 바로 이런 맥락에 등장하는 솔루션으로, 다른 개발팀의 데이터를 스트리밍하여 데이터 스토어를 채우면 해당 데이터를 여러 팀과 이들의 애플리케이션 간에 공유할 수 있게 됩니다.
마이크로서비스 팀의 통합 요구 사항은 전통적인 워터폴(waterfall) 개발팀과는 다릅니다. 이들 팀은 다음과 같은 3가지 기반 기능을 필요로 합니다.
- 분산형 통합: 필요한 경우 지속적으로 배포할 수 있는 경량의 패턴 기반 통합으로, 중앙집중식 ESB 유형 배포의 제약을 받지 않습니다.
- API: 파트너, 고객 및 개발자로 이루어진 에코시스템을 구현하는 API 기반 서비스로, 신뢰성과 수익성을 갖춘 유용한 활용 방안을 제공합니다.
- 컨테이너: 클라우드 네이티브 방식의 커넥티드 애플리케이션을 개발, 관리 및 확장하는 플랫폼입니다. 컨테이너는 개별 배포 방식으로 DevOps 프로세스에 포함되면서, 즉시 사용 가능한 클러스터링에 의해 지원되는 린(lean) 아티팩트 개발을 사용할 수 있도록 함으로써 고가용성을 보장합니다.
Red Hat에서는 이러한 접근 방식을 "애자일 통합"이라 부릅니다. 애플리케이션 개발 프로세스의 일부로 통합을 수행하여 민첩하고 적응성을 갖춘 솔루션을 제공할 수 있습니다. 애플리케이션의 구체적인 요구 사항에 따라 동기식 또는 비동기식 통합을 애자일 통합의 일부로 자유롭게 사용할 수 있습니다. Apache Kafka는 비동기식 이벤트 기반 통합을 사용하여 동기식 통합과 API 사용을 확대하고 마이크로서비스 및 애자일 통합까지 지원할 수 있는 좋은 옵션입니다. 이런 식으로 Apache Kafka는 개발 프로세스 간소화, 혁신 추진, 시간 절약을 통해 새로운 기능과 애플리케이션 및 서비스 출시 기간을 단축하기 위한 이니셔티브의 중요한 부분이 될 수 있습니다.
Apache Kafka 사용 시점: 언제 Kafka를 선택해야 할까?
Apache Kafka는 시스템 및/또는 애플리케이션 간 데이터를 공유하는 스트리밍 데이터 파이프라인에 구현되어 있으며, 해당 데이터를 사용하는 시스템 및 애플리케이션에도 구현되어 있습니다. Apache Kafka는 높은 처리량과 확장성이 반드시 필요한 다양한 활용 사례를 지원합니다. Apache Kafka는 특정 애플리케이션에서 데이터 공유를 위한 포인트 투 포인트(point-to-point) 통합의 필요성을 최소화하므로 대기 시간을 밀리초 단위로 줄일 수 있습니다. 그러면 사용자는 더 신속하게 데이터를 이용할 수 있으므로, IT 운영과 전자상거래와 같은 실시간 데이터 가용성이 필요한 활용 사례에 유용할 수 있습니다.
Apache Kafka는 초당 수백만 개의 데이터 포인트를 처리할 수 있으므로 빅데이터 과제에 매우 적합합니다. 그러나 Kafka는 그러한 대용량 데이터를 처리하지 않는 기업의 경우에도 합리적인 선택이 될 수 있습니다. 사물인터넷( IoT) 및 소셜 미디어와 같은 여러 데이터 처리 활용 사례의 경우, 데이터는 기하급수적으로 늘어나고 있으며 현재 데이터 볼륨을 기반으로 구축하고 있는 애플리케이션에 빠르게 부담을 가중시킬 수 있습니다. 데이터 처리의 경우, 데이터 급증에 대비해 확장성을 고려해야 합니다.
IT 운영 팀
IT 운영의 핵심은 데이터와 관련되어 있습니다. IT 운영팀은 데이터에 빠르게 액세스해야 합니다. 이는 웹 사이트, 애플리케이션 및 시스템이 항상 가동되고 성능을 발휘하도록 하는 유일한 방법입니다. Apache Kafka는 모니터링, 알림 및 보고와 같은 다양한 소스의 데이터 수집, 로그 관리, 웹 사이트 활동 트래킹에 의존하는 IT 운영팀의 직무 수행에 매우 적합합니다.
IoT(사물 인터넷)
IoT의 가치는 인터넷에 연결된 물리적 객체들이 생성하는 실행 가능한 데이터에 있습니다. Apache Kafka는 IoT에서 생성될 것으로 예상되는 대규모 데이터를 처리할 수 있도록 확장성을 염두에 두고 설계되었습니다.
전자상거래
전자상거래 분야에서는 Apache Kafka를 활용해 더 많은 기회를 확보할 수 있습니다. 페이지 클릭, 좋아요, 검색, 주문, 장바구니 및 재고와 같은 데이터를 처리할 수 있기 때문입니다.
쿠버네티스에서 아파치 카프카 애플리케이션 확장하기
쿠버네티스는 Apache Kafka에 이상적인 플랫폼입니다. 개발자들이 Kafka 애플리케이션을 호스팅하려면 확장 가능한 플랫폼이 있어야 하는데, 쿠버네티스가 바로 그 답입니다.
Apache Kafka와 같이 쿠버네티스는 개발 프로세스를 더욱 민첩하게 만듭니다. Google의 클라우드 서비스 지원 기술인 쿠버네티스는 컨테이너화된 애플리케이션을 관리하기 위한 오픈소스 시스템이며, 컨테이너와 관련된 많은 수동 프로세스 작업 부분을 제거합니다. 쿠버네티스에서 Apache Kafka를 사용하면 Apache Kafka 배포, 구성, 관리 및 사용을 간소화할 수 있습니다.
Kafka와 쿠버네티스를 결합하면 Kafka의 이점을 모두 얻는 동시에 쿠버네티스의 확장성과 고가용성, 이식성 및 배포 편의성 장점도 활용할 수 있습니다.
쿠버네티스의 확장성은 Kafka를 자연스럽게 보완해줍니다. 쿠버네티스에서 간단한 명령만으로 리소스를 스케일 업/스케일 다운하거나, 필요한 경우 사용량에 따라 자동으로 확장/축소하여 컴퓨팅, 네트워킹 및 스토리지 인프라를 최대한으로 활용할 수 있습니다. 이러한 기능을 통해 Apache Kafka는 다른 애플리케이션과 제한된 리소스 풀을 공유할 수 있습니다. 쿠버네티스는 또한 인프라 제공업체 및 운영 체제 전반에서 Apache Kafka에 이식성을 제공합니다. 쿠버네티스를 활용하면 Apache Kafka 클러스터는 현장을 비롯한 퍼블릭, 프라이빗 또는 하이브리드 클라우드 전반에 걸쳐 다른 운영 체제를 사용할 수 있습니다.
쿠버네티스에서 Apache Kafka를 실행해야 하는 이유
개요
쿠버네티스와 같은 컨테이너 오케스트레이션 플랫폼에서 Apache Kafka를 배포하면 이벤트 기반 애플리케이션을 어디서나 자동화, 확장, 배포할 수 있습니다. 간단히 말하자면 쿠버네티스 Apache Kafka에 빌드된 애플리케이션의 내재적 유연성을 증폭합니다.
마이크로서비스 및 클라우드 네이티브 개발 방식을 도입하는 엔터프라이즈 IT 팀이 늘어나면서 분산형 시스템이 EDA(event-driven application)로 채워지고 있습니다. 이처럼 다이나믹한 개발 환경에서 디지털 리더들은 주로 Apache Kafka를 쿠버네티스와 결합해 사용합니다.
Apache Kafka에서는 비즈니스 현황을 실시간으로 조회하고 분석하는 한편 끊임없이 변화하는 시장 상황에 빠르게 대응할 수 있습니다. 더욱이 Apache Kafka는 내부 이해관계자 및 외부 파트너, 공급업체, 고객과 실시간으로 연결하고 이 연결 상태를 유지하기 위한 매우 적합한 옵션입니다.
Apache Kafka의 Kafka Streams 기능을 원하는 애플리케이션에 추가하여 Kafka 이벤트를 간편하면서도 강력하게 스트리밍 방식으로 처리할 수 있습니다. Apache Kafka가 여느 메시징 기술과 차별화되는 이유는 이처럼 방대한 양의 데이터를 즉석에서, 중단 없이, 동시에 처리하고 분석할 수 있기 때문입니다. 빅데이터 시스템에서 정보를 처리할 때까지 기다릴 필요 없이, Apache Kafka에서 인라인 실시간 분석을 위한 이벤트를 집계, 변환, 보강, 구성하면 됩니다. 따라서 실시간 데이터에 즉각적으로 대응해야 하는 애플리케이션에는 Apache Kafka가 꼭 필요합니다.
Apache Kafka는 클라우드 네이티브 개발을 위한 이상적인 기반입니다. 클라우드 네이티브 애플리케이션은 이벤트에 기반하며, Apache Kafka는 최적의 이벤트 관리 백본이기 때문입니다. Apache Kafka는 분산형 스트리밍, 실시간 프로세싱, 뛰어난 확장성 등 핵심적인 이벤트 기반 기능을 모두 지원합니다.
클라우드 네이티브의 다음 단계가 될 서버리스 아키텍처 역시 이벤트 기반이므로 Apache Kafka에서 지원됩니다. 개발자는 쿠버네티스에서 Apache Kafka를 사용하여 스케일할 수 있는 서버리스 알림, 프로세스 간 통신, 서버리스 기능에 대한 가시성을 제공할 수 있습니다.
쿠버네티스에서 Apache Kafka를 실행해야 하는 이유
Apache Kafka는 흔히 호스트 클러스터에서 컨테이너의 배포, 스케일링, 운영을 자동화할 때 사용하는 쿠버네티스 컨테이너 관리 시스템에 배포됩니다. 쿠버네티스에 배포된 Apache Kafka는 차세대 애플리케이션 개발 방식인 클라우드 네이티브 개발과 잘 맞습니다. 클라우드를 통해 뛰어난 확장성을 제공하는 클라우드 네이티브 애플리케이션은 느슨하게 결합된 독립적 분산 서비스입니다. 한편 Kafka의 이벤트 기반 애플리케이션 역시 느슨하게 결합되어 있고, 분산형 하이브리드 클라우드 환경에서 스케일할 수 있게 설계되었습니다.
쿠버네티스에서 Apache Kafka를 실행하는 운영 팀이 누릴 수 있는 대표적인 이점은 인프라 추상화로, 한 번만 설정하면 어디서나 실행할 수 있습니다. 오늘날 운영 팀은 대개 다양한 온프레미스 리소스와 클라우드 리소스를 관리합니다. 쿠버네티스에서는 이러한 자산을 컴퓨팅 리소스 풀처럼 처리하여 Apache Kafka를 비롯한 소프트웨어 리소스를 할당할 수 있습니다. 더 나아가 이 쿠버네티스 레이어를 이용하면 모든 Apache Kafka 인스턴스를 단일 환경에서 관리하는 것도 가능합니다.
쿠버네티스에 내재된 확장성이 Apache Kafka와 만나 자연스러운 시너지 효과를 발휘합니다. 쿠버네티스에서는 명령 하나로 애플리케이션의 리소스를 스케일 업/스케일 다운하거나, 사용량에 따라 자동으로 스케일하여 컴퓨팅, 네트워킹 및 스토리지 리소스를 최대한 활용할 수 있습니다. 또한 Apache Kafka를 쿠버네티스에 배포하면 온프레미스를 비롯하여 퍼블릭, 프라이빗, 하이브리드 클라우드 등 어디에서든 다양한 운영 체제를 사용할 수 있는 이식성이 확보됩니다.
Strimzi: 쿠버네티스에서 효과적으로 Apache Kafka 운영
Apache Kafka를 수동으로 운영하려면 수많은 구성 요소를 꼼꼼히 설정해야 하므로 일이 매우 복잡해집니다. 베어 메탈(또는 가상 머신)에서 Apache Kafka를 실행하는 일도 만만치 않습니다. 노드를 배포하고, 모니터링하고, 업데이트하고, 롤백하기가 굉장히 복잡하고 까다롭기 때문입니다.
이렇게 복잡한 문제를 해결해 주는 것이 바로 Strimzi 오픈소스 프로젝트입니다. Strimzi에서는 오퍼레이터를 사용하여 Apache Kafka 설정을 순조롭게 원활히 배포합니다. 쿠버네티스에서 애플리케이션을 배포하고 관리하는 첨단 기능인 오퍼레이터는 개발의 유연성을 더해 줍니다. 인프라 레벨에서 추상화하므로 인프라를 잘 모르는 개발자도 애플리케이션을 배포할 수 있기 때문입니다. 개발자는 머신 수, 하드웨어 유형과 같은 기술적 세부 사항을 알 필요가 없습니다. 오퍼레이터가 자동으로 인프라를 프로비저닝하고 모든 세부 사항을 관리해 줍니다.
Strimzi는 코드형 인프라(Infrastructure as Code, IaC)의 장점을 갖추고 있습니다. 개발자가 코드 형태의 지침 매뉴얼을 손쉽게 작성하여 인프라를 정의하면 Strimzi가 이 지침을 완벽하게 실행합니다. 마찬가지로, 보통은 까다로운 고가용성 모드의 Apache Kafka 배포 작업도 Strimzi를 이용하면 간단하게 해결됩니다.
Strimzi의 오퍼레이터가 Apache Kafka의 여러 가지 보안 고려 사항을 해결해 준다는 것도 Strimzi를 사용해야 하는 중요한 이유 중 하나입니다. Strimzi는 SSO(Single Sign-On), 암호화, 인증을 통해 쿠버네티스에 배포된 Apache Kafka 보안 역시 자동화합니다. 따라서 개발자는 기본적인 보안 기능을 구현하는 데 시간을 빼앗기지 않아도 됩니다.
적합한 EDA 솔루션 찾기
Red Hat Integration에 포함된 Apache Kafka 스트림은 Apache Kafka 및 Strimzi 프로젝트의 Red Hat 엔터프라이즈 배포판입니다. Apache Kafka와 함께 Apache Kafka 스트림을 사용하여 추가로 얻을 수 있는 이점은 주로 쿠버네티스 또는 Red Hat의 쿠버네티스 배포판인 Red Hat OpenShift에서 Apache Kafka를 사용하는 경우에 집중됩니다.
OpenShift의 Apache Kafka 스트림은 쿠버네티스에 배포된 Apache Kafka와 함께 엔터프라이즈급 이벤트 기반 아키텍처를 구현하고, 이를 통해 스트리밍 처리 방식의 마이크로서비스 기반 애플리케이션과 분산형 데이터 스트림을 지원합니다. Apache Kafka 스트림은 규모가 크고 처리량이 많은 시나리오에 특히 적합합니다. Apache Kafka의 기본 파티셔닝 기능으로 확장성 요구 사항을 해결할 수 있기 때문입니다.
출처: https://www.redhat.com/ko/topics/integration/why-run-apache-kafka-on-kubernetes
쿠버네티스에서 Apache Kafka를 실행해야 하는 이유
개발자는 쿠버네티스에서 Apache Kafka를 사용하여 스케일할 수 있는 서버리스 알림, 프로세스 간 통신, 서버리스 기능에 대한 가시성을 제공할 수 있습니다.
www.redhat.com
출처: https://www.redhat.com/ko/topics/integration/what-is-apache-kafka
'컴퓨터 활용(한글, 오피스 등) > 기타' 카테고리의 다른 글
| 클라우드 네이티브 애플리케이션: 기업 혁신의 핵심 (0) | 2025.11.11 |
|---|---|
| 코드형 인프라(Infrastructure as Code)란? (0) | 2025.11.11 |
| 엑셀 | 날짜를 요일로 표시하는 2가지 방법 | 사용자 지정 (0) | 2025.11.11 |
| ORA-01031 오류 해결 방법 (0) | 2025.11.10 |
| ORA-1228547 오류 해결 방법은? (0) | 2025.11.10 |