순수 ARM64 어셈블리어로만 작성된 웹 서버 '야마키(ymawky)'가 최근 주요 업데이트를 통해 리눅스를 정식 지원하고 CGI(Common Gateway Interface) 스크립트 기능을 추가했습니다. 이는 기존 macOS 전용에서 벗어나 더 넓은 환경에서 동적 콘텐츠를 처리할 수 있게 되었음을 의미합니다. 야마키는 시스템 호출(syscall)만을 사용하고 C 표준 라이브러리(libc)를 전혀 사용하지 않는 '포크-퍼-커넥션(fork-per-connection)' 방식의 웹 서버로, 극단적인 경량성과 효율성을 추구하는 것이 특징입니다.
야마키는 GET, PUT, HEAD, DELETE, OPTIONS 요청을 지원하며, CGI 스크립트 지원을 통해 POST 요청과 쿼리 스트링을 이용한 동적 콘텐츠 생성도 가능해졌습니다. 또한, 슬로우로리스(slowloris) 같은 서비스 거부(DoS) 공격에 대한 기본적인 보호 기능을 갖추고 있으며, 경로 탐색 공격(path traversal) 방지, MIME 타입 자동 감지, Range 헤더를 통한 비디오 스트리밍 지원 등 웹 서버로서 필요한 핵심 기능을 제공합니다. PUT 요청 시 임시 파일에 먼저 쓰고 성공 시 이름을 변경하는 방식으로 파일 무결성을 보장하며, 최대 1GiB 파일 업로드를 지원합니다. 현재는 127.0.0.1(로컬호스트)에서만 실행 가능하지만, 이는 개발자가 아직 다른 주소 지원을 구현하지 않았기 때문입니다.
이 프로젝트는 '재미를 위한' 개인 프로젝트로 시작되었지만, 극단적인 최적화와 저수준 프로그래밍에 대한 깊은 이해를 보여줍니다. 어셈블리어로 웹 서버를 직접 구현하는 것은 현대 웹 개발 환경에서는 매우 드문 시도이며, 이는 특정 임베디드 시스템이나 극도로 자원 제약적인 환경에서 최대의 성능과 최소의 오버헤드를 필요로 할 때 잠재적인 가치를 가질 수 있습니다. 또한, 웹 서버의 동작 방식을 깊이 이해하고 보안 취약점을 최소화하려는 노력은 개발자들에게 좋은 학습 자료가 될 수 있습니다. 비록 아직 상용 서비스에 적용하기에는 안정성이나 기능적 한계가 있을 수 있지만, 저수준 시스템 프로그래밍의 가능성을 탐구하는 흥미로운 사례로 평가됩니다.