로그인 / 등록 Account

통합

Apache Kafka란 무엇일까요?

Apache Kafka는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산 데이터 스트리밍 플랫폼입니다. 이는 여러 소스에서 데이터 스트림을 처리하고 여러 사용자에게 전달하도록 설계되었습니다. 간단히 말해, A지점에서 B지점까지 이동하는 것뿐만 아니라 A지점에서 Z지점을 비롯해 필요한 모든 곳에서 대규모 데이터를 동시에 이동할 수 있습니다.

Apache Kafka는 전통적인 엔터프라이즈 메시징 시스템의 대안입니다. 하루에 1조4천억 건의 메시지를 처리하기 위해 LinkedIn이 개발한 내부 시스템으로 시작했으나, 현재 이는 다양한 기업의 요구사항을 지원하는 애플리케이션을 갖춘 오픈소스 데이터 스트리밍 솔루션이 되었습니다.


Apache Kafka와 비동기식 통합

마이크로서비스는 개발 환경을 바꾸어 놓았습니다. 공유 데이터베이스 계층과 같은 종속성을 줄여 개발자들이 보다 민첩하게 작업을 수행하도록 해줍니다. 그러나 개발자가 구축 중인 분산형 애플리케이션이 데이터를 공유하려면 특정한 유형의 통합이 필요합니다. 널리 사용되는 통합 옵션으로 동기식 방법이 있는데, 이는 서로 다른 사용자 간 데이터를 공유하는 데 애플리케이션 프로그래밍 인터페이스(Application Programming Interface, API)를 활용합니다.

또 다른 통합 옵션으로는 중간 스토어에서 데이터를 복제하는 비동기식 방법이 있습니다. Apache Kafka는 바로 이런 맥락에 등장하는 솔루션으로, 다른 개발팀의 데이터를 스트리밍하여 데이터 스토어를 채우면 해당 데이터를 여러 팀과 이들의 애플리케이션 간에 공유할 수 있게 됩니다.

마이크로서비스 팀의 통합 요구사항은 전통적인 워터폴(waterfall) 개발팀과는 다릅니다. 이들 팀은 다음과 같은 3가지 기반 기능을 필요로 합니다.

  1. 분산형 통합: 필요한 경우 지속적으로 배포할 수 있는 경량의 패턴 기반 통합으로, 중앙집중식 ESB 유형 배포의 제약을 받지 않습니다.
  2. API: 파트너, 고객 및 개발자로 이루어진 에코시스템을 구현하는 API 기반 서비스로, 신뢰성과 수익성을 갖춘 유용한 활용 방안을 제공합니다.
  3. 컨테이너: 클라우드 네이티브 방식의 커넥티드 애플리케이션을 개발, 관리 및 확장하는 플랫폼입니다. 컨테이너는 개별 배포 방식으로 DevOps 프로세스에 포함되면서, 즉시 사용 가능한 클러스터링에 의해 지원되는 린(lean) 아티팩트 개발을 사용할 수 있도록 함으로써 고가용성을 보장합니다.

Red Hat에서는 이러한 접근 방식을 “애자일 통합”이라 부릅니다. 애플리케이션 개발 프로세스의 일부로 통합을 수행하여 민첩하고 적응성을 갖춘 솔루션을 제공할 수 있습니다. 애플리케이션의 구체적인 요구사항에 따라 동기식 또는 비동기식 통합을 애자일 통합의 일부로 자유롭게 사용할 수 있습니다. Apache Kafka는 비동기식 이벤트 기반 통합을 사용하여 동기식 통합과 API 사용을 확대하고 마이크로서비스 및 애자일 통합까지 지원할 수 있는 좋은 옵션입니다. 이런 식으로 Apache Kafka는 개발 프로세스 간소화, 혁신 추진, 시간 절약을 통해 새로운 기능과 애플리케이션 및 서비스 출시 기간을 단축하기 위한 이니셔티브의 중요한 부분이 될 수 있습니다.


Apache Kafka 사용 단계

Apache Kafka는 시스템 및/또는 애플리케이션 간 데이터를 공유하는 스트리밍 데이터 파이프라인에 구현되어 있으며, 해당 데이터를 사용하는 시스템 및 애플리케이션에도 구현되어 있습니다. Apache Kafka는 높은 처리량과 확장성이 반드시 필요한 다양한 활용 사례를 지원합니다. Apache Kafka는 특정 애플리케이션에서 데이터 공유를 위한 포인트 투 포인트(point-to-point) 통합의 필요성을 최소화하므로 지연 시간을 밀리초 단위로 줄일 수 있습니다. 그러면 사용자는 더 신속하게 데이터를 이용할 수 있으므로, IT 운영과 전자상거래와 같은 실시간 데이터 가용성이 필요한 활용 사례에 유용할 수 있습니다.

Apache Kafka는 초당 수백만 개의 데이터 포인트를 처리할 수 있으므로 빅데이터 과제에 매우 적합합니다. 그러나 Kafka는 그러한 대용량 데이터를 처리하지 않는 기업의 경우에도 합리적인 선택이 될 수 있습니다. 사물 인터넷(Internet of Things, IoT) 및 소셜 미디어와 같은 여러 데이터 처리 활용 사례의 경우, 데이터는 기하급수적으로 늘어나고 있으며 현재 데이터 볼륨을 기반으로 구축하고 있는 애플리케이션에 빠르게 부담을 가중시킬 수 있습니다. 데이터 처리의 경우, 데이터 급증에 대비해 확장성을 고려해야 합니다.

IT 운영

IT 운영의 핵심은 데이터와 관련되어 있습니다. IT 운영팀은 데이터에 빠르게 액세스해야 합니다. 이는 웹 사이트, 애플리케이션 및 시스템이 항상 가동되고 성능을 발휘하도록 하는 유일한 방법입니다. Apache Kafka는 모니터링, 알림 및 보고와 같은 다양한 소스의 데이터 수집, 로그 관리, 웹 사이트 활동 트래킹에 의존하는 IT 운영팀의 직무 수행에 매우 적합합니다.

사물 인터넷(IoT)

Gartner는 2020년까지 200억 대 이상의 기기가 IoT에 포함될 것이라고 전망합니다. IoT의 가치는 이처럼 다양한 센서가 생성하는 유용한 데이터에 있습니다. Apache Kafka는 IoT에서 생성될 것으로 예상되는 대규모 데이터를 처리할 수 있도록 확장성을 염두에 두고 설계되었습니다.

전자상거래

전자상거래 분야에서는 Apache Kafka를 활용해 더 많은 기회를 확보할 수 있습니다. 페이지 클릭, 좋아요, 검색, 주문, 장바구니 및 재고와 같은 데이터를 처리할 수 있기 때문입니다.


쿠버네티스로 Apache Kafka 애플리케이션을 확장하는 방법

쿠버네티스는 Apache Kafka에 이상적인 플랫폼입니다. 개발자들이 Kafka 애플리케이션을 호스팅하려면 확장 가능한 플랫폼이 있어야 하는데, 쿠버네티스가 바로 그 답입니다.

Apache Kafka와 같이 쿠버네티스는 개발 프로세스를 보다 민첩하게 만들어줍니다. Google의 클라우드 서비스 지원 기술인 쿠버네티스는 애플리케이션 컨테이너를 관리하기 위한 오픈소스 시스템이며, 컨테이너와 연결된 수동 프로세스의 많은 부분을 제거합니다. 쿠버네티스에서 Apache Kafka를 사용하면 Apache Kafka 배포, 설정, 관리 및 사용을 간소화할 수 있습니다.

Kafka와 쿠버네티스를 결합하면 Kafka의 이점을 모두 얻는 동시에 쿠버네티스의 확장성과 고가용성, 이식성 및 배포 편의성 이점도 활용할 수 있습니다.

쿠버네티스의 확장성은 Kafka를 자연스럽게 보완해줍니다. 쿠버네티스에서 간단한 명령만으로 리소스를 스케일 업/스케일 다운하거나, 필요한 경우 사용량에 따라 자동으로 확장/축소하여 컴퓨팅, 네트워킹 및 스토리지 인프라를 최대한으로 활용할 수 있습니다. 이러한 기능을 통해 Apache Kafka는 다른 애플리케이션과 제한된 리소스 풀을 공유할 수 있습니다. 쿠버네티스는 또한 인프라 제공업체 및 운영 체제 전반에서 Apache Kafka에 이식성을 제공합니다. 쿠버네티스를 활용하면 Apache Kafka 클러스터는 현장을 비롯한 퍼블릭, 프라이빗 또는 하이브리드 클라우드 전반에 걸쳐 다른 운영 체제를 사용할 수 있습니다.

Red Hat과의 통합

Red Hat은 온프레미스 또는 클라우드에서 사용할 수 있는 오픈소스, 오픈 표준인 경량화되고 종합적인 모듈식 통합 솔루션을 제공합니다.

메시징

Red Hat® AMQ의 일부로서, AMQ 스트림은 Red Hat OpenShift® Container Platform에서 Apache Kafka를 제공합니다. AMQ 스트림은 Apache Kafka 프로젝트를 기반으로 쿠버네티스에서 실행되는, 확장 가능한 분산형의 고성능 데이터 스트리밍 기능입니다.

컨테이너 플랫폼

컨테이너 플랫폼에서 컨테이너를 사용하여 클라우드 네이티브 애플리케이션을 개발, 배포, 관리, 확장할 수 있습니다. OpenShift는 이 모든 애플리케이션을 자동으로 오케스트레이션하고 AMQ, Fuse, 3scale API Management 등과 연동되어 애자일 통합 접근 방식을 클라우드에 제공합니다.

Red Hat이 지원하는 통합 기능을 더 살펴 보세요