Localhost 시대의 종말
(dx.tips)- 미래에는 모든 개발은 로컬호스트가 아닌 '클라우드'에서 진행되고 노트북은 클라이언트에 불과할 것
- 2030년대의 개발자 위시리스트를 적어보면
- 저렴한 기가빗 인터넷(5G/Mesh WiFi)
- 몇일 가는 배터리를 가진 저렴한 개발머신
- 앱은 규모에 상관없이 몇초만에 빌드되고, 테스트와 스테이징 환경이 키입력하자 마자 바로 실시간 라이브됨
- 개인 개발환경은 어떤 기기를 쓰는가와 상관없이 나랑 같이 여행가능
- 앱의 환경적인 종속성(HTTPS 인증서부터 프로덕션DB의 샌드박스된 포크까지 모든 것들)은 기능을 개발하고자 하는 모든 팀원에게 즉시 제공됨. 문서도 Runbook도 필요 없이
- 아이디어부터 고객에게 제공되기 까지 일주일 만에 가능 (로우코드 빌더와 Backends-as-a-Service 를 사용해서)
- MVP에서 유니콘까지 몇주만에 성장 가능 : 서버리스 및 '새로운 Heroku'같은 플랫폼들을 이용. 인증/결제/DB/커뮤니케이션들은 월드클래스 SaaS를 통해서 처리
- 위의 것들은 대부분 로컬호스트가 아닌 "클라우드"에서 실행하는 것을 필요로 함
브라우저가 운영체제를 "잘 디버깅되지 않는 디바이스 드라이버의 집합"으로 축소시켰다면
클라우드는 개발머신을 "잘 관리되지 않는 모의 환경(Environment Mocks)의 집합"으로 축소시키고 있음
"Future is Just Not Evenly Distributed"
- 개발자 생산성을 높이기 위해 투자한 큰 회사들은 이미 클라우드에서 일하고 있음
- Google Cider : 구글의 웹 IDE. 거대한 Piper 파일 시스템을 탑재하고 코드리뷰/빌드/테스팅을 통합. 로컬머신에 코드를 내려받을 필요 없음
- FB On-Demand : 로컬보다 더 충실하게 실시간 기능 프리뷰가 가능하게 "On-Demand"로 환경을 프로비저닝. FB에선 "로컬 개발" 자체가 없음
- Etsy : 모든 개발이 Cloud VM에서 진행 "VSCode가 VM으로 SSH해서 동작하기 때문에, VM 외부로 코드를 체크아웃 해본 적이 없음"
- Tesla : 자동차 OS 개발을 로컬에서 클라우드로 전환 (그 전엔 개발자에게 빌드용 비싼 데스크탑을 제공했었다고)
- Palantir : Coder(리모트 개발환경 SaaS)와 EKS를 사용하는 Remote Ephemeral Workspace로 옮겨감
- Shopify : 대부분의 개발자가 Spin 이라 불리는 클라우드 개발환경으로 이전 (xhyve 위에서 실행되는 경량 VM)
- GitHub : 깃헙의 개발의 대부분을 Codespaces로 이관
- 얘네는 큰 회사니까.. "작은 회사에도 적합할까?" 라는 질문이 따라옴
→ 답변은 "아마 가능하겠지만, 그러나 아마도 현재의 형태로는 아닐 수도 있음"
→ 이런 대부분은 상당한 내부 투자가 필요하고, 기존의 내부 인프라를 활용했기때문에 가능
→ 하지만 이런 기술이 상품화 되고, 고객군 간의 공통점이 발견되면서 점점 더 많이 확산 될 것 - Preview 환경을 상품화 하는 것은 이미 만들어졌음
→ Netlify의 초기 혁신은 프론트엔드 프로젝트를 미리보기 할수있도록 디플로이 가능하게 만든 것
→ 거의 모든 문서 사이트들은 이제 일종의 Deploy Preview 시스템을 사용하며, Jamstack 앱은 릴리즈 프로세스에도 사용 가능
Jobs to Be Done of Localhost
- 로컬 개발시에 일어나는 일들은 이제 공격을 받고 있음
- 원격에서 코드를 수정하고 실행 : GitHub Codespaces, Replit, Code.com, CodeSandbax, GitPod
- 원격서버에서 실행하지만 로컬에서 코드를 수정 : VSCode + Azure VM/Amazon Workspace, Jetbrains Fleet, Okteto Sync
- 브라우저내의 경량 JS Container에서 코드를 수정하고 실행 : Stackblitz
- 코드를 원격 실행 : Bret.dev
- 스테이징 : Planetscale Branches, Stripe Test mode keys, Railway Ephemeral Environments, Okteto environments, Coherence workspaces
Pushback: It's Still Not Good Enough
- 충분히 좋지는 않으므로, 아직 흥분하지 말것
- 이 "로컬호스트를 죽이는 것"이 성공하려면 프로비저닝 자체가 필요없어져야 함
- 사람마다 다르겠지만, 나는 작성한 코드의 Preview를 시작하는데 10초가 걸리는 것도 너무 길다고 느낌
- Netlify Drop 으로 프론트엔드 프리뷰를 배포하는데는 1초가 걸리지만, Netlify CLI는 10초가 걸림
- 하지만 아직 습관적으로 로컬호스트 개발환경을 사용중 : 내 반복주기가 밀리세컨드 단위 이기 때문에
- 이 레이턴시 문제는 무어의 법칙이 클라우드 인프라에 적용되는 것과 비슷
- 지금 충분하지 않다면, 5년 후에 다시 한번 볼 것
랩탑의 역할은 정말 터미널 + 회의용 머신이 된것 같습니다. ARM기반의 밧데리 20시간 이상 가는 크롬북이 이상적인 랩탑이 되어가고 있는것 같습니다.
이렇게만 된다면 너무 좋겠지만, 지금 가상 환경 클라우드 도입한 회사들 상황은 개발자에게 8GB memory, 4 cpu 사양의 환경을 강제하고 있죠(사정 사정 하면 겨우 16GB). 현실과 이상의 괴리가 너무 심각하죠.
GitPod에서는 로컬 VSCode에서 편집하는 것도 지원합니다. 써보면 정말 seamless 합니다 (터미널 타이핑이 약간 밀리고, 폴더를 펼칠 때 약간 굼뜬 정도 빼고는 경험이 차이가 없어요)
텐센트도 한다는데 놀랍습니다. https://zdnet.co.kr/view/?no=20220620003628
워크스테이션의 시대가 오는 걸까요...
개인적인 프로젝트는 가능하면 클라우드 기반에서 개발하도록 옮기고 있지만 IDE 만으로는 한계가 있는 것 같아요. 레이턴시도 개선되면 좋을 것 같고 사용하는 간편 도구들도 모두 자유롭게 쓸 수 있는 환경이 필요하거나 어떤 보완적인 접근법이 필요할 것 같아요. 윈도우즈, 맥, 리눅스, VR 기기 안 가리고 같은 개발 경험으로 지속적으로 개발 할 수 있다면 정말 좋을 것 같아요. 마치 현재 엑스박스 게임같이 로컬의 장점, 클라우드의 장점이 있어서 바로 한가지 방법을 추구하기 힘든데 당연히 클라우드로 모두 가지 않을까요.
개인적으로는 레이턴시 문제 등을 고려하면 WebContainers처럼 로컬 머신에서 컨테이너화된 풀스택 환경을 띄워서 개발하고, 그 결과물을 클라우드에 저장 및 반영하는 그런 방향이 되지 않을까 생각해 봅니다. 본문에 나온 것 중에서는 StackBlitz 같은 것이 있겠네요.
localhost의 종말이라고기 보다는 thin client의 재림...이라고 봅니다.
편의성으로 시작해서, 나중엔 보안때문에...로 흘러가지 않을까 싶네요.
전체 번역은 아니고 요약을 한것이니 원문도 보시기 바랍니다.
글 말미에 사람들의 반응 정리 부분에서, "Reddit / HN 에선 모두가 이렇게 되는 것을 싫어한다" 라고 했는데..
저는 충분히 가능한 미래라고 상상이 됩니다. 물론 가는 과정중에는 "로컬 코드 편집 + 리모트 VM에서 실행" 이 섞여 가겠지만
클라우드에서 로컬 코드 편집 수준의 레이턴시가 어느 정도 보장만 된다면, 대부분의 회사가 이걸 선택할 것 같아요.
저도 그렇지만 Reddit과 HN에서는 '내 기기에 내 데이터' 를 사랑하시는 분들이 많아서 그런 것 같아요. 저도 제 데이터에 대한 통제권을 놓고 싶지 않아서 클라우드 IDE는 예제 코드 짤 때만 간간히 쓰게 되더라고요.