# 임베디드 개발자에게 Lua가 MicroPython보다 좋은 이유

> Clean Markdown view of GeekNews topic #21986. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=21986](https://news.hada.io/topic?id=21986)
- GeekNews Markdown: [https://news.hada.io/topic/21986.md](https://news.hada.io/topic/21986.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-07-15T09:38:32+09:00
- Updated: 2025-07-15T09:38:32+09:00
- Original source: [embedded.com](https://www.embedded.com/why-lua-beats-micropython-for-serious-embedded-devs)
- Points: 13
- Comments: 2

## Summary

임베디드 시스템 개발에서 **Lua**는 **MicroPython**보다 **C와의 뛰어난 통합성**과 **경량성·결정론적 구조** 덕분에 대규모 프로젝트와 프로덕션 환경에서 **안정성**과 **유지보수성** 면에서 더 큰 이점을 제공합니다. **MicroPython**은 빠른 프로토타이핑과 교육용 현장에 강점을 가지지만, **핵심 Python 라이브러리의 부족**과 **C 확장 연동의 복잡함**으로 인해 산업용 임베디드 환경에서는 한계가 뚜렷합니다. 특히 **Xedge Framework**와 같은 Lua 기반 솔루션은 **보안·실시간 데이터 처리·웹 연동 등 IoT 기능**을 통합하면서도, 개발자들이 **차별화된 로직 개발**에 집중하도록 돕습니다. 장기적 확장성과 개발 효율, 유지관리 비용 측면에서 **고성능 임베디드 제품**을 목표로 한다면 Lua가 더욱 실용적인 선택지임을 보여줍니다.

## Topic Body

- **임베디드 시스템 개발**에서 **Lua**는 **MicroPython**보다 높은 안정성과 확장성을 제공함  
- **Lua**는 **C와의 통합이 쉽고, 가볍고, 결정론적**인 구조를 가지며, **코드 유지보수성**과 **장기적 비용 절감**에서 더 큰 이점을 보임  
- **MicroPython**은 빠른 프로토타이핑에는 적합하지만, **대규모 프로젝트나 프로덕션 환경**에서는 한계에 부딪힘  
- Lua는 **작고 효율적인 실행 파일**로 빌드되어 불필요한 기능 없이 운영 가능하며, **프로토타이핑에서 제품화까지** 확장성과 유지관리성이 높음  
- **Xedge 프레임워크**는 Lua를 임베디드 시스템에 최적화하여 강력한 IoT, 웹 기능을 제공함  
  
---  
### 임베디드 프로페셔널 환경에서 Lua vs. MicroPython  
  
- 산업 자동화, 의료기기, 상업용 IoT 등 **전문 임베디드 프로젝트**에서 **고수준이면서도 경량적인 환경**이 점점 더 선호되는 추세임  
- MicroPython은 빠른 프로토타이핑과 현장 배포에 강점이 있으나, **주로 취미/교육용 보드 중심의 생태계**임  
- Python의 강점인 **NumPy, pandas** 같은 대형 라이브러리가 **MicroPython**에는 없으며, **표준 라이브러리도 대폭 축소**되어 있음  
- C 확장과의 통합도 MicroPython은 상대적으로 복잡  
- Lua는 **C 애플리케이션과의 통합**을 근본 철학으로 채택  
  - **안정적이며 미니멀한 C API**와 바이트코드 가상머신 제공  
  - C/C++ 함수와 자료구조를 Lua에 쉽게 노출 가능  
  - **Lua ANSI C 라이브러리**는 임베디드를 위해 설계되어 구조가 **간결, 경량, 결정론적**임  
- MicroPython은 Python 3의 재구현으로, 데스크톱 지향 언어의 가정이 남아 있어 **리소스가 제한된 환경에서 한계가 빨리 드러남**  
  
### 심리스한 C 연동은 Lua의 핵심   
  
- Lua의 가장 큰 장점은 **C와의 매끄러운 통합**  
- API가 **안정적이고 최소화**되어 있으며, **자체 C/C++ 함수와 데이터 구조를 Lua에 쉽게 노출**할 수 있음  
- MicroPython도 C 확장을 지원하지만, **커스텀 펌웨어 빌드**가 필요하고 워크플로가 더 복잡함  
- Lua는 **C 연동 자체가 설계 철학**임  
  - Lua C API를 **수동**으로 사용하거나, **SWIG** 등 자동 바인딩 툴을 활용해 **C 함수/구조체를 Lua에서 호출** 가능  
  - C의 성능이 중요한 로직은 C로, 고수준 비즈니스 로직은 Lua로 분리해 **유지보수성과 확장성**을 높일 수 있음  
  
### 미니멀한 풋프린트와 확장성  
  
- Lua는 **코어 인터프리터가 매우 작고**, 필요 없는 기능은 쉽게 제거 가능  
- MicroPython도 임베디드용으로 최적화됐으나, **기본 이미지가 크고** 필수 모듈 활성화 시 용량 증가 현상  
- 둘 다 **빠른 프로토타이핑**에 적합하지만, **Lua는 프로덕션까지 확장성이 뛰어남**  
- Lua는 **고수준-저수준 분리 구조** 설계가 쉬워, 빠르게 프로토타입 개발 후 **유지 보수 가능한 하이브리드 구조**로 발전 가능  
- Lua는 처음부터 C 코드와 결합하여 **스케일업이 자연스럽고 개발 플로우가 단절되지 않음**  
- MicroPython은 프로토타입 이후 코어 로직을 다시 작성해야 하거나 한계에 부딪힐 수 있음  
  
### 생태계와 라이브러리 접근성 - Quality Over Quantity  
  
- MicroPython은 Wi-Fi 보드 등 **취미/교육용 하드웨어 중심**의 생태계가 활발하지만, **대형 Python 생태계의 주요 라이브러리 부재**  
- Lua는 **라이브러리 수는 적지만, C로 쉽게 확장 가능**하며, 생태계의 한계에 덜 부딪힘  
  
### 유지관리 및 비용 측면의 장점  
  
- Lua는 **코드베이스가 작고, 테스트·디버깅·인수인계가 쉬움**  
- 프로젝트 확장시 Lua 스크립트와 C 코어 간 **레이어 분리 유지**, 인계 및 협업에 유리함  
- MicroPython도 가독성은 높으나, **프로젝트가 커질수록 시스템 코드와 스크립팅 레이어가 혼재되는 경향**이 있어 유지보수 비용이 상승할 수 있음  
  
### 결론: Choose What Scales  
  
- **교육 및 프로토타이핑 목적**이라면 MicroPython도 훌륭한 선택  
- **보안, 신뢰성, 유지보수가 중요한 임베디드 제품**에는 Lua가 더 실용적이며, **확장성·유연성·안정성을 동시에 제공**  
- **Lua는 단순한 스크립트 언어가 아니라, 임베디드 개발 전략**임  
  
### 임베디드 기기에서 Lua C 라이브러리 통합 방법  
  
- Lua C 라이브러리는 **경량·ANSI C 호환·표준 C 라이브러리 외에는 의존성이 거의 없음**  
- **베어메탈, RTOS 기반 시스템에 적합**하며, 표준 C의 stdin/stdout 등 일부 요소는 포팅시 주의 필요  
- # Real Time Logic의 Xedge Framework  
  - **Xedge Framework**는 **임베디드 환경에 최적화된 Lua 런타임 및 API 세트**를 제공  
  - **TLS, MQTT5, WebSocket** 등 보안 통신, RESTful 웹서비스, 실시간 데이터 처리, Modbus/OPC UA 프로토콜 등 **IoT/웹 기능** 내장  
  - Lua의 **유연성과 경량성**을 유지하면서도, **실전 투입이 가능한 완성형 임베디드 프레임워크**를 제공  
- Lua를 임베디드 제품에 내장하려면 Xedge가 **가장 실용적인 선택지**로, 통합을 단순화하고 개발 속도를 높이며, 차별화된 로직에 집중할 수 있게 함

## Comments



### Comment 41427

- Author: cnaa97
- Created: 2025-07-15T13:41:03+09:00
- Points: 1

애초에 장비 생산하는 컴포넌트 생산 업체에서 lua든 python 지원을 잘 안함. c 정도?

### Comment 41405

- Author: neo
- Created: 2025-07-15T09:38:33+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=44548503) 
* 게임 엔진을 만들어서 전체 게임을 스크립팅 언어로 작성하는 걸 결심했을 때, JavaScript(QuickJS), Python(Boost.Python), Lua(Sol2) 세 가지 중에서 고민했음  
  Lua를 임베딩하는 게 정말 쉽고, C++ 래퍼와 함께 써도 매우 간편함  
  얼마 안 걸려서 '이 정도면 바로 쓸 수 있겠다' 싶은 엔진을 갖추게 됨  
  게다가 Lua VM은 아주 가벼움  
  자세한 내용은 [carimbo 프로젝트](https://github.com/willtobyte/carimbo)에서 볼 수 있음

  * 엔진이나 애플리케이션에서 Lua를 스크립트로 지원한다는 걸 보면 Fennel을 사용할 수 있다는 점이 마음에 듦  
    Fennel은 Lua로 트랜스파일되는 언어임  
    [Fennel 공식 링크](https://fennel-lang.org/)

  * 개인적으로 Boost.Python은 스크립팅 도구로 별로라고 생각함  
    이 점이 판단에 영향을 줄 수도 있다고 봄

  * Sol2가 Lua VM인지, 아니면 표준 Lua VM의 래퍼일 뿐인지 궁금함

* 'Lua는 단순한 고수준 언어가 아니라 임베디드 개발 전략'이라는 문구는 납득하기 어렵다고 느낌  
  이런 식의 표현이 들어간 글은 진지하게 받아들이기 힘듦

  * 전체적으로 '나는 Lua를 오래 써봤으니 이제 결론 내릴 수 있다'는 느낌의 글임  
    MicroPython에 대해서는 실제로 경험이 별로 없어 보이는데 몇 가지 과장된 비판이 있음  
    예를 들어 "MicroPython 프로젝트는 시스템 코드와 스크립트 레이어가 뒤섞여 유지보수가 어렵다"는 얘기엔 근거가 약함  
    언어나 프로젝트 관리/구조 설계의 영향일 수 있는데, 원인은 엄밀하게 평가돼야 한다고 생각함

  * 이 글은 실제 기사보다 Xedge Lua 프레임워크 광고처럼 느껴짐  
    그냥 광고임

  * 전반적으로 글이 chatgpt 스타일 같음  
    광고 글의 경우, 사람이 썼든 LLM이 썼든 상관없어 보임

  * 댓글들도 언급했듯이 chatgpt 느낌이라 글을 읽으며 별로 즐겁지 않았음

* [PLDB Top 1000](https://pldb.io/lists/top1000.html) 리스트에서 Lua가 MicroPython보다 더 높은 순위에 있음  
  [이 비교 글](https://www.farginfirmware.com/home/lua-vs-micropython)에서 Github 유저 SkipKaczinksi는 Lua가 대체로 더 빠르다고 봄  
  [Hackaday 글](https://hackaday.com/2020/11/14/micropython-on-microcontrollers/)의 Michael Polia도 Lua가 작고 빠르다고 언급함  
  [Toit 언어](https://www.cnx-software.com/2021/11/28/toit-open-source-language-claims-to-be-30x-faster-than-micropython-on-esp32/)는 MicroPython보다 30배 빠르다고 주장함  
  Toit의 창립자는 V8의 초기 개발 책임자였음

* "임베디드(embedded)"와 "임베더블(embeddable)" 개념은 구분이 필요함  
  MicroPython은 임베디드 플랫폼에서 사용되지만, Lua처럼 기존 애플리케이션에 통합하는 '임베더블 런타임'은 아님  
  MicroPython의 목적은 전통적인 C 런타임을 대체해 최소한의 C 래퍼로 초기화만 하고 나머지 비즈니스 로직을 MicroPython 스크립트로 작성하게 하는 것임  
  Lua의 lua_State처럼 여러 인터프리터를 동시에 쓸 수 있는 구조나 샌드박싱이 없음  
  즉, MicroPython은 '게임 엔진 내에서 스크립트로 빠른 반복 개발'보다는 'IoT 보드에서 파이썬으로 센서 데이터 읽기'에 최적화돼 있음

  * MicroPython이 Lua처럼 임베더블은 아니지만, 아예 불가능하지는 않음  
    완전히 박스 밖에서 쓸 수는 없고, 글루 코드 정도는 필요함  
    참고 자료로 [embed 포트 예시](https://github.com/micropython/micropython/tree/master/ports/embed)를 볼 수 있음

* Lua는 임베디드 용도로도 훌륭한 언어라고 생각함  
  Lua 기반 제품도 좋다고 생각하지만, 이 글에서 '왜 Lua가 MicroPython을 이기는지' 설득력이 떨어짐  
  MicroPython을 C로 확장하는 건 생각보다 쉽고, 공식 모듈 개발 방식과 똑같이 외부 모듈도 개발하면 됨  
  그래서 펌웨어 커스텀 빌드시 어렵지 않게 추가할 수 있음  
  그리고 Python 계열 라이브러리(numpy 등)가 안 된다는 지적이 있었지만, 실제로는 numpy와 scipy 일부를 리이벤트한 ulab 라이브러리도 존재함

* 개인적으로 들은 이야기는 마케팅 문구로 느껴짐  
  마이크로컨트롤러에서 충분한 리소스가 있으면 micropython을 씀  
  전력, 메모리, CPU 제어가 정말 중요하면 결국은 C/C++을 씀  
  네트워크 관련 개발은 C/C++에서 어렵지만 빠르고 안전하게 할 수 있는 옵션이 부족했는데(최근엔 내장 TLS 지원도 더 좋아졌을 것 같음)  
  Lua는 C를 부드럽게 포장한 느낌임  
  라이브러리가 풍부하면 좋지만, 직접 Lua 툴체인, 마이크로컨트롤러 툴체인, 필요한 라이브러리를 모두 포팅해야 하는 부담이 큼  
  그래서 이 부분이 마케팅 글이면 [Xedge](https://realtimelogic.com/products/xedge/) 제품을 써서 외주 주라는 메시지라고 생각함

  * 'micropython을 쓰려면 리소스가 넉넉해야 한다'는 이야기에  
    그냥 2350에서도 잘 돌아간다고 짧게 언급함

* 정말 '진지하게' 임베디드 개발에 micropython이나 lua를 쓰는 사람이 있는지 궁금함

  * 20년 가까이 프리랜서로 Lua 중심의 임베디드 제품을 만들었음  
    VOIP 기기, 홈 오토메이션, 산업용 라우터, 디지털 비디오 레코더 등 다양한 분야에서 Lua를 활용함  
    보통 시스템은 Linux 커널, libc, Lua 인터프리터, 그리고 몇몇 외부 라이브러리로 구성됨  
    Lua 애플리케이션 소스는 3만~10만 줄 정도로, 요즘 기준으론 '작은' 제품도 있음(플래시 8MB, 램 64MB 등)  
    Lua는 이런 환경에서 잘 동작함  
    모두 현역 제품이고, 고객에게도 돈이 되고 있음  
    Lua와 C의 연동은 매우 쉽고, 비동기 적으로 작업하는 데도 현대 언어들이 아직도 고민할 수준을 Lua는 예전부터 해결해옴  
    언어는 단순하면서도 강력하고, 코루틴, 클로저, 메타테이블 등으로 다양한 패러다임을 쓸 수 있음  
    이런 스케일의 프로젝트라면 여전히 Lua + C/C++ 조합을 선택할 것임  
    다른 생태계(Elixir, Rust, Nim)도 써봤지만, Lua만큼 강력하고 유연한 언어는 못 찾음

  * 우리는 MicroPython으로 class B 의료기기까지 개발하고 있음

  * 임베디드 세계는 범위가 매우 넓음  
    안전에 민감하면 규정상 못 쓰지만, 테스트 장비 등은 규제에 상관없으니 편한 걸 씀  
    IoT 영역에서도 모두 각자 편리한 걸 쓴다고 보면 됨

  * MicroPython이 큐브샛(소형 위성) 등 위성 임무에도 실제로 쓰임  
    관련 컨퍼런스와 팟캐스트 사례도 존재함

  * 수천 개 제품이 Lua를 내부적으로 사용하거나 일부에라도 쓰고 있음  
    최근 LuaJIT도 조사해봤는데 저평가됐다고 생각함

* '진지한 임베디드 개발자'는 대부분 컴파일 언어를 쓴다고 생각함

  * 결국은 바이트코드로 컴파일되니 일종의 컴파일된 언어라고 볼 수도 있음

* 취미로는 그냥 Arduino(Platformio)를 이용함  
  마이크로컨트롤러에서는 컴파일하고 플래시 올리는 게 금방이라 굳이 인터프리터가 필요하진 않음  
  언젠가 C++을 대체할만한 다른 컴파일 언어도 써보고 싶음  
  Raspberry Pi Pico에서 잘 동작하는 추천 언어 있을지 궁금함

  * 전문가까지는 아니지만, Rust가 가장 인기 있는 대안 중 하나라고 느낌  
    트렌디하고 C++의 문제도 많이 고쳤으며 툴링도 괜찮은 편임  
    Zig도 재밌어 보여서 시도해보고 싶음  
    Raspberry Pi는 사양이 좋아서 시스템 언어가 아니어도 돌아갈 수 있음  
    Kotlin도 좋아하고, 기본적으로는 JVM이 필요하지만 native 빌드 가능함  
    다만 Pico에서 GPIO 제어는 파일시스템을 직접 건드려 써야 할 수도 있음(덧붙여 Pico에서 Kotlin 지원은 확실하지 않음)

  * Nim이 꽤 괜찮은 옵션으로 보임  
    관련 자료는 [picostdlib의 Nim 지원](https://github.com/EmbeddedNim/picostdlib/tree/master) 참고

* Lua는 본질적으로 훨씬 더 단순한 언어임  
  Python은 '한 가지 방법만 있다'는 신념을 갖고 있지만 실제로는 이것저것 다 넣어둔 '만능툴' 같은 느낌임  
  이게 오히려 시작하기 쉽고, 라이브러리도 많아서 쉽게 개발할 수 있지만  
  리소스가 부족한(작은) 환경에는 잘 어울리지 않음  
  화려한 의자를 꼭 판자로 에임스 체어로 변형시키는 데에는 한계가 있음

  * Python은 쉽고 Lua는 단순함  
    '쉬움'의 문제는 내부 복잡성이 숨어 있다는 것이고, '단순함'은 사용자에게 더 많은 노력이 필요함을 의미함

  * Python은 버전 호환성이 취약해서 3.x에서 3.x+1로 넘어갈 때 문제가 자주 발생함  
    Lua도 완벽하진 않지만, 그래도 여러 Lua 버전을 지원하는 사례가 많아서 급격한 버전 업그레이드를 강제받지 않는 장점이 있음
