이번 포스팅은 WSL에 대한 이야기를 다루기 전에 필자의 개인적인 경험을 공유해보고 싶어 작성해 보았다. 본 포스팅에는 기술적인 이야기는 전혀 없고, 필자가 이 글을 기록하는 순간에 기억나는 것들을 중구난방으로 적어내다보니 객관성도 크게 결여되어 있을 거다. 그러니, 쓸데 없는 주저리는 빼고 기술 정보를 접하고자 하시는 분들은 바로 다음 페이지로 넘어가주시기를 바란다.
1편. WSL에 대한 이야기로 이동 : 2021년 4월 15일 기준 아직 퇴고가 안되어 링크 작동 안함필자의 이야기
WSL과 Docker 관련 글 연재에 앞서… 생활이 좀 널널해지나 싶어 개인 프로젝트로 뭔가 하려고 들면 업무가 늘어나는 신기한 인생의 반복됨 앞에… 이번엔 당당히 맞선 후 다시 내 이야기를 하리라 다짐하며, 내 쉬는 시간을 쪼개 퇴고를 완료했다. WSL과 Docker에 관련된 글들은 스크린샷 등 퇴고 작업이 완료되는 대로 업데이트할 예정이다.
필자는 학부 시절 동안 빨간-모자를 상징으로 하는 Redhat Linux의 광팬이었다.
그도 그럴것이 당시의 Microsoft와 Apple의 가격 정책은 너무 높아 학생의 입장에서 정품을 구입하기에는 너무 비쌌고, 요즈음처럼 ‘학생 할인’이나 ‘학생은 무료’ 같은 프로모션 마케팅도 존재하지 않았다. 학생 입장에서는 Windows Server나 OSX Server는 불법 해적판이 아닌 이상 학생 입장에서는 정품으로는 도저히 공부할 수가 없는 가격이었다. 그래서 필자는 Copy-Left, Open Source 진영을 열렬히 지지했었다.
당시 Redhat은 꽤 괜찮은 사용자 문서를 제공했고, 전 세계 개발자들의 참여를 독려했다. 필자도 그렇게 그들의 일원이 되어 Linux 진영, Open Source 진영에 참여했다. 그리고 얼마 지나지 않아 Linux에서도 GUI를 지원하겠다며 등장한 Ubuntu에 열광하며 “서버 = 리눅스가 진리”라고 굳게 믿었다. 당시에 쓰던 개인 PC에는 Multi-booting으로 게임용 OS인 Windows를 설치하고, 그와 더불어 개인용 OS인 Linux와 서버 공부용 Linux OS를 동시에 설치해 놓는 건 당시의 필자에겐 너무 당연한 선택이었다.
그리고 오랜 시간이 지나 알게된 사실이라면… 그 Windows Server나 OSX Server의 가격이 비싸다고 느끼는건 단지 필자가 학생이어서만은 아니었다는 거다. 수 많은 기업들에서 자신들의 서버를 Linux 계열의 OS로 채택하고 있었다. 무료였기 때문이다. Linux는 해킹에 취약하다는 단점들도 금새 멋진 기술들로 보완되었고, Linux 상에서 작동하는 수 많은 서버 관련 기술들이 생겨났다.
Microsoft와 Apple가 고수하는 Closed Market 정책으로 그들만 수익을 창출할 수 있는 구조를 깨야겠다고 생각하는 수 많은 Open Source 선구자들은 Linux를 어마어마하게 편리한 GUI를 제공하는 OS로 만들어 놓았다. 그 위대한 Open Source 선구자들에 꼽사리끼어 배움을 이어왔던 필자는 아직까지도 개인 서버를 만들어야 하는 상황이 되면 Ubuntu와 CentOS 정도를 고려하는거 같다.
필자의 신입 시절, 회사들은 상용 서비스에는 비싼 상용 Unix 서버를 사용하거나, 혹은 보안이 잘 되어 있는 서버를 Gateway로 설정하고 그 뒤에 Linux 서버들로 Cluster를 구성하는 방식으로 사용했었다. 게임 회사들은 Windows Server를 사용했지만, 그곳들에서도 회사 외부로 공개되지 않는 내부 서버들은 거의 Linux Server를 사용하고 있었다. 그래서 회사에서 막내 시절에는 당연히도 필자에게 수 많은 서버 관리 임무가 맡겨졌고, 그 때 선배님들로부터 배운 Linux의 config를 다루는 많은 기술들은 아직까지도 유용하게 실무에서 써 먹고 있다.
꽤 시간 시간이 지나 Windows7이 등장했고 필자는 더 이상 개인 PC에 Linux를 고려하지 않았다. Windows7의 UI/UX가 너무나도 사용자 친화적이고 훌륭하다고 생각했기 때문이다. 게다가 Windows를 쓰면서 제일 짜증이 났던 「블루스크린(Blue-Screen-of-Death)」이 줄어들기 시작했다. 또, 당시에는 Virtual Machine 기술이 훌륭히 발달하여 필요하면 Windows OS 위에서 Linux를 구동하면 되었다. 하지만 그때까지도 Windows라는 OS는 개인이 지불하기에는 만만치 않은 가격을 형성하고 있고, 그래서 엄청나게 많은 불법 Windows 7 파일이 성행했다. 사용자들에게도, 필자에게도 Windows 7은 참 잘만들어진 OS였다.
Windows 10의 등장과 과거 버전의 단종
(필자 역시 Windows Vista와 8은 사용했고 할 말이 많지만, 일단 논외로 하고…)
Windows10은 정말 잘만들었고 좋은 OS였다. 필자는 Windows10이 나오자 마자 그 값어치를 판단하고 갈아탔지만, 대부분의 사용자들은 그렇지 않았고 예전 버전들을 존중하며 버티고 있었다. Microsoft는 더 이상의 Windows 버전은 없을 것이며, 앞으로 Windows10을 계속 업그레이드하며 갈 것이라 했지만 사용자들은 움직이지 않았다.
어느날 Microsoft는 Windows 10의 사용을 강조하기 위해 사용자들에게 “빨리 과거 버전을 버리고 Windows 10으로 갈아타라”라는 신호를 보냈다. 그 당시 Windows는 거의 전 지구의 모두가 쓰고 있었으므로, 전 지구적인 신호를 보낸거다. 하지만 Windows Vista의 엉뚱한 UI/UX에 충격 받았던 사용자들은 Windows 7과 8에 남아있으려 했다. 그래서 Microsoft는 굉장히 초강수를 두게 되는데, 과거 버전의 Windows Update를 모두 중단할 것이며, Internet Explorer를 단종시켜 버리겠다고 선언한다.
사실 기업의 입장에선 굉장히 단순한 논리였다. 수 많은 버전의 Windows에서 지속적으로 나타나는 오류들을 패치하는 데 들어가는 비용이 너무 컸고, Windows 10 이전 버전의 Windows OS들에서 나타나는 블루스크린은 사용자들에겐 정말 고통스러운 일이었다. Windows 10에서는 하드웨어에 문제가 생기지 않은 이상은 블루스크린이 거의 나오지 않는데, 여기에는 정형기법(Formal Method)을 적용하여 하드웨어 드라이버의 문제로 블루스크린이 나올만한 범위를 거의 막았다는 기사를 본거 같다.
예전에 어느 외국 기술 잡지 기사에서 본거 같은데 지금은 검색해봐도 이런거 밖에 안나온다. 흠…
- https://www.microsoft.com/en-us/research/uploads/prod/2019/01/NUS2019.pdf
- https://www.microsoft.com/en-us/research/publication/slam-and-static-driver-verifier-technology-transfer-of-formal-methods-inside-microsoft/
(급작스런 깨달음 : 응? 뭘 말하려다 여기까지 왔지? 에고 다시 돌아가야지…)
Windows 10 WSL의 등장 + WSL2의 등장
2019년 Microsoft에서는 Windows 10에서 구동하는 Linux System에 대한 발표를 했다. 아마 이 즈음인 2018년 말, 2019년 초에 필자의 마음이 돌아서 Microsoft를 지지하도록 변한 시점인데도 불구하고 이렇게 생각했다. ‘윈도우에서 리눅스를 돌린다고? 그게 돌아가나?’ 당시 필자 주변 사람들과 많은 토론을 했는데, 필자만이 아니라 많은 사람들이 의아해하며 긴가민가 했던거 같다.
그리고 실체가 공개되었을 때 필자는 완전히 Microsoft의 열렬한 Fan이 되었다. Linux 서버에서 구동하는 Web Application을 코딩하기 위해 힘겹게 Virtual Machine을 설정해서 Linux 환경을 만들고, 소스 코드와 코드 관리 도구를 연동하는 작업을 할 필요가 없어졌기 때문이다. 솔직히 굉장히 긍정적으로 충격 먹었다.
- Microsoft 공식 문서 : Linux용 Windows 하위 시스템이란?
생각해보니 Microsoft-DOS나 Command Shell도 그냥 Unix 계열의 일부에서 나온거니 어찌보면 Architecture를 손보면 호환되는게 당연한 거였네 싶기도 했지만, 어쨌든 너무 놀라운 변화였다.
WSL로 만든 이미지는 언제든 생성/제거가 가능했기 때문에 따로 복잡한 구성을 거쳐야 하는 Virtual Machine을 설치할 필요가 없어졌다는게 가장 큰 장점인거 같다. 예를 들어, Ruby 같은 module dependency가 심한 언어의 경우, Windows에 설치하면 횐경이 너무 복잡해져서 나중엔 OS를 Format하게 되는 결과를 야기시키기 때문에 VM에 Linux를 올려 사용하곤 했는데, WSL에서 아주 가볍게 이미지를 만들고 Ruby의 Dependency 문제를 해결할 수 있었다.
또, Linux는 Windows의 File System인 NTFS를 지원하지 않았는데, WSL에서는 이를 속시원하게 mount 명령으로 지원해버렸다.
하지만, WSL에는 구조적인 한계가 있어 Docker와 같은 multi-container를 활용한 Kubernetes 운영에 한계점을 보였고, Microsoft는 이내 Architecture 구조를 개선한 WSL2를 발표하였다. 하지만 그 과정에서 NTFS의 mount 속도가 느려지는 한계점을 보이고는 있다. 그래서 필자는 WSL과 WSL2를 동시에 사용한다.
- Microsoft 공식 문서 : WSL 1과 WSL 2 비교
WSL이 어디까지 발전할 지 모르겠지만, 필자는 이미 팬이 되었으므로 개인적으로 다음 차기작을 기대해보고 있다.
사족 : 예전엔 적대적이었지만, 지금은 열렬히 지지하는 Microsoft
Open Source 진영에서 활동하던 지난 시절에는 Microsoft는 학생과 개발자들 상대로 기계적으로 돈 버는 회사라 생각했다. 솔직히 말해 필자는 Microsoft에 극단적으로 적대적이었다. 필자는 어린 마음에 Visual Studio Enterprise의 그 끔찍할 정도로 가공할 높은 가격을 보고, ASP 같은거는 월급 주니까 쓰는거지 절대 개인적으로는 안쓰리라고 다짐하며 이를 바득바득 갈았던 기억이 있다. 지금 생각하니 Microsoft도 회사이니 영업 이익 내려는건 당연한 거였는데, 당시엔 어린 혈기에 약간 정의감 같은게 있었나 싶다.
그런데 어느 순간부터 Microsoft는 OS 같은 주요 사업을 버리고 Cloud 사업을 벌리면서, 동시에 Git에서 수 많은 오픈소스 프로젝트에 기여하고 있다. 개발자 입장에서 Google과 더불어 Microsoft에서 인증한 프로그램들을 사용하니 개발 환경은 더할 나위 없이 풍족한 느낌을 받는다. 현재는 클라우드 사업에 주력하며, 유료로 돈을 받아야 할 서비스와 무료 오픈소스로 풀어야 할 서비스의 경계를 확실히 하고, 기술 간의 인터페이스를 절묘하게 제공하고 있는 Microsoft로 변모했다. 그에 더해 업계의 생태계에 기여하는 바가 매우 크다고 보고있어 현재 정책들을 필자는 두 팔 벌려 아주 크게 환영하며 지지한다.
지금 이 글을 작성하고 있는 도구인 Visual Studio Code도 아주 잘 이용하고 있고, 그에 더 해 Microsoft Learn에도 굉장히 감사한다. 그 외의 수 많은 Google 및 Apple integration 도구들과 Open Source 프로젝트들에 감사한다. 그래서 지금은 Microsoft 제품을 아주 감사한 마음으로 거리낌 없이 정품 구입하여 사용하고 있다.
이 모든게 「사티아 나라야나 나델라(Satya Narayana Nadella)」 회장이 취임하고 갑자기 벌어진 일들인데, 정말 대단히 넓은 안목을 가지신 훌륭하신 분이신거 같다. 좋은 경영진과 일하는건 엔지니어로서 축복이라 생각한다. (Microsoft 직원분들이 부럽다.)
※ 퇴고하며 남긴 메시지 : 2021년 4월 15일 기준, 이 글을 퇴고하며 글을 남긴다. JAVA 진영의 리더 중 한 명은 Announcing Preview of Microsoft Build of openJDK라는 글을 포스팅하며 Microsoft가 JAVA 생태계를 지원(?) 혹은 진입(?) 할 것임을 지구상의 JAVA 진영에 천명했다. 사티아 회장이 취임한 후로 Microsoft의 모든 행보가 마음에 드는 필자로서는 Microsoft의 JAVA로의 진입을 진심으로 감사하며 열렬히 환영한다.
참고 사항 : IE는 v11을 끝으로 공식 브라우저가 아니다.
꽤 많은 사람들이 2021년인 아직도 Windows10에서 Internet Explorer를 쓰고 있다.
Windows 10의 공식 웹브라우저는 Chrominium 기반으로 만들어진 Edge로 변경되었으며, (본인의 Windows 로그인 계정이 Microsoft 계정이라면) Edge에 본인의 Microsoft 계정을 연동해두면 여러가지 Microsoft의 서비스들을 로그인 없이 자유롭게 이용할 수 있다.
Windows10에서는 Internet Explorer 11이 추가로 제공되는 옵션으로 사용자가 선택하여 없애버릴 수 있다.
- 윈도우 시작 버튼 클릭 > control 이라고 입력 > 제어판이 나타나면 클릭
- 프로그램 제거 > Windows 기능 켜기/끄기 선택
- Internet Explorer 11 체크 해제