O fim da era do localhost
(dx.tips)- No futuro, todo desenvolvimento acontecerá na "nuvem", e não no localhost, e o notebook será apenas um cliente
- Se fôssemos escrever uma wishlist dos desenvolvedores dos anos 2030:
- internet gigabit barata (5G/Mesh WiFi)
- máquina de desenvolvimento barata com bateria que dura vários dias
- os apps são compilados em poucos segundos, independentemente da escala, e os ambientes de teste e staging ficam ao vivo em tempo real assim que você digita
- o ambiente de desenvolvimento pessoal pode viajar comigo independentemente do dispositivo que eu use
- as dependências de ambiente do app (de certificados HTTPS a forks isolados em sandbox do banco de produção, tudo) são fornecidas imediatamente a qualquer membro da equipe que queira desenvolver uma funcionalidade, sem precisar de documentação nem de Runbook
- da ideia até entregar ao cliente em apenas uma semana (usando construtores low-code e Backends-as-a-Service)
- crescer de MVP a unicórnio em poucas semanas: usando serverless e plataformas como a "nova Heroku". Autenticação/pagamentos/DB/comunicação são tratados por SaaS de classe mundial
- A maior parte do que está acima exige rodar na "nuvem", e não no localhost
Se o navegador reduziu o sistema operacional a um "conjunto de drivers de dispositivo mal depurados",
a nuvem está reduzindo a máquina de desenvolvimento a um "conjunto de mocks de ambiente mal gerenciados"
"Future is Just Not Evenly Distributed"
- Grandes empresas que investiram para aumentar a produtividade dos desenvolvedores já estão trabalhando na nuvem
- Google Cider : IDE web do Google. Vem com o enorme sistema de arquivos Piper e integra code review/build/testing. Não é preciso baixar o código para a máquina local
- FB On-Demand : provisiona ambientes "On-Demand" para permitir preview de funcionalidades em tempo real com mais fidelidade do que no local. No FB, nem existe "desenvolvimento local"
- Etsy : todo desenvolvimento acontece em Cloud VM. "Como o VSCode funciona via SSH para a VM, nunca fiz checkout de código fora da VM"
- Tesla : migrou o desenvolvimento do OS dos carros do local para a nuvem (antes, ao que parece, fornecia desktops caros para build aos desenvolvedores)
- Palantir : mudou para Remote Ephemeral Workspace usando Coder (SaaS de ambiente de desenvolvimento remoto) e EKS
- Shopify : a maioria dos desenvolvedores migrou para um ambiente de desenvolvimento em nuvem chamado Spin (VM leve executada sobre xhyve)
- GitHub : migrou a maior parte do desenvolvimento do GitHub para o Codespaces
- Como são empresas grandes... vem a pergunta: "isso também serve para empresas pequenas?"
→ a resposta é "provavelmente sim, mas talvez não na forma atual"
→ a maior parte disso só foi possível porque exigiu um investimento interno considerável e aproveitou a infraestrutura interna já existente
→ mas, à medida que essas tecnologias forem sendo transformadas em produto e as semelhanças entre perfis de clientes forem sendo identificadas, isso vai se espalhar cada vez mais - A transformação de ambientes de preview em produto já aconteceu
→ a inovação inicial da Netlify foi possibilitar deploy para pré-visualizar projetos frontend
→ quase todos os sites de documentação agora usam algum tipo de sistema de Deploy Preview, e apps Jamstack também podem usá-lo no processo de release
Jobs to Be Done of Localhost
- O que acontece no desenvolvimento local agora está sob ataque
- editar e executar código remotamente : GitHub Codespaces, Replit, Code.com, CodeSandbax, GitPod
- executar em servidor remoto, mas editar o código localmente : VSCode + Azure VM/Amazon Workspace, Jetbrains Fleet, Okteto Sync
- editar e executar código em um container JS leve dentro do navegador : Stackblitz
- executar código remotamente : Bret.dev
- staging : Planetscale Branches, Stripe Test mode keys, Railway Ephemeral Environments, Okteto environments, Coherence workspaces
Pushback: It's Still Not Good Enough
- Ainda não é bom o suficiente, então não se empolgue ainda
- Para essa "morte do localhost" dar certo, o próprio provisionamento precisa deixar de ser necessário
- Isso varia de pessoa para pessoa, mas para mim até 10 segundos para iniciar o preview do código que escrevi já é tempo demais
- Leva 1 segundo para publicar um preview de frontend com Netlify Drop, mas o Netlify CLI leva 10 segundos
- Mesmo assim, ainda uso por hábito um ambiente de desenvolvimento em localhost: porque meu ciclo de iteração acontece em milissegundos
- Esse problema de latência é parecido com a forma como a lei de Moore se aplica à infraestrutura de nuvem
- Se agora ainda não é suficiente, volte a olhar daqui a 5 anos
10 comentários
Parece que o papel do laptop realmente se tornou o de um terminal + máquina para reuniões. Um Chromebook com base em ARM e bateria durando mais de 20 horas parece estar se tornando o laptop ideal.
Seria ótimo se fosse assim, mas a situação das empresas que adotaram a nuvem com ambientes virtuais hoje é que elas impõem aos desenvolvedores ambientes com especificações de 8 GB de memória e 4 CPUs (e, depois de muita insistência, no máximo 16 GB). A distância entre a realidade e o ideal é séria demais.
O GitPod também oferece suporte para editar no VSCode local. Quando você usa, é realmente seamless (tirando o fato de que a digitação no terminal tem um leve atraso e abrir as pastas é um pouco lento, a experiência praticamente não tem diferença).
Surpreende saber que até a Tencent está fazendo isso. https://zdnet.co.kr/view/?no=20220620003628
Será que a era das workstations está chegando...
Os tablets vão ganhar ainda mais destaque do que agora.
Estou migrando meus projetos pessoais, sempre que possível, para um desenvolvimento baseado em nuvem, mas parece que só a IDE tem limitações. Seria bom se a latência melhorasse, e também acho que precisamos de um ambiente onde seja possível usar livremente todas as ferramentas simples que usamos, ou então de alguma abordagem complementar. Seria realmente ótimo poder desenvolver de forma contínua com a mesma experiência em Windows, Mac, Linux e até em dispositivos de VR. Assim como acontece hoje com os jogos de Xbox, há vantagens no local e vantagens na nuvem, então é difícil buscar apenas um único caminho de imediato, mas naturalmente não vamos acabar indo todos para a nuvem?
Pessoalmente, considerando questões como latência, imagino que o caminho possa ser algo como o WebContainers: desenvolver levantando um ambiente full stack conteinerizado na máquina local e depois salvar e refletir o resultado na nuvem. Entre os exemplos citados no texto, haveria algo como o StackBlitz.
Em vez do fim do
localhost, eu vejo isso mais como o retorno do thin client...Começa pela conveniência e, mais tarde, imagino que acabe caminhando para uma questão de segurança...
Não é uma tradução completa, e sim um resumo, então vale a pena ver o texto original também.
Na parte do fim do texto que resume a reação das pessoas, foi dito que "no Reddit / HN todo mundo odeia que isso aconteça", mas...
Eu consigo imaginar isso perfeitamente como um futuro possível. Claro que, no caminho até lá, deve haver uma mistura de "edição de código local + execução em VM remota",
mas, se a nuvem conseguir garantir mais ou menos a latência no nível da edição de código local, acho que a maioria das empresas vai escolher isso.
Acho que é porque, eu incluso, no Reddit e no HN há muita gente que gosta de ter “meus dados no meu dispositivo”. Eu também não quero abrir mão do controle sobre meus dados, então acabo usando IDEs na nuvem só de vez em quando, quando vou escrever código de exemplo.