3 principais dicas para o seu próximo projeto sem servidor

Gavin Lewis Blocked Desbloquear Seguir Seguindo 9 de janeiro

Eu amo arquiteturas sem servidor! Se você não leu meu artigo anterior sobre a nuvem, não há mais apenas sobre servidores , ele fornece uma grande visão do meu histórico trabalhando com servidores e por que você deve considerar o uso de arquiteturas sem servidor em seus aplicativos modernos.

Nos últimos meses, conversei com vários desenvolvedores de diferentes empresas com produtos relativamente estabelecidos e uma tendência comum é mover esses aplicativos de monolito para microsserviços – na verdade, a Atlassian acabou de concluir seu projeto de três anos fazendo algo semelhante com o JIRA e Confluência. Muitas vezes há várias razões para desmembramento de monólitos, como lidar com a complexidade do aplicativo, reduzir o raio de falhas e permitir que cada microsserviço seja desenvolvido usando a melhor tecnologia disponível para a tarefa e não limitada ao que já está em uso. O Nginx tem uma ótima introdução ao artigo de microsserviços, que vale a pena ler para dar uma ideia do que as arquiteturas de microsserviço podem ajudá-lo a alcançar.

As arquiteturas sem servidor são bem adequadas para microsserviços acionados por eventos e vêm com o benefício de serem escaláveis e altamente disponíveis imediatamente, embora para muitos desenvolvedores isso exija se afastar da zona de conforto de fazer tudo no IDE – é um pensamento assustador! Aqui estão as minhas 3 principais dicas a considerar antes de começar seu próximo (ou primeiro) projeto sem servidor para garantir que seja um sucesso:

1. O planejamento é importante

Como todos os projetos, é muito fácil começar a escrever código sem se sentar e pensar nos resultados. Dê um passo para trás por um momento e planeje quais problemas você está tentando resolver, não apenas de uma perspectiva técnica, mas da perspectiva de seus usuários-alvo. O método da Amazon de retroceder do cliente é uma abordagem que você pode usar no estágio de planejamento.

Depois de saber o que você quer alcançar, você pode passar para o aspecto técnico. Mapeie ideias em papel, crie wireframes, crie fluxogramas, use post it notes – todas são ótimas maneiras de começar a visualizar como seu aplicativo pode funcionar. Como parte do estágio de planejamento, pense em como você pode dividir o aplicativo geral em aplicativos menores e interconectados. Crie uma prova simples de conceitos ou protótipos para ver o que funciona e o que não funciona. Lembre-se, falhe rápido, falhe facilmente e tente novamente!

2. Use uma estrutura

Ao trabalhar na AWS, acho que usar o console é uma ótima maneira de criar protótipos e aprender como os vários serviços funcionam. Passado o estágio de protótipo ou prova de conceito, os aplicativos sem servidor exigem que a automação seja bem-sucedida. Você não pode confiar em etapas manuais, processos e listas de verificação para implementações consistentes e repetíveis – não apenas entre desenvolvimento e produção, mas também para cada desenvolvedor e testador trabalhando em seu projeto. Para resolver esse problema, use uma estrutura para modelar todos os aspectos do seu ambiente – adoro usar a estrutura sem servidor e o CloudFormation , embora haja muitas ferramentas e estruturas disponíveis que funcionam de maneira semelhante.

Para ajudar a dar o pontapé inicial em qualquer projeto, tenho trabalhado na criação de alguns modelos e snippets sem servidor que podem ser usados como um acesso para qualquer projeto. Os modelos e snippets ajudam a dividir os recursos principais de um projeto, como autenticação e APIs, e, em seguida, cada "serviço" que existe como parte do aplicativo geral. Parte disso remonta ao estágio de planejamento de saber como quebrar seu projeto, esses modelos vão ajudar!

3. Automação, automação, automação!

Automação é a chave para aplicativos sem servidor. Você quer automatizar tudo, desde a criação de seus recursos, testes automatizados e integração contínua e pipelines de entrega. Sempre que possível, você deve escrever tudo em código, não apenas lógica de negócios, mas também esquemas de banco de dados e pipelines de implantação, além de usar estruturas que podem ajudar nisso. CI / CD não é a coisa mais fácil de conseguir com arquiteturas sem servidor, mas à medida que amadurece, mais e mais conjuntos de ferramentas estão se tornando disponíveis. Atualmente, usamos o TeamCity internamente, mas temos feito experiências com o CodeBuild e CodeDeploy da AWS usando o Docker para criar e implantar nossos aplicativos sem servidor.

O outro componente da automação bem-sucedida é uma estratégia de repositório GIT bem estruturada. Existem várias maneiras de fazer isso, como ramificações de recursos / bug / hotfix ou sinalizadores de recursos – encontre o que funciona para você ou talvez até mesmo uma combinação. A principal recomendação que eu faria é garantir que qualquer método que você escolha, você deve sempre ser capaz de implementar uma correção urgente para viver sem ter que trazer código inacabado!

Tentar encaixar os processos de automação em um ambiente ao vivo existente é incrivelmente difícil, geralmente envolve voltar atrás e mudar a maneira como diferentes serviços foram criados (muitas vezes manualmente) e pode causar problemas aos usuários finais se não forem cuidadosos. Uma ótima maneira de conseguir isso é limitar quem tem acesso para fazer alterações em seus ambientes de produção – apenas permita que seus conjuntos de ferramentas façam alterações e não desenvolvedores!

Texto original em inglês.