윈도우즈가 참 잘 한 일: WSL

Mac을 처음 접했을 때 가장 맘에 들었던 것이 UI 말고도 terminal이었다. terminal은 사실 그냥 bash를 하나 여는 것이었는데, unix 명령을 그대로 쓸 수 있으니까 GUI도 쓰면서 unix (BSD가 맞다)의 훌륭한 command line 명령어도 쓸 수 있어서였다. 당시 윈도우는 cmd를 실행하는 게 전부였다. 유닉스를 쓰고 싶다면 remote machine에 terminal을 이용해서 접속해야 된다. 그 당시엔 docker도 없었기 때문에 잘해봐야 mingw나 cygwin 같은 것을 쓰는 방법이 있는데, 이 아이들은 뭐랄까 native linux와는 좀 달라서 중요한 지점에서 꼭 막히곤 했던 기억이 있다. 물론 대단한 작업이라고 할 수 있다.

WSL에 와서는 정말로 윈도우즈가 docker를 품은 형상이 되어버렸는데, docker보다 빠르고 요긴하게 쓸 수 있다는 장점이 있다. 더구나 그 안에서 docker를 쓸 수 있어서 구태여 docker desktop을 설치할 필요도 없다. 어차피 docker라는 게 linux 안에서 다른 배포판의 linux를 쓰려고 할 때 진가를 발휘하는 것이니까 말이다.

초기에는 여러가지 한계가 있었고 지금도 뭔가 좀 석연치 않게 돌아가는 부분이 있긴 하지만 이 정도만해도 정말로 훌륭하다고 할 수 있다. 사실 Mac에서 Xcode를 써야 할 일이 없고 Logic/FinalCut을 써야 할 때가 아니면 MacOS로 부팅하는 일도 별로 없다. 오히려 Mac에서 Docker를 부르면 MacOS위에서 hypervisor.framework이라는 가상머신을 굴려야 되니까 답답하게 돌아가는 구석이 있다. x86위에서 또 다른 x86을 가상머신으로 돌린다는 자체가 말이 안되지 않나?

이런 면에서 보면 WSL이 오히려 나은 측면이 있다. 물론 애플이 힘을 좀 써줘서 WSL 같은 아이를 하나 만들어주면 좋을텐데 하는 생각이 있다. 이번에 애플이 M1이라는 자체 칩을 내면서 많은 사람들이 가상머신 지원과 docker에 대해서 궁금해하고 있다. 1주일 후면 M1이 박힌 제품들이 정식으로 출시되는데 그때가 되면 많은 것을 알게 되겠지 한다.

아무리 가격이 좋고 성능이 좋다고 하더라도 사람들의 요구 사항이 매우 다양해졌고 특히나 가상머신과 관련된 성능/Docker 지원 여부는 상당히 중요한 문제가 되었다. 내가 WSL를 맘에 들어하는 또 한가지 이유가 바로 그것이다. Windows가 AMD 프로세서를 지원하기 때문에 WSL도 AMD 프로세서 위에서 잘 돌아가고 마찬가지로 그 위에서 돌아가는 docker로 깔끔하게 돌아간다.

일단 MacOS는 AMD CPU를 지원하지 않을 뿐더러 (그래도 해킨을 할 수 있지만), 아무리 날고 기더라도 Hypervisor.framework을 쓸 수 없기 때문에 Docker와 다른 가상머신들을 쓸 수 없다. qemu 가상 머신 가속기능을 켜면 돌아가지 않는다. AMD로 PC를 새로 맞출 때만 해도 MacOS로 모든 일을 하게끔 해야지 하는 게 사실상 Docker와 Windows 가상머신을 쓸 수 없다는 것에서 좌절되었다.

WSL을 쓴 뒤로는 Linux로 부팅하게 되지 않는다. 부팅하더라도 Linux 위에서 할 수 있는 일들은 많지만 MacOS에서처럼 어쩔 수 없이 Parallels와 Docker를 써야 하는 경우가 아닌 이상엔 Linux 위에서 qemu를 불러서 쓰는 것도 그닥 매력이 없어서 그냥 멀티 붓을 하는 것에 익숙해지게 되었다.

그러나 여전히 할 수 있는 일의 scope은 MacOS가 더 넓다. 그래서 Docker와 Parallels를 쓰게 되는 것이다. 이게 다 갖춰지면 사실 windows로든 Linux로든 갈 일이 없다. 게임을 하지 않는다는 전제하에.

이번에 M1으로 Mac의 main CPU가 전환이 되어버린 상황에서 MacOS의 장점은 많이 반감되는 경향이 있다. 그 위에서 docker와 x86 application을 실행하면 효율이란 게 많이 떨어질 수 밖에 없기 때문이다. 기술적인 CPU의 성능은 사실상 사람들에게 그다지 어필되는 게 없다. 예전에 쓰던 소프트웨어를 빨리 돌릴 수 있어야 어필이 된다. 그런데 M1으로 오면서 M1 native하게 빌드된 앱이 아니면 실행 자체가 불가능하게 되고 가상머신을 써야만 된다면 여기서 모든 매력은 반감되는 것이다.

물론 대기업 제품들은 M1이 나오기 전에 이미 어느 정도 수준을 갖춘 상태에서 출시가 되겠지만, platform을 넘나들며 작업해야 하는 입장에선 가상머신 지원 문제 때문에 매력이 없어지는 것이다.

그렇게 놓고 보면 정말 신기한 노릇이다. Linux만 해도 지원하는 H/W가 워낙 많다보니 machine indepedent한 게 아닐까 생각하게 되지만, 실제로 대부분의 사람들이 사용하고 있는 것은 Linux running on x86인 것이다. 당장 AMD가 x86의 본가인 인텔 제품들을 크게 능가해버린 상황에서 Apple과 AMD의 CPU가 PC 시장을 끌고 가게 되는 것인가? 하는 생각을 하게 된다.