IoT 데이터 파이프라인 구성 - 유년기
•
REST API 기반 연계…
•
데이터 누락 발생…
IoT 데이터 파이프라인 구성 - 소년기
•
IoT Core를 API Server 전단에 두어 스로틀링(throttling) 대응
•
But,,,,
•
데이터 누락이 해결되자 Aurora MySQL에 부하가 걸림.
•
Real-time, Historical 데이터가 Aurora MySQL에 Upsert, Insert 가 되고 있었다.
→ Aurora MySQL 한계가 오고 있었다..
•
API 서버와 DB간의 Connection 이슈로 데이터 적재 누락
•
데이터 성격(Real-time vs Historical)에 따라 목적에 맞는 데이터베이스에 적재
•
Real-time 데이터
◦
ElastiCache
◦
빠르게 읽고 쓰고..
•
Historical 데이터
◦
DynamoDB
IoT 데이터 파이프라인 구성 - 성장기
•
데이터 성격에 따라 라우팅하기 위해 API 서버를 대체할 미들웨어 필요..
•
기존에 Kafka 운영을 하고 있어 데이터 스트림에 사용
•
IoT데이터는 IoT Core의 Rule을 사용해서 MSK 적재
•
ElastiCache, DynamoDB 적재를 위해 Connector 사용
•
내부적으로 검토하였으나 우측의 한계로 인해..
SOCAR Connector 개발
•
Consumer
◦
MSK로 부터 데이터를 가져오는..
•
Handler
◦
데이터를 특정 로직에 태워서 처리하는..
•
Loader
◦
데이터를 데이터베이스 또는 스토리지에 적재
•
초당 20,000개 이상 데이터 처리…
•
멀티 쓰레드만으로는 처리를 못했다.. → 인프라의 도움이 필요했다..
•
메시지 트래픽이 많아지면 RTVF Connector를 스케일 아웃했다.
•
60초마다 업로드되는 데이터를 ElastiCache에 적재할 때는 1초로 풀어서 순차적으로 적재 필요.
•
Gorouting, Ticker를 사용해서 매 1초마다 Tick을 받아 새로운 쓰레드 생성 후 처리
•
토픽, 데이터베이스별로 Connector 배포
•
크리스마스 시즌.. 피크