[데이터 엔지니어링] 카프카 클러스터 운영

jada·2024년 5월 12일
0

데이터 엔지니어링

목록 보기
4/10

* 본 포스트는 [아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지! 기반으로 작성됨을 알립니다.

목차


1️⃣ 카프카 클러스터를 운영하는 여러가지 방법

2️⃣ SaaS형 아파치 카프카 소개

3️⃣ SaaS형 아파치 카프카 장점과 단점


1️⃣ 카프카 클러스터를 운영하는 여러가지 방법

카프카 클러스터를 운영하는 방법

아파치 카프카 클러스터를 서버에 직접 설치하고 운영하는 것은 가장 전통적이고 기본적인 방법이다. 이 방법으로는 각종 설정을 직접 컨트롤하여 세부적인 서버 설정을 통해 최고의 성능으로 최적의 클러스터를 활용할 수 있다.

그러나, 각종 보안 설정이나 모니터링 도구를 선택하고 설치, 운영할 때는 수많은 선택지 때문에 어려움을 겪을 수 있다. 이러한 운영상 시행착오를 줄이면서 최고의 카프카 클러스터를 빠르게 설치하여 안전하게 운영하기 위해 SaaS(Sofwate-as-a-Service)를 도입할 수 있다.

운영방법에 따른 서비스 형태들

SaaS란 클라우드 서비스 제공업체가 소프트웨어와 인프라를 관리하면서 플랫폼을 제공하는 것을 뜻한다. 사용자는 웹 대시보드나 CLI(Command Line Interface)를 통해 플랫폼의 세부 설정을 간편하게 할 수 있으며 네트워크, 스토리지, 가상화 등 다양한 종류의 운영상 이슈는 업체에서 관리하기 때문에 매우 편리하게 사용할 수 있다.

설치 방법별 서비스 형태 종류

서비스 형태별 카프카 운영방법

오픈소스 카프카를 직접 설치하여 운영하는 경우

IaaS 또는 온프레미스 환경에서 카프카 클러스터를 설치하여 운영하는 것이 가장 흔한 운영 방식이다. 카프카는 전송된 데이터를 모두 파일 시스템에 저장하고 대규모 데이터 통신이 일어나기 때문에 고성능의 하드웨어를 사용해야 한다. 컨플루언트에서는 상용 환경의 카프카 클러스터 운영시 브로커의 하드웨어를 다음과 같이 설정하는 것을 추천한다.



2️⃣ SaaS형 아파치 카프카 소개

클라우드 서비스 - 컨플루언트

컨플루언트는 카프카에 대한 개념을 최초로 생각하고 아키텍처를 제안, 개발한 인물인 제이 크랩스와 그의 동료들이 설립한 회사이다. 컨플루언트는 아파치 카프카의 생태계를 가꾸고 발전시키는 데에 선구적인 역할을 하고잇다. 컨플루언트에서 오픈소스로 공개하고 관리하고있는 스키마 레지스트리, ksqlDB 등과 같은 소스코드들은 카프카를 활용하는 생태계의 범위를 점차 늘려나가고 있다.

클라우드 서비스 - 컨플루언트 클라우드, 컨플루언트 플랫폼

클라우드 서비스 - AWS MSK

MSK(Managed Streaming for Apache Kafka)는 AWS에서 제공하는 SaaS형 아파치 카프카 서비스이다. AWS MSK는 AWS 인프라에서 카프카 클러스터를 생성, 업데이트, 삭제 등과 같은 운영요소를 대시보드를 통해 제공한다. 또한, 안전하게 접속할 수 있도록 클러스터와 연동시 TLS인증 보안을 설정할 수 있다.

MSK로 클러스터를 생성하고자 하는 엔지니어는 아파치 카프카 버전을 직접 선택할 수 있다. 그렇기 때문에 기존에 카프카 클라이언트를 운영하고 있는 기업은 버전 차이에 의한 서비스 연동 이슈를 발생시키지 않고 안전하게 클러스터를 사용할 수 있다는 장점이 있다. MSK로 생성한 클러스터는 AWS에서 제공하는 인프라 영역에 구축된다. MSK는 AWS를 이미 사용중인 기업에서는 어렵지 않게 아키텍처에 포함시킬 수 있다.



3️⃣ SaaS형 아파치 카프카 소개

SaaS로 카프카 클러스터를 운영할 경우 장점

1️⃣ 인프라 관리의 효율화
카프카 클러스터는 상용환경에서 최소 3대 이상의 서버로 운영한다. 클러스터를 담당하고 운영하는 개발자의 입장에서는 3대 이상의 서버를 모니터링해야 한다는 것인데, SaaS를 사용할 경우 인프라 운영 관련 역할에서 자유로울 수 있다. 왜냐하면 카프카 SaaS 서비스를 사용하게 되면 브로커가 올라가는 서버는 자동으로 관리되기 때문이다.

만약 브로커들 중 일부에 이슈가 발생하여 서버를 재시작하는 상황이 일어나더라도 카프카 운영자는 크게 신경쓸 필요가 없다. 왜냐하면 SaaS 서비스가 이슈를 감지하여 이슈가 생긴 서버를 제외하고 신규 장비에 브로커를 실행하여 클러스터를 복구하기 때문이다.

클러스터의 데이터 사용향이 순간적으로 많아지더라도 서비스를 제공하는 업체의 SaaS 대시보드에서 브로커 개수만 설정하여 쉽게 스케일 아웃 할 수 있다. 몇 분 뒤면 더 많은 양의 데이터를 소화할 수 있는 카프카 클러스터가 설정되어 안전하게 데이터를 처리할 수 있다.

2️⃣ 모니터링 대시보드 제공
SaaS형 카프카에서는 자동화되어 만들어진 클러스터로부터 운영에 필요한 지표들을 수집하고 그래프로 보여주는 옵션이 제공된다. 직접 카프카 클러스터를 운영하는 대신에 SaaS형 카프카를 사용함으로써 추가로 플랫폼들을 설치하고 운영할 필요없이, 클릭 몇번으로 지표를 그래프로 보면서 운영의 짐을 덜 수 있다.

3️⃣ 보안 설정
SaaS형 카프카에서는 클러스터 접속 시 보안 설정을 기본으로 제공하고있다. 클러스터 생성시 보안 설정을 통해 인가된 사용자만 카프카 클러스터에 접근할 수 있도록 할 수 있다.


SaaS로 카프카 클러스터를 운영할 경우 단점

1️⃣ 서비스 사용 비용
SaaS형 카프카를 사용하려면 SaaS를 제공하는 업체에서 지정한 특정 요금제를 사용해야 한다. SaaS형 카프카에 적용된 금액은 서버만 발급해서 사용하는 비용보다 현저히 높다. 인스턴스 발급 및 사용 비용은 클러스터를 단순히 실행만 하더라도 빠져나가는 비용이며 추가적으로 스토리지 요금과 데이터 전송 요금이 발생한다.

2️⃣ 커스터마이징의 제한
카프카 클러스터를 직접 운영하다보면 서버의 최적화 옵션이나 카프카 브로커 옵션 같은 다양한 부분에서 사용자 설정들이 들어간다. 그러나 SaaS 서비스들은 인프라부터 애플리케이션 설치까지 모든 부분이 자동화되어 있고 업체에서 설정한 아키텍처를 따라가기 때문에 상세한 설정을 적용하거나 클러스터 아키텍처의 변화가 필요할 경우 적용하기 매우 어렵다.

3️⃣ 클라우드의 종속성
클라우드 서비스 업체를 선택하고 클러스터를 운영하는 순간 프로듀서, 컨슈머들을 포함한 클러스터와 관련된 모든 애플리케이션은 해당 서비스에 종속된다. 클라우드 종속성을 탈피하기 위해서는 멀티 클라우드 또는 하이브리드 클라우드를 도입하는 방법이 있지만, SaaS형 카프카를 사용할 경우에는 멀티 클라우드, 하이브리드 클라우드 적용이 불가능하다.

그럼에도 불구하고 SaaS형 카프카를 사용하는 것이 나은 경우는?

카프카 클러스터에 대한 이해를 충분히 가진 상태에서 SaaS형 카프카를 운영한다면 더욱 효과적으로 활용할 수 있다. SaaS형 카프카를 도입할 때는 현재 인력의 카프카 클러스터 운영에 대한 이해의 깊이, 클러스터 구축 비용, 추후 운영상 이슈 등을 다각도로 검토하는 것이 이후 안정적인 서비스를 운영하는 데에 밑바탕이 될 수 있다.


🧐 QUIZ

1) 컨플루언트 플랫폼은 클라우드에서 제공하는 SaaS형 카프카이다 (O/X)
-> X 컨플루언트 플랫폼은 온프레미스 환경의 서버에 직접 설치하는 용도로 사용한다.

2) SaaS를 사용하면 비용이 반드시 절감된다 (O/X)
-> X 일반적인 경우에 절감되지 않는다.

3) SaaS형 카프카를 사용하더라도 주키퍼는 사용자가 운영해야 한다 (O/X)
-> X SaaS형 카프카는 서비스에 위임해서 만들기 때문에 사용자가 운영하지 않는 경우가 많다.

4) AWS MSK는 컨플루언트의 대표적인 클라우드 서비스이다 (O/X)
-> X 컨플루언트와 무관, AWS사에서 제공하는 서비스이고, 오픈소스 아파치 카프카를 설치형으로 제공하는 서비스이다.

5) SaaS형 카프카를 사용하면 카프카에 대한 깊은 지식이 없어도 무관하다 (O/X)
-> X 카프카 클러스터를 포함한 개념은 모두 동일하다. 토픽에 대한 운영권한을 누군가는 가져야 하고, 토픽이 만들어지는 것과 비용이 발생하는 것을 지속적으로 모니터링해야 한다. 따라서 전반적인 카프카에 대한 깊은 지식을 지속적으로 가져가야 한다.

profile
꾸준히 발전하는 개발자가 되자 !

0개의 댓글