Unikernels were hard, 이제는 AI가 포팅과 구현 장벽을 낮춘다는 Geoffrey Huntley 주장
- 유니커널은 애플리케이션이 곧 운영체제인 구조라 셸과 인터프리터가 없어서 침입자가 다음 단계로 넘어갈 수 없음
- Justin Cormack은 에이전트를 써서 mkfs.xfs를 Rust로 다시 짰고, 원본과 바이트 단위로 같은 출력을 내며 작업은 몇 시간 만에 끝남
- Stripe 같은 라이브러리가 없으면 Go 라이브러리를 OCaml로 옮기는 루프 기반 포팅으로 해결할 수 있다고 Geoffrey Huntley가 주장함
- 스토리지는 S3를 기본 저장소로 두고 로컬 NVMe 블록 캐시와 LRU로 자주 쓰는 데이터를 처리하는 방식이 제시됨
- HN 토론에서는 디버깅 가시성 저하와 GPU용 하이퍼바이저 부재가 실사용의 걸림돌로 지적됨
Hacker News opinions
보안 이득은 공격 표면 줄이기보다 취약점 익스플로잇 차단이 훨씬 큼인데. DBIR에도 침해가 매년 나오고 CISA KEV 1위가 OS 명령 주입이잖아. OS 자체가 문제라서 한 개만 돌리는 유니커널이 근본적으로 유리함
아니 OS도 Qubes 같은 데서는 격리로 잘 막잖아. 여러 프로그램 돌린다고 무조건 문제는 아님
근데 결국 파일시스템이나 네트워킹을 매번 직접 짜면 버그 나고 공유 기본기가 다시 필요해지는 거 아님? 중간 지점으로 표준화된 라이브러리 쓰는 게 맞지 않나
직접 짜는 게 아니라 검증된 라이브러리 가져다 링크하는 거임. MirageOS가 그렇게 함. 시스템 콜 없이 서브루틴 호출이고 공유 서비스도 없어서 리눅스 커널 통째로 띄워서 프로세스 하나만 돌리는 것보다 가벼움
microVM 기동 시간 보면 체감 차이 크더라. Netlify랑 Unikraft 사례 보니까 V8 isolate보다 빠를 수도 있겠다 싶음
그건 맞는데 기동 시간이 중요한 워크로드는 일부임. 웹서버나 DB나 추론 서버는 한번 띄우면 계속 돌잖아. 그리고 NVIDIA GPU용 실용적인 하이퍼바이저도 아직 없어서 GPU 쓰는 쪽은 한계가 있음
솔직히 제일 큰 장점은 보안보다 쓰기 편한 거인 듯. 유니커널을 EC2나 GCP에 바로 올리면 초 단위로 뜨고 비용도 싸게 나옴. Lambda나 Cloudflare보다 이게 나은 경우가 많음
디버깅은 어떡하냐. 애플리케이션에서 오버플로우 나면 네트워크 스택까지 망가지는 거 아님? 공격 표면 줄이는 건 좋은데 시스템 가시성이 떨어지면 못 씀
그래서 보통 OCaml 같은 관리형 런타임을 쓰는 게 이런 용도에 맞음. 포인터나 메모리 접근이 제한되니까 마음이 편함. Rust도 좋긴 한데 탈출이 가능하고 서드파티 의존성이 많은 게 골칫거리임