왜 나는 Python과 Serverless를 이용해 Industrial IoT Gateway를 만들었는가
Source: Dev.to
산업용 IoT 플랫폼을 구축하는 일은 보통 파편화된 기술 스택의 끝없는 악몽처럼 느껴집니다. 펌웨어 엔지니어는 C++를 작성하고, 백엔드 팀은 Docker 컨테이너와 메시지 큐와 씨름하며, 프론트엔드 개발자는 브라우저가 다운되지 않게 실시간 센서 데이터를 렌더링하려 애씁니다. 저도 그 경험이 있습니다.
확장 가능한 원격 모니터링 시스템을 만들기 위해서는 산업 환경에 견고하면서도 소규모 팀이 민첩하게 작업할 수 있는 아키텍처가 필요했습니다. 해결책은? 전통적인 C/C++ 모놀리식 엣지 데몬을 버리고 100 % Python Edge + Serverless Backend + React SPA 파이프라인을 완전히 도입하는 것이었습니다.
이 시리즈에서는 로컬 하드웨어와 최신 웹 대시보드 간에 양방향 텔레메트리 및 명령(D2C/C2D)을 안전하게 라우팅할 수 있게 해 주고, 개발 시간을 약 80 % 단축시킨 정확한 아키텍처를 단계별로 살펴보겠습니다.
1. “전통적인” IoT의 악몽
- The Edge – 펌웨어 엔지니어는 안정적인 MQTT 연결을 유지하기 위해 C/C++ 메모리 누수를 디버깅하는 데 몇 주씩을 보냅니다.
- The Backend – 클라우드 팀은 VM을 프로비저닝하고, 맞춤형 MQTT 브로커를 설정하며, 디바이스 텔레메트리를 처리하기 위한 REST API에 대한 끝없는 보일러플레이트 코드를 작성합니다.
- The Problem – 단일 온도 값을 웹 대시보드에 신뢰성 있게 표시하기까지 몇 달이 걸립니다. 디바이스에 명령을 다시 보내는(C2D) 과정에서는 보안 문제와 연결 끊김이 발생합니다.
우리는 인프라에 너무 많은 시간을 낭비하고 실제 비즈니스 로직에는 충분히 투자하지 못하고 있었습니다.
Source: …
2. “Metal to React” 아키텍처
목표는 간단했습니다: 인프라 유지보수는 제로, 기능에 100 % 집중. 이를 가능하게 한 스택:
- Edge Gateway (두뇌) – 임베디드 리눅스(최신 SoM) 위의 Python. MQTT/RS485/CAN을 통해 로컬 센서 데이터를 읽고, 이를 클라우드에 안전하게 연결합니다.
- IoT Broker (교통 경찰) – Azure IoT Hub. 수백만 개의 메시지, 디바이스 프로비저닝, 양방향 보안 통신을 처리합니다.
- API Backend (접착제) – Python 기반 Azure Functions. 완전 서버리스, 즉시 확장 가능, 서버 유지보수 제로.
- Database & Auth – Supabase (PostgreSQL). 사용자 인증과 실시간 기능을 바로 제공합니다.
- Frontend (얼굴) – React + Tailwind CSS. 사용자가 디바이스를 모니터링하고 제어할 수 있는 깔끔한 싱글 페이지 애플리케이션.
3. 왜 엣지에서 C++를 포기하고 Python을 선택했는가
- Speed of Development – C++에서 몇 주가 걸리던 작업(예: JSON 파싱, Azure SDK 통합, 스레딩)이 이제 Python에서는 몇 시간 안에 완료됩니다.
- Rich Ecosystem –
azure-iot-device와paho-mqtt와 같은 라이브러리는 안정적이며 구현이 쉽습니다. - Future‑Proofing for AI – 예측 유지보수를 위한 머신러닝 모델(Edge AI)을 나중에 실행하게 될 때, Python은 이미 기본 언어입니다.
4. 왜 Serverless + Supabase가 궁극적인 조합인가
- Middleware (Azure Functions) – Python 기반 함수가 안전한 브리지 역할을 합니다. 메시지가 IoT Hub에 도착하면 자동으로 트리거되어 페이로드를 처리하고 다시 슬립 모드로 들어갑니다. 사용한 만큼만 비용을 지불하고, 확장은 무한합니다.
- Database & Realtime (Supabase) – 커스텀 WebSocket 레이어를 구축하는 대신 Supabase를 사용합니다. Azure Function은 처리된 센서 데이터를 PostgreSQL 테이블에 기록하고, Supabase Realtime은 그 변화를 React dashboard에 푸시하여 차트를 60 FPS로 즉시 업데이트합니다.
결과: 서버 관리도 없고, 폴링도 없으며, 원활한 실시간 업데이트만 제공됩니다.
5. 이번 시리즈의 다음 단계는?
In Part 2 we’ll dive deep into the Edge Gateway. I’ll show how to bridge legacy MCU/RTOS hardware to a modern Python edge daemon using local MQTT—without writing a single line of C++ networking code.
💡 P.S. Quick question for the community:
Would a plug‑and‑play template like this be useful for your projects? Let me know your thoughts in the comments below! 👇