Neste artigo, não vou definir o que é serverless. Não vou nem falar sobre os benefícios econômicos e arquitetônicos do serverless sobre os quais todos já ouvimos falar — operações de infraestrutura reduzidas, escala instantânea orientada a eventos e custos baixos.
Em vez disso, quero defender por que o serverless é algo com o qual todos os desenvolvedores devem se preocupar, independentemente de seus chefes se importarem ou não com isso, AINDA.
Começando com uma história pessoal, claro…
Eu nunca fiz nenhum “desenvolvimento web”. As aspas duplas aqui não pretendem zombar do conceito, mas significar minha ignorância sobre o que isso significa. Eu não sabia a diferença entre um serviço, camada, Apache, IIS, ASP, JSP, JS, CSS ou outras siglas por muito tempo. Como desenvolvedor de software, escrevi aplicativos de desktop de criação de código C++ para Windows ou aplicativos de gerenciamento de servidor de criação de código C para Linux. Eu sempre pensei que é isso que os garotos legais deveriam fazer e todas as “coisas da web” eram para programadores inferiores.
Quanto mais eu ficava longe da web, mais enigmática ela se tornava para mim. Coisas como REST, JSON, WebAPI, etc., apareciam em cada segundo artigo da Internet. As pessoas que criam aplicativos móveis falavam em criar “back-ends de serviços da web” para seus aplicativos, o que me deixou confuso. Não ajudou que a próxima coisa mais quente da cidade - "a nuvem" - emprestou quase todas as suas características do "coisa da web". Se você queria construir aplicativos na “nuvem”, você tinha que entender muito bem as “coisas da web” ou se aprofundar em máquinas virtuais, contêineres e outras tecnologias relacionadas à virtualização. Eu evitei os dois por tempo suficiente para que eles adquirissem uma certa aura em minha mente até que consegui um emprego onde fui forçado a aprender tudo isso. AGRADECIDAMENTE!
Mas o que isso tem a ver com Serverless?
Grande quantidade.
Tenho certeza que apesar da enorme popularidade do “desenvolvimento web”, há um exército de desenvolvedores em todo o mundo que criam software para desktops, servidores, dispositivos embarcados, dispositivos móveis, etc. e nunca lidam muito com os aspectos “web” (assim como eu ). Muitos deles, sem dúvida, estão ansiosos com a “nuvem” e o que isso significa para eles - seja sobre ter habilidades empregáveis para o futuro ou descobrir como conectar/fazer a transição de seus aplicativos existentes para a nuvem (depois de ver os memorandos corporativos para esse efeito já).
Esses desenvolvedores podem se animar com o fato de que tudo o que precisam fazer para ter aplicativos em execução na “nuvem” é apenas escrever sua lógica de negócios. Antes do serverless, sua transição poderia significar aprender muitas tecnologias que eram todas de natureza logística, principalmente apenas fazendo o trabalho pesado indiferenciado. Com serverless, suas habilidades de programação são tudo de que precisam. Que programador não gosta da perspectiva de se concentrar apenas na programação?
No mundo dos desktops, construir pequenos aplicativos de console ou utilitários de linha de comando para testar uma teoria ou uma ideia é algo cotidiano. Na “nuvem”, no entanto, às vezes, o procedimento que acompanha a tentativa de prototipar uma ideia muito básica é cheio de vários pontos de atrito – configurações, setups, SDKs, integrações e assim por diante. Serverless reduz significativamente essa dor para os desenvolvedores, lidando com grande parte desse procedimento nos bastidores. Prototipagem fácil, experimentação rápida, aprender com os erros e girar com base nas lições são os princípios-chave do desenvolvimento de software moderno. Uma qualidade muito subestimada do serverless é sua capacidade de fornecer exatamente isso.
No início da minha carreira, a síndrome do garoto legal que mencionei anteriormente (aquela que me afastou das “coisas da web”) também me afastou do Visual Studio por muito tempo. Eu persisti com vim e gdb no Linux, mesmo quando todo o código em que trabalhei era código C/C++ de plataforma cruzada que poderia ser facilmente manipulado no Visual Studio no Windows. Tudo isso, só porque era legal criticar qualquer coisa que não fosse a linha de comando. Não quero iniciar um debate sobre esse assunto, mas basta dizer que pelo menos senti que perdi inúmeras horas de produtividade fazendo isso.
O ponto principal que estou tentando enfatizar aqui é que as tecnologias concorrentes, mesmo na nuvem, permitem que você faça coisas semelhantes. Existem vários cenários em que VMs, contêineres ou sem servidor fornecerão saídas semelhantes. No entanto, o serverless provavelmente será o único que otimiza a produtividade do desenvolvedor, oferecendo uma experiência focada na moeda do desenvolvedor — não em máquinas virtuais, contêineres, orquestradores ou instâncias, mas em CÓDIGO. O problema de lidar produtivamente com o código (mesmo o código destinado à nuvem) foi resolvido por IDEs de classe mundial, como o Visual Studio.
O serverless é uma panacéia? Não. Tem problemas? Claro. Todos nós já ouvimos falar de inicialização a frio, falta de estado, limites de duração, memória etc. Na maioria dos casos, não. Os benefícios de produtividade já superam esses problemas. Esses problemas são intransponíveis? De jeito nenhum. Os fornecedores de nuvem viram mérito e promessa suficientes nessa tecnologia para estarem suficientemente motivados para corrigir esses problemas em breve.
Em resumo, serverless apresenta uma ótima ferramenta que todos os desenvolvedores precisam ter em sua caixa de ferramentas.