Notice
Recent Posts
Recent Comments
Link
투케이2K
168. (TWOK/LOGIC) [Aws] Iot Core 디바이스 주기보고 (KeepAlive) 에 따른 백엔드 서버 단선 체크 로직 - 버퍼 허용 시간 적용, Retry 체크 본문
투케이2K 로직정리
168. (TWOK/LOGIC) [Aws] Iot Core 디바이스 주기보고 (KeepAlive) 에 따른 백엔드 서버 단선 체크 로직 - 버퍼 허용 시간 적용, Retry 체크
투케이2K 2026. 1. 20. 07:56728x90
[로직 정리]
정리 로직 : Aws / Iot Core / MQTT / Shadow
상태 : [Aws] Iot Core 디바이스 주기보고 (KeepAlive) 에 따른 백엔드 서버 단선 체크 로직 - 버퍼 허용 시간 적용, Retry 체크

[설 명]
// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------
1. 제 목 : [Aws] Iot Core 디바이스 주기보고 (KeepAlive) 에 따른 백엔드 서버 단선 체크 로직 - 버퍼 허용 시간 적용, Retry 체크
2. 테스트 환경 : Aws / Iot / Device / KeepAlive
3. 사전) Aws Iot Core 간략 설명 :
>> AWS IoT 는 IoT 디바이스를 다른 디바이스 및 AWS 클라우드 서비스에 연결하는 클라우드 서비스를 제공합니다.
>> 디바이스가에 연결할 수 있는 경우 AWS IoT는 AWS 가 제공하는 클라우드 서비스에 디바이스를 AWS IoT 연결할 수 있습니다.
>> AWS IoT Core 메시지 브로커는 MQTT 및 MQTT over WSS 프로토콜을 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트를 지원합니다.
- HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스와 클라이언트도 지원합니다.
4. 사전) MQTT (Message Queuing Telemetry Transport) 설명 :
>> MQTT 는 경량 메시지 프로토콜로, 주로 IoT(사물인터넷) 환경에서 사용됩니다
>> MQTT 목적 : 제한된 네트워크 환경(저속, 불안정)에서 효율적으로 메시지를 주고받기 위해 설계
>> MQTT 기반 : TCP/IP 위에서 동작
>> MQTT 패턴 : Publish/Subscribe 모델을 사용
- Publisher : 메시지를 발행하는 클라이언트
- Subscriber : 특정 주제(topic)를 구독하는 클라이언트
- Broker: 메시지를 중개하는 서버 (예: Mosquitto)
>> MQTT 주요 특징 :
- 경량성 : 헤더가 매우 작음(2바이트부터 시작)
- QoS (Quality of Service) :
$ QoS 0: 최대 한 번 전달(보장 없음)
$ QoS 1: 최소 한 번 전달(중복 가능)
$ QoS 2: 정확히 한 번 전달(가장 안전)
- 지속 연결 : KeepAlive로 연결 상태 유지
- Last Will and Testament (LWT) : 클라이언트 비정상 종료 시 브로커가 메시지 발행
- 토픽 기반 라우팅 : 계층적 구조(/home/temperature 등)
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------
---------------------------------------------------
❌ [AS-IS 기존 단선 체크 로직]
---------------------------------------------------
1. AWS Iot Core 에 연결 된 디바이스 기기는 30 분 마다 주기보고 reported publish 요청 수행
2. 백엔드 서버에서는 30분 마다 특정 기기가 reported 한 메시지 이력이 있는지 확인
3. 30 분 정해진 시간에 올라온 publish 메시지 페이로드가 없는 경우 기기 단선 상태 Flag 값 변경 수행
4. 해당 로직에서의 문제 사항 :
>> 백엔드 서버는 딱 정해진 시간 30 분 안에 publish 된 메시지가 있어야하는 조건을 가짐
- 실제로 publish 수행 시 메시지가 유실 될 가능성이 있음
- publish 를 수행했지만, 네트워크 통신 구간 딜레이로 딱 30분에 맞춰서 올라가지 않을 가능성이 있음
>> 백엔드 서버는 1회성으로 바로 단선 판단을 하므로 실제로 기기가 인터넷에 연결 되어 있지만, publish 주기보고 시간 약간의 오차로 인해 단선으로 변경되는 이슈 발생 가능
---------------------------------------------------
---------------------------------------------------
✅ [TO-BE 변경 단선 체크 로직]
---------------------------------------------------
1. 백엔드 서버 로직 수정 :
>> 주기보고 시간에서 버퍼 허용 시간 적용
- 🔹 ex : 30분 마다 주기보고를 체크 하지만, (주기 보고 시간 +5분 내에 ) 올라오는 것은 허용 처리 : 35 분까지 주기보고 허용 처리
>> 30분 마다 1회성으로 체크하는 것을 2, 3번 체크 기회 허용
- 🔹 ex : 첫번째 주기보고 (30분) 가 올라오지 않은 경우 임시 Flag 값 지정, 두번째에서 주기보고 (1시간) 가 올라온 경우 정상 상태로 다시 Flag 값 변경
2. 기기 로직 수정 :
>> 🔹 주기보고 publish 이후 기기는 구독하고 있는 토픽으로 내가 전송한 메시지가 표시 되지 않는 경우 publish 재전송 로직 적용
- ex : 주기보고 토픽 구독 : $aws/things/{ThingName}/shadow/name/{keepAlive}/update/accepted
- ex : 주기보고 publish 토픽 : $aws/things/{ThingName}/shadow/name/{keepAlive}/update
- publish 수행 후 응답 확인 핸들러 등록 후 3초 이내 구독 된 토픽으로 응답이 없는 경우 publish 재전송 수행 (총 3회까지 기회 제공)
>> 🔹 추가적으로 publish 수행 후 구독 된 토픽 연결이 해제 되었을 수도 있으므로 publish 이후 응답이 없는 경우 토픽 재구독 수행 후 publish 수행 실시
---------------------------------------------------
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[MQTT (Message Queueing Telemetry Transport) 통신 설명]
https://kkh0977.tistory.com/3631
https://blog.naver.com/kkh0977/222971771381?trackingCode=blog_bloghome_searchlist
[업무 이슈] AWS MQTT Shadow 섀도우 생성 시 http 통신 문제로 순차적 Shadow 생성 문제 - Publish 구간 딜레이 추가
https://kkh0977.tistory.com/8135
https://blog.naver.com/kkh0977/223929919367?trackingCode=blog_bloghome_searchlist
[Aws Shadow 섀도우 토픽 구독 및 publish 요청 이후 타임아웃 TimeOut 로직 처리]
https://blog.naver.com/kkh0977/223906176453?trackingCode=blog_bloghome_searchlist
[Web/JavaScript] paho-mqtt 라이브러리 사용해 AWS IOT Core 플릿 프로비저닝 Thing 사물 등록 수행
https://kkh0977.tistory.com/8491
https://blog.naver.com/kkh0977/224109136460
// --------------------------------------------------------------------------------------
728x90
반응형
'투케이2K 로직정리' 카테고리의 다른 글
Comments
