Linux Foundation의 Zephyr 오픈 소스 프로젝트는 수많은 IoT 솔루션의 초석이 되었습니다. 리소스 제약 디바이스를 위해 설계된 가볍고 확장 가능한 실시간 운영 체제(RTOS)로, Zephyr는 ARC, Arm, Intel, Nios, RISC-V, SPARC, Tensilica 등 다양한 아키텍처와 250개 이상의 보드를 지원합니다. 오늘날 이 프로젝트는 1,000명의 기여자와 50,000개의 커밋을 자랑하며 지속적으로 멀티 아키텍처 도달 범위를 확장하고 있습니다.
Zephyr 개발은 신뢰성에 주의를 요구합니다. 연구실에서 나타나는 문제는 디바이스가 확장되거나 네트워크 스택이 진화할 때만 사라지는 경우가 많습니다. 비용이 많이 드는 다운타임으로 이어지기 전에 문제를 탐지, 진단, 해결하기 위한 원격 모니터링 및 디버깅을 위한 견고한 전략이 필수적입니다.
농장 동물 모니터링용 GPS 트래커 작업 사례를 고려해 보세요. 각 목걸이는 여러 셀룰러 네트워크, 국가, 로밍 구역에서 원활하게 작동해야 했습니다. 잘못된 구성으로 인한 예기치 않은 전력 소모는 상당한 경제적 손실로 이어질 수 있습니다. 단순히 문제를 플래그하는 것이 아니라 근본 원인을 이해하고 수정안을 배포해야 했기에 실시간 원격 관찰 가능성이 필요했습니다.
우리는 Zephyr를 Memfault, 클라우드 기반 디바이스 관찰 가능성 플랫폼과 결합하여 펌웨어 업데이트, 재부팅, 워치독, 결함, 어서트, 연결성 메트릭을 다루는 모니터링 스택을 구축했습니다.
관찰 가능성 플랫폼 설정
Memfault는 개발자가 원격으로 모니터링, 디버깅, 펌웨어 변경 배포를 할 수 있게 하여 다음을 가능하게 합니다:
Zephyr는 리셋 간에 사용자 정의 영역을 보존합니다. Memfault는 여기에 후크하여 재부팅 컨텍스트를 캡처합니다. 재부팅 후, 초기화 핸들러를 등록하여 하드웨어 리셋 이유를 읽고 클라우드로 전송하세요.
static int record_reboot_reason(void) { // 1. 하드웨어 리셋 이유 레지스터 읽기 (MCU 데이터시트 참조) // 2. noinit RAM에서 소프트웨어 리셋 이유 캡처 // 3. 집계를 위해 서버로 데이터 전송 } SYS_INIT(record_reboot_reason, APPLICATION, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
예: 전원 공급 결함은 짧은 기간에 수천 번의 재부팅으로 나타날 수 있습니다. 그림 1은 하루 12,000회 재부팅의 99%가 단 10개 디바이스에 기인한 함대를 보여줍니다. 이는 기계적 또는 배터리 문제일 가능성이 높습니다. 펌웨어 업데이트로 이러한 문제를 완화할 수 있지만, 원격 모니터링을 통해 캐스케이드되기 전에 탐지하고 해결할 수 있습니다.
클릭하면 전체 크기 이미지 그림 1: 전원 공급 이슈, 15일간 재부팅. (출처: 저자들)
하루 12K 디바이스 재부팅 – 너무 많음
재부팅의 99%가 10개 디바이스에서 발생
기계적 결함으로 인한 지속적 리셋
2️⃣ 워치독 활용
워치독은 차단된 네트워크 스택, 무한 루프, 데드락, 메모리 손상으로 인한 행(freeze)에 대한 최후의 방어선입니다. Zephyr는 하드웨어 차이를 추상화하는 통합 워치독 API를 노출합니다.
Memfault의 클라우드 백엔드는 디바이스와 펌웨어 버전별로 메트릭을 집계하고, 함대 비교와 알림 트리거를 위한 웹 UI를 제공합니다. 일반적인 사용 사례:
NB-IoT/LTE-M 연결성: 모뎀 전력 상태 모니터링으로 배터리 영향 측정.
셀 타워 이벤트 및 PSM 타이밍: 전력을 소모하는 신호 품질 핫스팟 식별.
대규모 함대 텔레메트리: 이상값과 예기치 않은 데이터 급증 발견.
클릭하면 전체 크기 이미지 그림 4: 디바이스 관찰 가능성을 위한 메트릭 추적 – NB-IoT 예시, LTE-M 데이터 크기. (출처: 저자들)
전송 간격당 UDP 데이터 크기.
재부팅 후 데이터 급증.
큰 패킷은 임베디드 추적 또는 진단 표시.
메트릭으로 데이터 사용량과 비용 제어.
결론
Zephyr를 Memfault와 통합함으로써 개발자는 강력하고 엔드투엔드 관찰 가능성 스택을 얻습니다. 네 가지 기둥(재부팅, 워치독, 결함/어서트, 연결성 메트릭)에 집중하면 불투명한 블랙박스였던 디바이스 함대를 투명하고 관리 가능한 시스템으로 전환할 수 있습니다. 더 깊은 통찰을 위해 2021 Zephyr 개발자 서밋의 녹화 프레젠테이션을 시청하세요.