기존 IoT 서버에는 하드웨어와의 통신 로직과 비즈니스 로직이 함께 있어 비즈니스 로직을 수정하고 배포하는 과정에서 10초 내외의 서비스 중단 시간이 발생했었습니다. 이를 해결하기 위해서 비즈니스 로직 없이 하드웨어와의 통신만을 중계하는 서버인 IoT Relay 서버를 개발했습니다.
결과적으로 서비스 중단 시간 없이 자유롭게 비즈니스 로직을 수정하고 배포할 수 있게 되었습니다.
•
하드웨어와의 통신만을 담당하는 IoT Relay 서버 개발
•
IoT Biz와 요청과 응답을 Kafka로 주고받는 로직 작성
•
주기적으로 하드웨어가 보고하는 명령을 Kafka에 발행하는 로직 작성
•
한 번에 하나의 요청만 처리할 수 있는 하드웨어에게 다양한 종류의 요청을 동시에 할 수 있도록 응답 큐 작성
•
똑같은 요청이 동시에 들어오는 경우 각각에 대한 응답을 줄 수 있도록 Redis를 이용한 로직 작성
•
•
모든 하드웨어 이벤트를 Confluent Kafka로 발행하도록 구현
•
Schema Registry로부터 스키마를 일찍 초기화 해 스키마 문제로 초기 이벤트가 유실되던 문제를 해결
•
성능 테스트를 위해 킥보드를 흉내낼 수 있는 TCP Simulator 개발
•
EC2에서 운영되던 IoT Relay를 ECS on EC2로 마이그레이션해 배포 시간 단축, 서버 비용 절약