Share
Sign In

Apache Kafka

NestJS에서 Kafka 활용하기!
이경복
[NestJS/Kafka] Docker를 사용하여 Kafka 설치 및 운영하기
첫 포스팅으로 NestJS 프로젝트에서 Docker를 사용한 환경에서 Kafka를 설치하고 운영하는 방법에 대해서 살펴보려고 합니다! Apache Kafka 실행 환경 먼저 이해하기 Apache Kafka는 Java로 작성되었으며, Java Virtual Machine (JVM) 위에서 실행됩니다. 이것이 의미하는 바는, 아래와 같습니다. Kafka는 Java Runtime Environment (JRE)가 필요합니다. JVM이 메모리 관리, 가비지 컬렉션 등을 담당합니다. Kafka는 JVM의 특성(예: 힙 메모리 관리)을 활용합니다. JVM 튜닝을 통해 Kafka의 성능을 최적화할 수 있습니다. 인스턴스에서 실행되는 프로세스는 Zookeeper와 Kafka Broker로 구성됩니다. 각각의 역할만 간략히 살펴보고 자세한 내용은 <Kafka 핵심 개념 이해하기> 포스팅에서 다루겠습니다. Zookeeper 주키퍼: 주키퍼는 분산 코디네이션 서비스를 제공하는 오픈소스를 말합니다. 분산 코디네이션 서비스는 분산 시스템 내부에 상태 정보를 저장하고 데이터를 key-value 저장소로 저장 및 제공하는 서비스를 의미합니다. 카프카에서는 운영에 필요한 각종 설정과 상태들을 저장하는데 주키퍼를 사용합니다. 힙 메모리 지정: 주키퍼와 카프카 브로커는 JVM 위에서 돌아가는 애플리케이션으로서 힙 메모리(Heap Memory)를 지정해야합니다. 두 프로세스에 각각 400MB의 힙 메모리를 설정하려면 1G 이상의 램이 필요하므로 1GB 메모리를 가진 t2.micro 인스턴스 유형을 선택하여 실습해보시는 것을 권장합니다. (프리티어로 제공) Inbound, Outbound 보안 그룹 설정(프로토콜, 포트, 실행 IP 등 규칙): 인바운드 규칙은 발급받은 인스턴스 외부로부터 들어오는 트래픽을 뜻하고, 아웃바운드 규칙은 인스턴스로부터 나가는 트래픽을 뜻합니다.
👍
1
이경복
[NestJS/Kafka] Apache Kafka를 배워야하는 이유
Intro. 이번 시리즈에서는 Kafka 핵심 개념과 작동 원리를 이해하고, 차근차근 NestJS에서 적용해보는 것을 목표로 합니다. JavaScript로 작성하는 KafkaJS 라이브러리를 주로 사용합니다. 개발 환경은 NestJS와 Docker 기반으로 합니다. Apache Kafka를 왜 배워야하고, NestJS에서 적용해보는 과정을 중심으로 써내려가는 시리즈입니다. Docker를 사용하여 NestJS에서 Kafka 시작하기 Kafka 핵심 개념 및 구성요소 이해하기 로그 기반 메시징 시스템으로서의 Kafka 이벤트 스트리밍 플랫폼으로서의 Kafka 데이터 파이프라인에서의 Kafka ** Node.js 진영에서 Apache Kafka를 배워보려고 하는 분들에게 도움이 되었으면 좋겠습니다! Apache Kafka란? Kafka는 대규모 데이터 스트리밍과 실시간 처리에 최적화된 분산 메시징 시스템입니다. KafkaJS 공식 문서에서는 Kafka를 이렇게 소개합니다. 시스템 간에 데이터를 안전하게 이동시키는 메시징 시스템이다. 각 구성요소를 어떻게 설정하느냐에 따라 동작하며, 단순한 메시징 시스템을 넘어서 전체 시스템 내에서 중추 역할을 수행할 수 있는 강력한 플랫폼을 제공한다. 실제로는 Queue와 Database 중간에 있는 것이라 할 수 있고, 두 시스템 유형에 따라 트레이드 오프가 존재한다.
Made with SlashPage