[python] FastAPI와 Apache Kafka의 연동

FastAPI는 빠른 성능과 강력한 기능을 제공하는 Python 웹 프레임워크입니다. Apache Kafka는 신뢰성 있는 대규모 메시지 시스템입니다. 이 블로그 포스트에서는 FastAPI와 Apache Kafka를 연동하여 데이터를 송수신하는 방법에 대해 알아보겠습니다.

1. FastAPI 설치

먼저, FastAPI를 설치합니다.

pip install fastapi

2. Apache Kafka 설치

다음으로, Apache Kafka를 설치합니다. 공식 웹사이트에서 다운로드하여 설치합니다.

3. Kafka-Python 라이브러리 설치

FastAPI 애플리케이션에서 Kafka와 통신하기 위해 kafka-python 라이브러리를 설치합니다.

pip install kafka-python

4. Kafka Producer 구현

FastAPI 애플리케이션에서 Kafka Producer를 구현합니다. Producer는 메시지를 보내는 역할을 합니다.

from kafka import KafkaProducer
from fastapi import FastAPI

app = FastAPI()

producer = KafkaProducer(bootstrap_servers='localhost:9092')

@app.post("/send_message/{msg}")
async def send_message(msg: str):
    producer.send('test_topic', value=bytes(msg, 'utf-8'))
    return {"message": "Message sent successfully"}

위 코드에서 /send_message 엔드포인트는 POST 메소드를 통해 메시지를 Kafka에 보냅니다.

5. Kafka Consumer 구현

이제 FastAPI 애플리케이션에서 Kafka Consumer를 구현합니다. Consumer는 메시지를 수신하는 역할을 합니다.

from kafka import KafkaConsumer
from fastapi import FastAPI

app = FastAPI()

consumer = KafkaConsumer('test_topic', bootstrap_servers='localhost:9092')

@app.get("/receive_message")
async def receive_message():
    for message in consumer:
        return {"message": message.value.decode('utf-8')}

위의 코드에서 /receive_message 엔드포인트는 GET 메소드를 통해 Kafka로부터 메시지를 수신합니다.

요약

이제 FastAPI와 Apache Kafka를 사용하여 데이터를 효율적으로 송수신하는 방법에 대해 알게 되었습니다. FastAPI로 생성한 단일 요청-응답 API를 통해 Kafka를 통합함으로써 손쉽게 대용량 데이터를 처리할 수 있습니다.