Let’s Bootc! [0] - Meet The Bootc
Summary bootc 기술은 부팅 가능한 컨테이너를 ISO 형태로 만들어 USB에 설치할 수 있는 혁신적인 방법으로, 특히 엣지 디바이스 환경에서 유용하다. 이 기술은 뛰어난 포터빌리티와 시스템의 불변성을 제공하며, 개인적인 OS 환경을 구축하는 데 매력적이다. 이를 통해 효율적인 환경 관리와 간편한 롤백이 가능하다.


[0] Meet The Bootc
해당 글은 본격적으로 Bootc를 실습하고 소개하기 전, 글쓴이인 제가 이 기술을 어떻게 알게되었고 어떻게 필요성을 느꼈는지에대해 간략하게 설명하는 시리즈의 서문입니다. 바로 실습이나, 개념설명 글부터 읽어도 무방합니다.
bootc(Bootable Container)는 컨테이너를 부팅 가능한 형태인 ISO로 만들어서, USB에 구운 뒤 실제 OS로 설치할 수 있다고 합니다… 뭔가 신기한데, 처음 부팅가능한 컨테이너를 대뜸 들으면, 그래서 뭐 이게 무슨 의미가 있나… 생각이 들진 않으신가요?
이제서야 저는 시간이 지나 조금은 이 기술이 와닿아서 글을 쓰게 되었지만, 사실 bootc를 처음 알게 된 건 작년 6월쯤이었습니다. ‘CloudClub’이라는 동아리에서 활동하던 중 지인인 지인의 추천으로 스터디로 잠깐 스쳐지나듯이 접했죠.
당시 스터디에서는, bootc는 일반적인 컨테이너처럼 Docker나 Podman 엔진 위에서 실행되는 것이 아니라, 컨테이너 이미지를 USB 등에 직접 구워서 선언적인 운영체제(OS) 그 자체로 사용할 수 있다! 이정도로만 이 기술을 이해했던 것 같습니다.
(선언적으로 OS를 관리한다는 관점에서 NixOS가 떠오르기도 하네요.)
하지만, 당시에 당시에는 인턴 생활로 워낙 바빴던 시기라 스터디에 집중하지 못하여 이 기술이 당장 제게 꼭 필요하다는 생각도 들지 않았고, 그저 흥미로운 기술 중 하나로만 느끼고, 실제 사용해볼 생각은 하지 않았습니다.
그 이유를 되돌아보면, 제가 처해 있던 환경과 이 기술을 소개해 준 지인의 환경이 많이 달랐기 때문이었던 것 같습니다.
지인은 엣지 디바이스를 굉장히 많이 다루는 로보틱스 영역에서 일하고 계셨는데, 수많은 디바이스에 동일한 환경을 배포하고 관리해야 하는 상황에서, bootc는 충분히 도입을 고려해볼 수 있었을 것입니다.
반면 저는 당시 그런 환경이 아니었기에 그 필요성 자체를 크게 체감하지 못했었습니다.
1. 추천해 준 지인은 엣지 디바이스(Edge Device)를 다루는 영역에 있었다
2. 엣지 환경에서는 원격 배포와 일관성이 핵심이므로 bootc를 충분히 고려 할만하다.
3. 반면 나는 당시 그런 환경이 아니었기에 필요성을 느끼지 못했다그런데 시간이 흘러, 현재 프리세일즈 엔지니어(Pre-sales Engineer)로 일하게 되면서 OS와 솔루션을 관리할 일이 많아졌습니다. 그때나 지금이나, 대규모 엣지 디바이스를 직접 다룰 일은 여전히 많지 않지만, 나름의 엣지 디바이스 도메인 으로서? 고객사 환경에 맞게 POC를 진행하다 보면, 굉장히 레거시한 OS와 솔루션들을 다뤄야 할 때가 종종 있습니다. 이 과정에서 OS 위에서 무거운 윈도우 서버와 솔루션들을 매번 올리고 내리는 과정이 상당히 번거로웠습니다.

물론 Ansible이나 Vagrant, Terraform 같은 프로비저닝 도구들이 굉장히 많지만, 도구의 업데이트를 기다리는 것도 번거롭고 진행 도중 네트워크 상황 등 다양한 환경 변수로 인해 발생하는 대기 시간과 트러블슈팅 과정을 견뎌야 한다는 단점이 있었습니다. 무엇보다 이러한 과정 자체가 너무나도 귀찮게 느껴졌습니다.
무엇보다 설정을 변경한 뒤 이전 상태로 되돌리려면 매번 스냅샷을 찍어야 하는데, 이는 용량 부담이 클 뿐만 아니라 여러 VM을 관리하다 보면 스냅샷이 섞여서 관리가 복잡해지는 문제가 있었습니다.

이러한 배경에서, 저의 페인 포인트(Pain Point)가 발생하게 되었습니다.
“아! 너무 비효율적이다! OS는 툭하면 다시 설치해야 하고(거기다가 윈도우), 솔루션은 수많은 종속성으로 얽혀있어 설치도 삭제도 쉽지 않은데, 컨테이너도 못 쓰고 너무 짜증 난다!”
그래서 생각했습니다.
그렇다면, 가벼운 OS 위에 KVM 기반으로 Windows 골든 이미지를 만들어, POC를 위한 환경을 구축하고 관리하면 어떨까?
바로 이 시점에서 예전에 스쳐 지나갔던 bootc 기술이 불연듯 떠올랐습니다. 시스템을 컨테이너 저장소로 관리한다면 스냅샷 방식에 비해 용량 부족 문제에서 자유롭고, 관리도 훨씬 간편해지지 않을까?
더 나아가, 개별 VM뿐만 아니라 호스트 OS까지 불변하게 관리할 수 있다면? 다양한 시스템에서 테스트 환경을 구성할 때 훨씬 효율적이지 않을까?
이 시점에서 bootc, 꽤 도입해 볼 만 한데..?
그러하여… 이 시리즈에서는 bootc를 소개도할겸, 개인적으로 정리도할겸, bootc 컨테이너 이미지를 만드는 방법부터 시작해서, 이를 만들며 발생하는 의문점들을 하나씩 해결하는 방식으로 내용을 구성하려고 합니다.
비록 부족한게 많겠지만… 함께 공부하는 의미에서, bootc의 세계를 탐구하러 가봅시다!
Let’s Bootc!
Summary
bootc를 도입했을 때 어떤 장점이 있을까요?
첫째, 뛰어난 포터빌리티(Portability)와 이식성입니다. 시스템을 컨테이너 이미지로 관리하면 어디서든 동일한 환경을 쉽게 배포할 수 있습니다.
둘째, 시스템의 불변성(Immutability)이 보장됩니다. 항상 동일한 상태를 유지할 수 있고, 문제가 생기면 이전 버전으로 간단히 롤백할 수 있습니다.
셋째, 개인적인 OS 환경을 구축할 수 있습니다. 개인용 OS로 계속 활용할 수 있다는 점도 매력적이었습니다.GitHub 계정으로 로그인하여 댓글을 남겨보세요. GitHub 로그인
댓글 시스템 설정이 필요합니다
GitHub Discussions 기반 댓글 시스템을 활성화하려면:
- Giscus 설정 페이지에서 설정 생성
- GISCUS_SETUP_GUIDE.md 파일의 안내를 따라 설정 완료
- Repository의 Discussions 기능 활성화
Repository 관리자만 설정할 수 있습니다.