개요
쿠버네티스와 같은 컨테이너 오케스트레이션 플랫폼에서 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를 쿠버네티스에 배포하면 온프레미스를 비롯하여 퍼블릭, 프라이빗, 하이브리드 클라우드 등 어디에서든 다양한 운영 체제를 사용할 수 있는 이식성이 확보됩니다.
Red Hat 리소스
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의 기본 파티셔닝 기능으로 확장성 요구 사항을 해결할 수 있기 때문입니다.
레드햇 공식 블로그
레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.