# Lavandula - C로 웹 프레임워크를 만들었어요

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=23564](https://news.hada.io/topic?id=23564)
- GeekNews Markdown: [https://news.hada.io/topic/23564.md](https://news.hada.io/topic/23564.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-10-10T15:33:39+09:00
- Updated: 2025-10-10T15:33:39+09:00
- Original source: [github.com/ashtonjamesd](https://github.com/ashtonjamesd/lavandula)
- Points: 17
- Comments: 1

## Summary

**Lavandula**는 **C 언어**로 구현된 **경량 웹 프레임워크**로, 불필요한 의존성을 줄이고 **심플한 구조와 빠른 개발 환경**을 제공합니다. 필수적인 **라우팅, 미들웨어 파이프라인, 내장 SQLite/JSON 라이브러리, CLI 기반 프로젝트 생성** 등 현대 개발에 필요한 기능을 기본 제공하여 리소스가 제한된 환경이나 고속 서버가 필요한 개발자에게 적합하며, 앞으로 **ORM, 세션, 다양한 데이터베이스 연동** 등의 확장도 계획하고 있습니다.

## Topic Body

- **Lavandula**는 **C 언어 기반의 경량 웹 프레임워크**로서, 현대적인 웹 애플리케이션 개발을 위해 설계됨  
- **직관적이고 빠른 개발 환경**을 제공하며, 불필요한 기능 없이 **생산성과 성능**에 중점을 둠  
- **컨트롤러/라우팅 시스템, 미들웨어 파이프라인, 테스트 프레임워크, SQLite/JSON 라이브러리** 등 필수 기능을 대부분 포함함  
- 향후 **ORM, 세션 쿠키, 정적 파일 서빙, 다양한 데이터베이스 연동** 등 기능 확장이 예정되어 있음  
- **CLI 기반의 빠른 프로젝트 생성, 내장 유닛 테스트, 환경 변수·로깅 지원** 등으로 개발자 편의성 극대화임  
  
---  
  
### Lavandula: 경량의 고성능 C 웹 프레임워크 개요  
  
- **Lavandula**는 현대적인 웹 애플리케이션을 빠르고 간단하게 만들 수 있도록 설계된 **C 언어 경량 웹 프레임워크**  
- 주요 목표는 **심플함, 빠른 속도, 높은 생산성**으로, 복잡한 기능보다는 꼭 필요한 부분에 집중하며, 무거운 프레임워크의 불필요함을 줄인 형태  
  
### 주요 특징 및 효용성  
  
- **C 기반**으로 제작되어 **최소한의 의존성**만 포함  
- **컨트롤러와 라우팅 시스템**을 제공하여 쉽게 HTTP 엔드포인트 구성 가능  
- **GET, POST 등 HTTP 메서드 지원** 및 **로컬/글로벌 미들웨어 파이프라인** 탑재  
- **CLI 툴(lavu)** 를 통한 빠른 프로젝트 생성과 실행이 지원됨  
- **내장 유닛 테스트 프레임워크**, **환경 변수 처리**, **로깅**, **SQLite 통합**, **JSON 라이브러리** 내장  
  
### 현재 완성된 기능  
  
- **컨트롤러/라우팅 시스템**  
- HTTP 메서드별 엔드포인트 지원 (GET, POST 등)  
- **미들웨어 파이프라인** (로컬/글로벌)  
- **최소 의존성** (순수 C 코드 기반)  
- **CLI로 간편한 프로젝트 스캐폴딩**  
- **내장 유닛 테스트 프레임워크**  
- **환경 변수 지원**, **로깅 시스템**  
- **SQLite/내장 JSON 라이브러리 통합**  
  
### 개발 진행 중인 기능  
  
- HTTP JSON 바디 파싱  
- 세션 쿠키  
- CORS 정책 설정  
- **Lavender ORM**  
- **ELA(Embedded Lavandula) HTML 템플릿 엔진**  
  
### 향후 계획(로드맵)  
  
- 레이트 리미팅  
- 정적 파일 서빙  
- PostgreSQL, MySQL 연동  
- 의존성 주입 프레임워크 후보  
- 등록 가능 엔드포인트/라우트 리스트 자동화  
- JSON 모델 및 CRUD 함수 자동생성 ('lavu model' 명령어 이용)  
- URL 파라미터 처리 및 동적 라우팅  
  
### 프로젝트 생성 및 실행 방법 개요  
  
- **CLI 명령어**: `lavu new my-project`로 프로젝트 폴더 및 기본 구조 자동 생성됨  
- **자동 생성되는 파일**:  
  - 설정파일(lavandula.yml)  
  - 메인/컨트롤러/라우트 소스  
  - makefile  
  - 테스트 코드 등  
- 빠른 실행: 폴더 이동 후 `lavu run`으로 바로 로컬 서버 실행 가능, 기본 포트 `http://localhost:3000/`  
  
### 라이선스 및 기타 정보  
  
- 라이선스: **MIT License**  
- 오픈소스 정신에 맞추어 누구나 개선/참여 가능함  
- **C(97.3%)** 기반으로 작성되어 있으며, Makefile/Shell script 일부 포함됨  
  
### Lavandula가 주는 장점 요약  
  
- **C 언어 생태계에서 매우 드문 완전한 웹 프레임워크**로, 리소스가 제한된 환경 또는 초고속 서버 구현에 탁월함  
- 인기 있는 프레임워크 대비 **더 빠른 속도와 낮은 오버헤드**로 특화됨  
- CLI, 내장 툴, 미니멀 구조로 **학습 곡선이 짧고 생산성이 높음**

## Comments



### Comment 44787

- Author: neo
- Created: 2025-10-10T15:33:40+09:00
- Points: 2

###### [Hacker News 의견](https://news.ycombinator.com/item?id=45526890) 
* 최근 본 C 코드 중 가장 깔끔하고 모던하며 아름다운 코드임을 느꼈음, 이 코드는 커널은 아니지만, #ifdef 조건문이나 언더스코어가 많은 대형 프로젝트와 비교하면 오히려 C의 미적 감각을 배울 수 있는 좋은 예제라 생각함, 특히 이런 방식으로 테스트 코드를 C에서 작성한 것은 처음 봄, 멋진 작업임, 중·고등학생 시절 C로 첫 프로그래밍 언어를 배웠는데, 집에 있던 PC에 무료 소프트웨어를 설치하며 대부분의 프로그램이 C로 만들어졌다는 사실을 알게 됨, 컴퓨터공학을 대학에서 처음 정식으로 접했을 때 C++로 자료구조와 알고리즘을 했지만 포인터를 이미 이해해 쉽게 적응할 수 있었음, 여러 복잡한 요소를 피하면 C는 매우 깔끔하고 단순한 언어임을 알 수 있음, 물론 그 복잡성에 직접 접근할 수 있다는 점이 C의 매력이지만 적절한 균형이 중요하다고 생각함
  * 포인터 이해가 어렵다는 이야기를 자주 듣는데, 실제로 그렇게 힘든 것인지 잘 모르겠음, 처음 배울 때 15분 만에 대충 감을 잡았던 기억임, 물론 능숙해지는 데에는 더 시간이 걸렸겠지만 포인터가 신화적인 난이도로 여겨지는 이유를 잘 이해 못함, 이번 프로젝트 역시 멋지다고 생각함, 다만 이런 프로젝트가 구직자의 포트폴리오에 올랐다가 곧 아카이브되고 잊히지 않기를 바람
  * 코드에 칭찬을 해주신 것이 정말 큰 의미가 있음, 항상 코드를 그렇게 만들려고 많은 노력을 들이고 있는데, 이런 말을 들을 수 있어 감사함
* 과도하게 진지하게 이 프로젝트를 비판하거나, “PHP 대체 가능성” 따위로 의미 없는 분석을 하지 않았으면 함, 이 프로젝트는 C 언어로 멋진 도전을 해본 훌륭한 예시라 생각함, HTML 템플릿이 추가된다면 완성형 프레임워크로 발전할 수 있을 것 같음
  * 좋은 말씀 정말 감사함, HTML 템플릿은 우선순위 목록에 있고 나중에 재미있게 구현할 예정임
  * 재미로 C를 배우는 중인데, 이 프로젝트 정말 멋지다고 생각함
* 코드가 매우 읽기 쉽고 잘 구성되어 있음, 다만 error checking이 거의 없어서 snprintf, malloc 등에서 반환값을 확인하지 않는 부분이 많음, 여기에 [미사용 루프](https://github.com/ashtonjamesd/lavandula/blob/51d86a284dc7d11aaaa3e0fac5fb1278a9051529/src/http.c#L398-L400)도 존재함, 병렬 처리 부분은 아직 지원하지 않는 것 같아 당장 문제는 아니나 웹서버 특성상 향후 threading 도입이 유리함, 구현을 고려할 때는 [libuv](https://github.com/libuv/libuv/libuv) 같은 라이브러리 사용을 추천함
  * 피드백을 정성껏 주셔서 감사함, 병렬 처리는 나중에 추가하기로 계획했어서 언급해 주셔서 좋았음
* Jetzig이라는 비슷한 프레임워크를 재미있게 써봤는데 이번 프로젝트도 매우 좋게 봄, BSD C CGI와 Postgres 조합 역시 좋아하고, 주로 Python을 다루지만 저수준 언어와 메모리 개념을 직접적으로 경험하는 것이 정말 재미있음, 현실성을 지적하는 이들도 있지만 임베디드 디바이스가 더 널리 퍼질수록 이런 저수준 프레임워크의 가치가 더 높아질 것 같음, pico calc로도 실험 중인데, 만약 그를 위한 "모바일 앱"을 만든다면 C로 프레임워크 코드를 작성할 것임, 멋진 작업임
* 내 생각에 이 프로젝트 정말 멋짐, 셋업이 쉽게 읽히고 C 퍼포먼스를 누릴 수 있다면 이득임, 특히 Claude 같은 AI로 프레임워크 일부를 쉽게 만들어내서 필요시 필요한 만큼만 추가하고, 가볍고 플랫폼 독립적인 웹 프레임워크를 직접 구성할 수 있다는 게 장점임, 상당히 퍼포먼스도 잘 나올 것이라 기대함
  * 유지보수 악몽 체크리스트:  
    - 웹 프레임워크는 계속 변화하는 표준 때문에 애초에 유지보수가 어려움  
    - AI가 쓴 코드라 어느 누구도 어떻게 동작하는지 명확히 모를 수 있음  
    - C로 작성됨  
  개인적으로 순수 C의 단순함이 마음에 들긴 하지만, AI가 쓴 C 기반 네트워크 코드 조합은 다소 두렵기도 함
* C로 HTTP 파서를 처음부터 직접 짜는 것은 매우 위험하다고 생각함, 엄청난 취약점이 생길 수 있어서 실제 배포를 염두에 두고 웹 프레임워크를 만들 때는 libmicrohttpd, libevent_http, fastcgi 등 검증된 라이브러리에서 출발하는 것이 안전함
  * 이런 경고에 크게 공감함, 그렇다면 도대체 어떻게 하면 C로 안전한 HTTP 서버를 만들 수 있을지 궁금함, 정말 흥미로운 책 소재가 될 것 같음, 매 챕터마다 취약점을 짚어가며 성숙한 HTTP 라이브러리가 되는 구조적 방법을 다루면 흥미로울 것임
  * 실제로 이 프로젝트가 운영 환경에 쓰일 일은 없을 것으로 보지만, 혹시라도 그런 생각이 든다면 단념하길 바람
* unsolicited 피드백임, appRoute 매크로가 타입과 시그니처를 모호하게 만들고 불필요한 간접화를 도입한다고 생각함, 제거하는 게 좋을 듯함, 그리고 AppContext 타입은 실제로 App+HTTP Request+DB 등 기능이 섞여 있어 RequestContext 또는 ControllerContext 등이 더 적합할 듯함, 그 외 다른 이들처럼 코드의 깔끔함에 감탄했고, 정말 멋진 노력임
* 매크로의 활용 덕분에 많은 일이 가능하다는 점을 보여줌, 실제로 현대 웹 프레임워크들도 각 언어의 메타프로그래밍 등 복잡한 도구를 적극적으로 활용함, 직접 만들어본 점을 크게 칭찬하며, 힘든 일이지만 분명히 재미있는 일이기도 함, "왜 만들었냐"는 질문도 있는데 굳이 이유가 필요하지 않다고 생각함, 순수하게 개발 그 자체를 즐기기 때문임
  * 정말 고맙고, 전적으로 공감함
* 하드웨어 벤더들이 이 프로젝트를 입양해서 관리 웹 페이지 품질이 좀 더 좋아지기를 기대함
* 정성스럽게 짜여진 좋은 아이디어의 프로젝트임에도 불구하고 부정적인 반응이 많은 게 놀라움, Ashton이 이번에 쌓은 실력은 앞으로도 사라지지 않을 소중한 자산임
  * 그렇게 평가해줘서 정말 감사하다는 마음임
