• 엔지니어, 일회용 베이프로 구동되는 ‘번개처럼 빠른’ 웹 서버 개발 — 24 MHz Arm 칩, 24KB 플래시, 3KB SRAM을 탑재한 ‘VapeServer’

    이 폐품들만 해도 전자 기기가 너무 많아 그냥 지나칠 수 없습니다.

    article image

    엔지니어이자 오리가미 아티스트인 보그단 이오네스쿠(Bogdan Ionescu), 별명 BogdanTheGeek이 일회용 베이프(vape)로 작동하는 웹 서버를 개발했습니다. 일회용 베이프를 수집해 온 경험과 이전에 "몇 줄의 코드만으로" 모든 Arm CPU에서 세미호스팅(semihosting)을 수행했던 경험을 바탕으로, 보그단은 '베이프에서 웹 서버를 호스팅한다'는 착안을 얻었고, 이를 통해 VapeServer를 탄생시켰습니다.

    일회용 베이프에는 예상외로 상당한 양의 컴퓨팅 파워와 부품이 내장될 수 있습니다. 보그단은 수년 동안 '향후 프로젝트'를 위해 폐기된 장치들을 수집해 왔으며, 특히 배터리 재사용에 초점을 맞추고 있었습니다. 하지만 최근 그는 더 정교한 IC와 마이크로컨트롤러를 탑재한 '더 발전된' 기기들이 존재한다는 것을 알게 되었습니다. 단순히 알 수 없는 '블롭 칩(blob chips)'이 박힌 PCB에 그친 것이 아니었습니다. 그는 더욱 진보된 마이크로컨트롤러가 탑재된 장치들을 발견했습니다.

    보그단의 말에 따르면, 그가 분해한 고급 장치 중 하나에는 'PUYA C642F15'라고 표시된 IC가 들어있었습니다. 이것이 연구의 계기가 되었고, 엔지니어는 이것이 실제로는 PY32F002B라는 것을 확인했습니다. 이 장치의 사양은 다음과 같습니다:

    • 플래시 저장 공간: 24KB
    • 정적 RAM: 3KB
    • 몇 가지 주변 인터페이스

    이는 뛰어난 사양은 아니며, 보그단의 추정으로는 10년 전 휴대폰에 비해 '약 100배 느린' 수준입니다. 하지만 웹 서버 구동이라는 특정 목적에 국한하여, 보그단은 USB-C 포트를 갖춘 PY32F002B 기반의 구형 베이프가 '놀라울 정도로 빠른' 장치를 구현하는 데 활용될 수 있다고 판단했습니다.

    간단히 설명하자면, 보그단은 마이크로컨트롤러를 이용해 SLIP(Serial Line Internet Protocol)을 통해 USB 직렬 연결상에서 다이얼업 모뎀을 에뮬레이션하는 방식을 사용했습니다. 리눅스 유틸리티인 ‘slattach’와 ‘socat’을 사용해 IP 패킷 전송이 가능해지자, 마이크로컨트롤러는 간결한 uIP 스택을 활용하여 TCP/IP로 통신하고 웹 서버를 구축했습니다. 웹 페이지는 링크된 블로그 게시물의 사본이었으며, PY32F002B가 가진 남은 플래시 메모리 20KB에 겨우 담을 수 있었습니다.

    페이지 로딩 시간을 20초에서 160ms로 단축시키기

    사용 가능한 성능의 웹 서버를 만들기 위한 최적화 과정은 여러 난관에 부딪혔습니다. 보그단은 초기 테스트 후 성능이 매우 저조했던 나머지 거의 포기할 뻔했다고 회상합니다. 당시 핑(Ping) 시간은 약 1.5초였고, 단순한 페이지 로드만 해도 20초가 소요되었습니다.

    하지만 그는 근본적인 문제점이 자신의 코드에 있었다는 점을 인정했습니다. 이에 엔지니어는 처리량(throughput) 개선을 위해 버퍼를 추가하고 쓰기 작업을 배치 처리(batch writes)하는 방식으로 수정했습니다. 몇 차례의 추가적인 조정을 거쳐, 마침내 핑을 20ms로 낮추고 패킷 손실 없이 전체 페이지 로딩을 약 160ms에 달성하는 데 성공했습니다. 결코 나쁘지 않은 성능입니다.

    저희가 공유한 보그단의 블로그 원본 링크는 이 베이프 구동 웹 서버에 호스팅되어 있지 않습니다. 다만 정말 궁금하다면, 이 링크를 통해 VapeServer에서 게시물을 불러와 테스트해 볼 수 있습니다. 현재 베이프 호스팅 페이지는 방문자 폭주로 인한 '503' 오류를 띄우고 있을 가능성이 있어, ‘시도’해 보시길 권장합니다.

    보그단은 또한 VapeServer의 세미호스트-IP 프로젝트 코드를 GitHub에 공개했습니다.

    최신 뉴스, 분석, 리뷰를 피드에서 받아보시려면 Google News에서 Tom's Hardware를 팔로우하거나 즐겨찾는 소스로 추가해 주세요. 팔로우 버튼을 누르는 것을 잊지 마세요!

    [출처:] https://www.tomshardware.com/maker-stem/microcontrollers-projects/engineer-creates-blazingly-fast-web-server-powered-by-a-disposable-vape-vapeserver-powered-by-24-mhz-arm-chip-with-24-kilobytes-of-flash-3kb-of-sram