본문 바로가기
클라우드

[기술 심층분석] "도커(Docker)는 끝났다?"... 컨테이너를 집어삼킬 WebAssembly(Wasm)의 부상 ⚡

by gasbugs 2025. 12. 9.

안녕하세요! IT 기술의 최전선을 달리는 개발자 여러분. 🖐️

 

지난 10년간 우리의 인프라 환경을 지배해 온 단 하나의 단어를 꼽으라면, 주저 없이 '도커(Docker)''컨테이너'를 외칠 것입니다. "내 컴퓨터에서는 되는데?"라는 지긋지긋한 변명을 끝내준 구세주였으니까요.

 

그런데 최근, 이 견고한 도커 왕국을 위협하는 새로운 도전자가 나타났습니다. 바로 웹어셈블리(WebAssembly, 이하 Wasm)입니다. 심지어 도커의 창시자조차 이 기술을 보고 탄식했다고 하는데요.

 

"만약 2008년에 Wasm과 WASI가 있었다면, 우리는 도커를 만들 필요가 없었을 것이다."
- 솔로몬 하이크스 (Docker 공동 창업자)

 

도대체 Wasm이 뭐길래 컨테이너의 제왕이 이런 말을 했을까요? 오늘은 브라우저를 넘어 서버 사이드(Server-side)까지 침투하고 있는 Wasm의 잠재력과, 그것이 도커를 정말로 대체할 수 있을지 아주 상세하게 파헤쳐 보겠습니다. 🔍


1. WebAssembly(Wasm): 브라우저 탈출 넘버원 🏃‍♂️

원래 Wasm은 '웹 브라우저에서 고성능 프로그램을 돌리기 위해' 만들어졌습니다. 자바스크립트(JS)는 너무 느렸거든요. 그래서 C++, Rust 같은 언어로 짠 코드를 웹에서 네이티브급 속도로 돌릴 수 있게 만든 '이진 명령어 포맷(Binary Instruction Format)'이 Wasm입니다.

그런데 똑똑한 개발자들이 생각했습니다.

 

 

"어? 이거 브라우저 밖(서버)에서 돌려도 엄청 빠르고 안전하겠는데?"

 

 

여기서 등장한 개념이 WASI(WebAssembly System Interface)입니다. Wasm이 파일 시스템이나 네트워크 같은 OS 기능에 접근할 수 있게 해주는 표준 인터페이스죠. 이 순간, Wasm은 단순한 웹 기술을 넘어 '차세대 컴퓨팅 단위'로 진화했습니다.

 

2. 도커 vs Wasm: 체급 차이가 너무 난다 🥊

도커와 Wasm은 모두 '격리된 환경에서 코드를 실행한다'는 목표는 같지만, 그 방식은 천지 차이입니다. 왜 Wasm이 도커보다 우월하다고 하는 걸까요?

① 속도의 차원: 밀리초(ms) vs 초(s) ⏱️

  • Docker: 컨테이너를 띄우려면 리눅스 컨테이너 격리 기술(cgroups, namespaces)을 설정하고, 그 안에 미니 OS 파일 시스템을 로드해야 합니다. 아무리 빨라도 '초(Second)' 단위의 시간이 걸립니다 (Cold Start).
  • Wasm: OS를 띄우지 않습니다. 그냥 가상 머신(VM) 위에서 함수 하나 실행하는 것과 같습니다. '밀리초(Millisecond)' 단위로 켜집니다. 서버리스(Serverless) 환경에서 이 차이는 엄청납니다.

② 가벼움의 미학: 킬로바이트(KB) vs 메가바이트(MB) 🪶

  • Docker: 간단한 "Hello World"를 찍으려 해도, 베이스 이미지(Alpine Linux 등)가 필요해서 최소 수십 MB가 필요합니다.
  • Wasm: 필요한 비즈니스 로직(코드)만 컴파일합니다. 수십~수백 KB면 충분합니다. 네트워크 전송 속도와 스토리지 효율에서 비교가 안 됩니다.

③ 진정한 "Write Once, Run Anywhere" 🌍

  • Docker: "어디서든 실행된다"고 하지만 거짓말(?)이 섞여 있습니다. 맥북(M1/ARM)에서 빌드한 도커 이미지는 인텔(x86) 서버에서 안 돌아갑니다. 아키텍처별로 따로 빌드해야 하죠.
  • Wasm: 진짜입니다. 한 번 컴파일된 .wasm 파일은 윈도우, 리눅스, 맥, 라즈베리 파이 어디서든 똑같이 돌아갑니다. CPU 아키텍처에 독립적인 바이트코드이기 때문입니다.

3. 보안: "처음부터 아무것도 믿지 않는다" 🛡️

도커의 보안 모델은 '리눅스 커널 기능(Namespace)'에 의존합니다. 만약 컨테이너가 뚫리면, 해커가 호스트 OS의 커널까지 위협할 수 있는 구조적 위험이 있습니다(Root 권한 문제).

반면 Wasm은 태생이 샌드박스(Sandbox)입니다.

  • 기본적으로 '감옥'입니다: Wasm 모듈은 메모리의 특정 영역 외에는 아무것도 건드릴 수 없습니다.
  • 명시적 허용 (Capability-based Security): 파일 하나를 읽으려 해도 "이 폴더의 읽기 권한을 줄게"라고 명시적으로 허락하지 않으면 접근 자체가 불가능합니다. 보안 수준이 훨씬 높습니다.

4. 도커 창시자의 고백, 그 진의는? 🗣️

솔로몬 하이크스의 트윗은 도커의 패배 선언이 아닙니다. "기술의 진화 방향"을 인정한 것입니다.

 

"도커는 무겁다. 우리는 리눅스 컨테이너라는 거대한 짐을 지고 시작했다.
하지만 Wasm은 불필요한 OS 레벨의 짐을 다 버리고, 오직 '코드 실행'에만 집중했다."

 

 

즉, 서버리스(Serverless)와 엣지 컴퓨팅(Edge Computing)처럼 가볍고 빠른 실행이 중요한 미래 환경에서는 도커보다 Wasm이 훨씬 적합하다는 것을 인정한 셈입니다.

 

5. 그렇다면 도커는 죽는가? (미래 전망) 🔮

결론부터 말하면 "아니요, 하지만 역할이 바뀔 것입니다."

Wasm은 아직 완벽하지 않습니다. 멀티스레딩, 네트워크 소켓 지원, 디버깅 도구 등이 도커만큼 성숙하지 않았습니다. 당장 복잡한 엔터프라이즈 애플리케이션을 통째로 Wasm으로 바꾸긴 어렵습니다.

가장 유력한 미래는 '공존'입니다.

  • Docker의 포용: 이미 도커 데스크탑은 Wasm을 지원하기 시작했습니다. (docker run으로 .wasm 파일을 실행할 수 있습니다!)
  • 하이브리드 아키텍처: DB나 메시지 큐 같은 무거운 인프라는 컨테이너로 돌리고, 비즈니스 로직이나 가벼운 마이크로서비스는 Wasm으로 돌리는 형태가 될 것입니다.

 

📝 결론: 차세대 '클라우드 네이티브'의 핵심

Wasm은 단순한 유행이 아닙니다. 쿠버네티스(Kubernetes) 생태계도 이미 Wasm을 1등 시민으로 받아들이고 있습니다.

지금 당장 도커를 버릴 필요는 없지만, "컨테이너보다 더 작은 컨테이너"인 Wasm이 다가오고 있다는 사실은 반드시 기억해야 합니다. 특히 서버리스나 엣지 컴퓨팅에 관심이 있다면, 지금 바로 Rust나 Go로 Wasm을 찍어보는 연습을 시작해보세요!

이 작은 기술이 여러분의 서버 비용을 90% 줄여줄지도 모르니까요. 💸🚀