Não é novidade que eu sou um grande fã de Serveless, FaaS e do serviço da AWS, Lambda. Já felei sobre isso nesse post. Também não é novidade que eu sou um verdadeiro entusiasta das tecnologias que circundam o ecossistema dos containers e do Docker. Na verdade meu primeiro artigo aqui no blog foi exatamente sobre isso. O que eu talvez não tenha falado ainda é que é possível unir o que há de melhor dos dois mundos.
No final do ano de 2020, a AWS fez um anúncio de grande importância para o mundo da tecnologia: funções Lambda agora poderiam ser criadas a partir de imagens de container! As implicações disso são gigantes.
O jeito tradicional
Uma das grandes limitações do Lambda no passado dizia respeito a restrições sobre como as funções deveriam ser "subidas" para a AWS. O jeito tradicional de se fazer isso era comprimir o projeto em um arquivo zip que poderia ter, no máximo, 50 MB!
Além da restrição do tamanho, tinha-se também a restrição do runtime: a plataforma oferecia apenas algumas opções das linguagens mais populares - e se você precisasse usar qualquer aplicação ou recursos de terceiros dentro do SO você estava basicamente sem sorte.
Container Image Support
O que a AWS trouxe para o serviço foi a possibilidade de "empacotar" nossa função em uma imagem de container. Isso acaba com todas as restrições mencionadas anteriormente. É possível trazer para a função quaisquer serviços ou aplicações externos suportadas pelo SO e construí-la num ambiente sob o qual o desenvolvedor tem total controle.
Isso é simplesmente fantástico e revolucionário. Na verdade, quando eu pensei em como faria o deploy da API de gerenciamento de conteúdo desse Blog, não tive dúvidas de como iria fazer isso. Em resumo:
Lamba + Docker = ❤️