AWS MSK를 이용해 IoT Core의 데이터를 RDS에 저장하기 #1

최재혁·2025년 1월 7일
0

AWS MSK

목록 보기
1/4

1. Intro

AWS IoT Core를 사용해보면서 처음으로 MSK의 존재를 알게되었고 사용해 보게 되었습니다.

보통 AWS MSK 사용사례를 보면 DB -> MSK -> DB 처럼 이기종 데이터를 다른 DB에 sink 하는 용도로 많이 사용되는 것 같습니다.

그래서인가 AWS IoT Core에서 MSK를 연결하는 사례가 별로 없습니다.

(물론 AWS 블로그는 IoT Core -> MSK 연결 방법이 나와있습니다. https://aws.amazon.com/ko/blogs/iot/how-to-integrate-aws-iot-core-with-amazon-msk/)

그러나, 제(고객사)가 원하는건 AWS IoT -> AWS MSK -> RDS 로, 실시간 데이터를 IoT Core에서 부터 받아와서 RDS에 실시간으로 저장하는 방법을 원했습니다.

솔직히, 처음엔 rule -> msk -> msk connector -> RDS 로 구성하면 되겠지... 라는 생각을 했습니다.

하루 걸릴 줄 알았던 안일한 생각과는 다르게 한달이 걸렸고, 무려 500번 이상 커넥터를 지웠다 다시 만들었다를 반복했습니다.

끔찍했던 과거를 바탕으로 지금부터 "왜 커넥터는 데이터가 있음에도 null을 반환했는가" 에 대해 포스팅 해보려 합니다.

2. sink 와 source connector

커넥터를 사용할때는 sink와 source 두가지가 있습니다.

  • Source Connector: 외부 시스템에서 Kafka로 데이터 수집
  • Sink Connector: Kafka에서 외부 시스템으로 데이터 전송

요약하면, 커넥터 입장에서 데이터를 가져와야한다 -> source, 데이터를 보내야한다 -> sink 입니다.

저는 RDS로 데이터를 내보낼 것이기 때문에 sink를 사용하는 것이 맞다 생각했습니다.

3. confluent 와 debezium

둘다 "데이터 스트리밍과 관련된 도구" 입니다.

사용사례로 봤을 때는 DB -> Connector (Debezium) -> MSK -> Connector (Confluent) -> RDS 로 많이 사용하는 것 같았습니다.


(출처 : https://aws.amazon.com/ko/blogs/tech/implement-database-cdc-using-amazon-msk/)

그래서 저도 일단은 confluent를 사용했으나, 320번 시도쯤에서 다른 방법은 없을까 하다가 찾아보니 Debezium 도 sink 를 지원한다길래 Debezium를 이용해보기로 했습니다.

4. IoT Core 설정

https://aws.amazon.com/ko/blogs/iot/how-to-integrate-aws-iot-core-with-amazon-msk/

IoT Core -> MSK 설정은 위 가이드대로 설정합니다. SCRAM/SASL 이란 보안방법을 이용해서 말이죠.

5. IoT Core rule 설정

디바이스 -> AWS IoT Core로 들어오는 데이터는 아래와 같습니다.

//Topic : Platform/Info/Q-device/sensor

{
  "deviceId": "device123",
  "id": "event002",
  "data": {
    "id": "data001",
    "soc": 90,
    "cellVoltageMax": 3.7,
    "voltUAvg": 3.65,
    "soh": 95,
    "inletTemperature": 25,
    "performanceScore": 100,
    "pcsOperationMode": "active",
    "frequency": 50.5
  }
}
  • SQL
SELECT * FROM 'Platform/Info/Q-device/sensor'
  • Kafka 주제 ( I-q-sensor-1 )
I-${topic(4)}  
  • 키 (선택사항)
${deviceId}

그럼 ec2에서 topic을 조회해봤을 때, 아래와 같이 보입니다.

해당 토픽에 오는 메세지는 아래와 같이 나옵니다.

데이터가 잘 들어오는 것 까지 확인 했으나, 여기서 끝이 아닙니다. 다음 게시글로 찾아뵙겠습니다.

0개의 댓글