Firecracker VM을 사용해서 강의 플랫폼을 직접 설계한 이야기.
https://iximiuz.com/en/posts/iximiuz-labs-story/ 트위터에서 @iximiuz 라는 이름으로 활동하는 아이반 벨리치코라는 분이 Firecracker VM 등을 사용해서, 6개월간 Playground를 포함하는 강의 플랫폼을 만든 이야기를 블로그에 정리해주셨어요. 이 글은 2013년 6월에 올라온 글인데, 저는 최근에 발견하고 와! 이거 읽어봐야겠구먼. 생각이 들어서 체크해놓았다가, 커리어리에도 공유해요. 우선 결과물부터 보고 가자면... https://labs.iximiuz.com/ 사이트를 통해서 아이반이 만든 다양한 강좌를 무료로 들을 수 있게 되어있어요. 단순히 강의를 읽는 것 뿐만이 아니라, Playground를 통해서 직접 본인만의 인스턴트 VM 을 만들고, 명령어를 실행하면서 Container, Kubernetes, Container Network 등에 대해서 실습해 볼 수 있게 사이트가 구성되어 있는데요. 놀라운 점은 이 모든 플랫폼을 아이반 혼자서 만들었다는거에요. 블로그 글에는 왜 플레이그라운드를 직접 만들게 되었는지, 인스턴트로 생성되고 삭제되는 플레이 그라운드를 구현하기 위해, 어떤 설계가 필요했는지... 구체적으로 이야기해요. 플랫폼을 설계하면서 다음의 (높은) 기준들을 잡았고, 간단하게 유지하기 신뢰성을 유지하기 보안을 유지하기 저렴한 가격을 유지하기 현실성을 유지하기 생산성을 유지하기 세부 구성요소들을 어떤 기술들을 사용해서 개발했는지 설명해요. 특히 envoy+iptables 를 통해서 플레이그라운드에서 사용되는 VM의 네트워크를 구성하는 이야기등이 흥미로웠어요. (https://github.com/alexellis/firecracker-init-lab 이프로젝트가 큰 도움이 되었다고 해요.) 이에 더해서 Kubernetes 의 Pod 구성에서 영감을 받아 네임스페이스를 사용한 이야기 등등.. 흥미로운 이야기가 가득해요. 프론트는 Nuxt3 + Tailwind와 https://daisyui.com/ 를 사용했고, 아마도 익숙하지 않은 상태에서 빠르게 배워서 적용한 듯 해요. 백엔드는 Go 언어를 사용했고, chi 기반의 HTTP API 서버와, websocket을 사용했다고 해요. 인프라는 아주 고민이 많았지만 Fly.io 의 머신과 MongoDB Atlas를 사용하게 되었고.. 워커노드로는 Hetzner Auction의 호스팅을 사용했다고 하는데요. 가끔 Tutorial 을 Playground로 제공하는 서비스들을 보면서, 그 뒷단은 어떻게 개발했을지 궁금함이 있었는데, 아이반의 글을 통해서 그 뒷면을 조금이나마 경험해볼 수 있어서 좋았어요. 좀 더 궁금하신 분들은 해당 블로그나 아이반의 블로그의 다른 글들, 그리고 https://labs.iximiuz.com/ 의 플레이그라운드를 실제로 실행해보면서 한번 경험해보시면 어떨까요!!