Windows Subsystem for Linux

Esse é o nome da recém lançada feature do Windows que permite executarmos pacotes e binários nativos do Linux em um ambiente Windows.

A Microsoft está investindo pesado em Open Source e na interoperabilidade. As novidades surgem a cada dia, como o ASP.NET Core, já rodando em Linux e Mac OS, o SQL Server, já demonstrado em execução no Linux, e muito mais. A Microsoft está determinada a oferecer, muito de sua plataforma para desenvolvedores para execução no Linux. Ela tem muito a ganhar com essa estratégia, e nós também temos muito a ganhar com essa mudança de direção.

Entendendo o WSL

O WSL, acrônimo para Windows Subsystem for Linux, é uma feature que está em desenvolvimento pela Microsoft em parceria com a Canonical (desenvolvedora do Ubuntu) capaz de executar binários Linux, no Windows. Essa camada opera imediatamente antes do Kernel do Windows, intermediando syscalls que binários linux fariam ao Kernel do Linux para realizar traduções e transformações necessárias para que o Kernel do Windows efetivamente execute a tarefa equivalente, esperada.

Na prática, um binário Linux, não precisa de modificações, ele é compilado com suas dependências para o Kernel do Linux, no entanto no Windows, o Kernel do Linux é representado pelo WSL, uma espécie de wrapper e proxy para o Kernel do Windows. A imagem abaixo apresenta de forma simplista como funciona essa nova camada.

160330WSSL_lg

A figura abaixo mostra com maior riqueza de detalhes os componentes envolvidos no WSL.

image

Note que nesse ponto, temos um Session Manager Service e um Linux Instance no diagrama. Segundo um dos vídeos que assisti, ainda não está previsto para o desenvolvimento, rodar outra versão que não o Ubuntu, e não uma só versão deste no WSL, no entanto, dada a arquitetura, seria possível, caso houvesse interesse estratégico, ter instâncias independentes do Linux rodando side-by-side, semelhante ao que temos no Docker.

Entendendo o Fluxo de Desenvolvimento da Microsoft para o WSL

Pesquisei um pouco e assisti a alguns vídeos no Channel9 e encontrei um material super interessante que explica como a Microsoft está conduzindo a estratégia de desenvolvimento do Windows Subsystem for Linux. Como o Kernel do Linux é grande e levaria alguns anos até a conclusão de 100% do mapeamento, e levando em considerações a evolução do próprio Kernel do Linux, a Microsoft precisou priorizar o desenvolvimento de cada tradução de feature/funcionalidade do Kernel. A escolha seguiu alguns critérios interessantes:

  • Métricas de consumo
  • Solicitações da comunidade

#especulação

Com instrumentação no Azure, é possível dimensionar facilmente o consumo de features do Kernel do Linux. Ela poderia facilmente usar seus Agents, que estão presentes nos setups Linux do Azure, para oferecer algum tipo de informação de um grupo específico de máquinas, que poderia ser um grupo de beta testers ou empresas parceiras, ou subir máquinas dedicadas para obtenção dessas métricas.

Benefícios

Com o WSL os ports para Windows são cada vez mais desnecessários, isso economiza muito no desenvolvimento. Em alguns casos os ports não conseguem ficar bons pela ausência de funcionalidades, como no caso do Redis que precisa da instrução Fork, exclusividade dos sistemas baseados em Unix. Isso significa que você poderá usar Redis do Linux no Windows, Memcached (que nunca foi portado), e muito mais, rodando lado-a-lado com sua aplicação. Isso é excelente para testar e desenvolver aplicações que dependem de serviços que só estão disponíveis para Linux. Ao mesmo tempo, os ports para Windows começam a diminuir, e ficam desnecessários, já que em produção, em muitos casos já são desaconselhados.

A estratégia vislumbra um cenário em que você desenvolva com Windows para fazer deploy no Linux. Essa realidade é possível para muitos serviços e tecnologias. Com o WSL seja você um desenvolvedor de pacotes para Linux ou um desenvolvedor Microsoft que quer usar produtos que rodam melhor em Linux, você poderá desenvolver direto no Windows. Claro que vale a pena ficar de olho nas limitações do WSL para ver se o que você precisa já está implementado ou performando bem para um ambiente de desenvolvimento, mas em geral, com o WSL será muito fluida a adoção de desenvolvedores que hoje estão direto no Linux. Para quem é do mundo Microsoft, conhecer mais sobre Linux é algo que já começa a se tornar necessário, e o WSL poderá te ajudar você com seus primeiros passos.

Windows Subsystem for Linux em Produção

NÃO! 

O Windows Subsystem for Linux não foi destinado para ambientes de produção, e talvez a Microsoft amanhã nunca tenha essa ambição. Fato, é que desde o primeiro anúncio há ressalvas garrafais que sinalizam que não há interesse no WSL para ambientes de produção, a expectativa é trazer o desenvolvimento para Linux, algo possível de ser feito dentro do Windows e sua transição ser suave e indolor.

Limitações

Um dos principais pontos que deve estar claro na cabeça de quem se empolga com a idéia do WSL é que ele é limitado. O principal limitador está na extensão das features do kernel do Linux. Nunca teremos uma tradução 100%. Sempre estaremos algumas versões atrás, isso em um cenário hipotético perfeito. Hoje temos uma escolha e priorização de syscalls a serem implementadas, portanto estamos longe de ter 100% de uma versão do Kernel recente totalmente mapeada. Não ficou claro, pelo menor para mim, quantos anos levariam para chegar a esse esse resultado.

O WSL não trabalha com ambiente visual, portanto estamos falando apenas sobre softwares que são executados em Linux Servers, sem GUI.

Em um dos vídeos vi questionamentos sobre os aspectos de performance de IO como um problema, no entanto em um post recente intitulado WSL File System Support, aparentemente esse problema parece ter sido sanado.

A Microsoft e sua proximidade com o Linux

Se você não encara essa proximidade e essa nova estratégia que aproxima a Microsoft e o desenvolvimento Microsoft do Linux, em breve farei um post dedicado a esse tema. De antemão, posso assegurar que é uma das melhores decisões para o mercado, pois propõem uma cooperação de forma a extrairmos o que cada um tem de melhor: Interface gráfica no Windows, com robustez do Linux. Assim, desenvolveremos no Windows e faremos deploy no Linux, cada vez mais.

UPDATE 03/07/2016 – Scott Hanselman apresenta o WSL com o Ubuntu no Linux

Uma das primeiras features do WSL em parceria com a Canonical é trazer o Ubuntu para ser executado sob o Windows, com o WSL. Scott Hanselman apresenta nesse vídeo de 20 minutos:

  • Instalando o Windows Subsystem for Linux
  • Instalando Bash on Ubuntu no Windows
  • Update e Upgrade no Ununtu no Windows
  • Instalação de pacotes
  • Compilação de um Hello World em C no Ubuntu no Windows

Quer saber mais?

Tem ainda muito mais material e gostaria de compartilhar uma lista de links muito úteis sobre WSL:

  1. FAQ do WSL | Aqui perguntas e respostas, escolhidas com muito carinho, são excelentes e ajudam muito no entendimento.
  2. Windows Subsystem for Linux @ Microsoft Blogs | Blog oficial do Windows Subsystem for Linux.
  3. Windows Subsystem for Linux: Architectural Overview | Vídeo de 21 minutos, que apresenta um overview da arquitetura, é um dos vídeos que melhor explica o WSL.
  4. Channel 9 | Conteúdo do Channel 9 sobre WSL.
  5. Instalação | Eu ainda não tive o prazer de rodar o WSL, mas se você quer sair na frente e testar, siga esse tutorial, ele promete habilitar para você a o bash e consigo o WSL.

Comente o post, mande um email, esse é um dos assuntos que chamam muito a minha atenção!

Enquanto isso, se gostou, compartilhe!

Grande abraço!

 

UPDATE 29/06/2017 – Scott Hanselman apresenta Editing code and files on Windows Subsystem for Linux on Windows 10

 

Comente, compartilhe, curta!

Logo abaixo desse texto você encontra os Posts Relacionados, e botões de compartilhamento, em seguida a sessão de comentários!

Gostou? Então aproveite para curtir, compartilhar e enviar comentários, dúvidas ou sugestões.

Conheça o Grupo Arquitetura de Softwate | .NET: Facebook e Telegram
Luiz Carlos Faria: Site, Youtube, Facebook, Twitter, Telegram, Linkedin e Email