Ao discutir o inĂcio de um novo projeto ou o desenvolvimento de um roteiro para um projeto existente, as opçÔes de como executar cargas de trabalho nunca foram tĂŁo extensas. Vivemos em uma era estragada por uma variedade de plataformas - vocĂȘ pode escolher entre ferramentas de cĂłdigo aberto, serviços pagos, produtos corporativos e um monte de outras coisas. Por causa disso, tornou-se mais difĂcil tomar uma decisĂŁo de escolha - as chances de obter "paralisia de escolha" aumentam com o aumento das opçÔes. Em tais circunstĂąncias, Ă© justo fazer a pergunta: os contĂȘineres ainda sĂŁo uma escolha razoĂĄvel agora e no futuro, ou jĂĄ os superamos? Para responder a essa pergunta, vocĂȘ precisa considerar alternativas e comparĂĄ-las aos contĂȘineres.
Sem servidor
A prĂłxima etapa lĂłgica apĂłs os contĂȘineres sĂŁo as soluçÔes sem servidor. Serviços como AWS Lambda e Google Cloud Functions facilitam a operação de aplicativos sem servidor, especialmente aqueles que sĂŁo orientados a eventos por natureza. Quando vocĂȘ considera a simplicidade de trabalhar com estruturas de aplicativos como Serverless Framework, obtemos um fluxo de trabalho simples e orientado para o desenvolvedor que permite ir da ideia Ă produção em um tempo muito curto. Esse fluxo de trabalho pode ser Ăłtimo para criar protĂłtipos de APIs ou desenvolver rapidamente novos recursos para produtos existentes. Um dos maiores pontos fortes da arquitetura sem servidor (especialmente ao executar aplicativos em um provedor de nuvem pĂșblica como a AWS) Ă© que vocĂȘ sĂł paga por recursos de computação usados ââativamente;ou seja, vocĂȘ nĂŁo paga por um sistema simples. A longo prazo, isso pode fornecer economias de custo significativas em comparação com a arquitetura "sempre ativa", mas apenas sob certas condiçÔes. HĂĄ um limite apĂłs o qual o custo de execução de um aplicativo em um ambiente sem servidor torna-se mais alto e o desempenho Ă© menor em comparação com o mesmo aplicativo em execução em uma VM dedicada, em que vocĂȘ nĂŁo paga para chamar o aplicativo, mas pela taxa horĂĄria. Vamos comparar sem servidor com contĂȘineres:onde vocĂȘ paga nĂŁo para ligar para o aplicativo, mas a taxa horĂĄria. Vamos comparar sem servidor com contĂȘineres:onde vocĂȘ paga nĂŁo para ligar para o aplicativo, mas a taxa horĂĄria. Vamos comparar sem servidor com contĂȘineres:
:
- ( )
:
- ,
- ,
Platform-As-A-Service (PaaS)
Semelhante ao serverless, mas tem seus prĂłprios recursos exclusivos de Platform-as-A-Service (PaaS), como Heroku e CloudFoundry. Normalmente, o PaaS difere do sem servidor por ser projetado para serviços "sempre em execução", em vez dos orientados a eventos, mas Ă© semelhante a eles no sentido de que, da mesma forma que o sem servidor, fornece fluxos de trabalho convenientes para os desenvolvedores. Internamente, a maioria dessas soluçÔes realmente executa seu cĂłdigo em contĂȘineres, mas a maioria deles Ă© abstraĂda do usuĂĄrio, portanto, muitas vezes sĂŁo posicionados como "buildpacks" - contĂȘineres prontos com determinados recursos ou pacotes dependentes de idioma instalados neles. Ă essa abstração que torna os produtos PaaS convenientes - todos os aspectos problemĂĄticos da execução de um aplicativo em produção sĂŁo abstraĂdos do usuĂĄrio.No entanto, essa tambĂ©m pode ser uma das desvantagens da PaaS: pode ser difĂcil liberar aplicativos de plataformas PaaS e movĂȘ-los para outra plataforma, se necessĂĄrio. AlĂ©m disso, em algumas plataformas nĂŁo completamente maduras, a integração nativa com serviços externos (bancos de dados, caches, filas, etc.) pode ser limitada ou totalmente ausente, o que limita significativamente as opçÔes de arquitetura. AlĂ©m disso, a abstração e a facilidade de uso tĂȘm um preço: as plataformas PaaS tendem a ser mais caras do que IaaS do tipo faça vocĂȘ mesmo, como AWS ou GCP.caches, filas, etc.) podem ser limitados ou totalmente ausentes, o que limita significativamente as opçÔes de arquitetura. AlĂ©m disso, a abstração e a facilidade de uso tĂȘm um preço: as plataformas PaaS tendem a ser mais caras do que IaaS autĂŽnomo, como AWS ou GCP.caches, filas, etc.) podem ser limitados ou totalmente ausentes, o que limita significativamente as opçÔes de arquitetura. AlĂ©m disso, a abstração e a facilidade de uso tĂȘm um preço: as plataformas PaaS tendem a ser mais caras do que IaaS do tipo faça vocĂȘ mesmo, como AWS ou GCP.
:
:
No-Code
As soluçÔes sem cĂłdigo estĂŁo se tornando mais populares como um meio de fazer uma startup crescer rapidamente, especialmente entre organizadores nĂŁo tĂ©cnicos. A capacidade de criar uma plataforma web inteira sem ter que aprender cĂłdigo Ă© atraente e, para quem nĂŁo sabe codificar, Ă© atĂ© necessĂĄria. As soluçÔes modernas sem cĂłdigo confundem os limites da interseção de processos de negĂłcios e software; A lĂłgica de negĂłcios que antes levava semanas para ser desenvolvida agora pode ser criada em minutos ou horas na plataforma sem cĂłdigo. Novamente, isso pode ser um tremendo sucesso para pessoas ou grupos nĂŁo tĂ©cnicos, mas essa abordagem geralmente se aplica ao desenvolvimento de software? Paradigmicamente, as soluçÔes sem cĂłdigo sĂŁo semelhantes Ă s sem servidor em que ambos os conceitos funcionam em um modelo de gerenciamento baseado em eventos,no entanto, as soluçÔes sem cĂłdigo tĂȘm uma grande falha que as outras plataformas de nossa lista nĂŁo tĂȘm: excessivamente vinculadas ao fornecedor da solução. No momento, nĂŁo tenho conhecimento de nenhuma plataforma que permita a transferĂȘncia de um aplicativo sem cĂłdigo de uma plataforma para outra. Se vocĂȘ decidir escrever seu aplicativo bĂĄsico no Microsoft Power Automate ou no Zoho Creator, ficarĂĄ lĂĄ atĂ© reescrevĂȘ-lo em outra coisa.
:
- ,
:
EntĂŁo, onde estĂŁo os contĂȘineres entre todas essas tecnologias? Tendo a pensar nos contĂȘineres como blocos de construção fundamentais da arquitetura, como pequenas partes de um aplicativo que nĂŁo faz sentido separar. Independentemente de vocĂȘ estar executando microsserviços ou um monĂłlito inteiro dentro de contĂȘineres, o contĂȘiner deve ser a menor quantidade de cĂłdigo que pode ser implantada enquanto mantĂ©m sua funcionalidade. No nĂvel mais simples, os contĂȘineres sĂŁo apenas um subconjunto da funcionalidade do kernel. Recursos como isolamento de recursos, limitação de rede e outros semelhantes, que fazem parte do sistema operacional Linux, foram reprojetados para tornĂĄ-los mais fĂĄceis de usar. Ă perfeitamente possĂvel iniciar um processo e gerenciĂĄ-lo usando cgroups, redes virtuais, iptables e outras funçÔes que imitam o contĂȘiner Docker, no entanto, tais aplicativos,como o Docker e o Podman tornam esses recursos fĂĄceis de usar para que vocĂȘ nĂŁo precise fazer tudo manualmente. Ă esse uso de funçÔes do kernel que fornece portabilidade aos contĂȘineres. Se vocĂȘ tiver uma mĂĄquina Linux com um kernel bastante moderno, poderĂĄ executar quase qualquer contĂȘiner sem problemas. No entanto, essa simplicidade tem um preço, e o custo Ă© a complexidade da operação. Para implantar a produção, nĂŁo Ă© suficiente apenas implantar um contĂȘiner em uma VM vazia. Para uma implementação "correta", vocĂȘ precisa de algum tipo de gerenciamento de contĂȘiner que aumente a complexidade e os custos operacionais. No entanto, apesar do aumento da complexidade, os contĂȘineres compensam com sua flexibilidade e portabilidade.Ă esse uso de funçÔes do kernel que fornece portabilidade aos contĂȘineres. Se vocĂȘ tiver uma mĂĄquina Linux com um kernel bastante moderno, poderĂĄ executar quase qualquer contĂȘiner sem problemas. No entanto, essa simplicidade tem um preço, e o custo Ă© a complexidade da operação. Para implantar a produção, nĂŁo Ă© suficiente apenas implantar um contĂȘiner em uma VM vazia. Para uma implementação "correta", vocĂȘ precisa de algum tipo de gerenciamento de contĂȘiner que aumente a complexidade e os custos operacionais. No entanto, apesar do aumento da complexidade, os contĂȘineres compensam com sua flexibilidade e portabilidade.Ă esse uso de funçÔes do kernel que fornece portabilidade aos contĂȘineres. Se vocĂȘ tiver uma mĂĄquina Linux com um kernel bastante moderno, poderĂĄ executar quase qualquer contĂȘiner sem problemas. No entanto, essa simplicidade tem um preço, e o custo Ă© a complexidade da operação. Para implantar a produção, nĂŁo Ă© suficiente apenas implantar um contĂȘiner em uma VM vazia. Para uma implementação "correta", vocĂȘ precisa de algum tipo de gerenciamento de contĂȘiner que aumente a complexidade e os custos operacionais. No entanto, apesar do aumento da complexidade, os contĂȘineres compensam com sua flexibilidade e portabilidade.e esse preço Ă© a complexidade da operação. Para implantar a produção, nĂŁo Ă© suficiente apenas implantar um contĂȘiner em uma VM vazia. Para uma implementação "correta", vocĂȘ precisa de algum tipo de gerenciamento de contĂȘiner que aumente a complexidade e os custos operacionais. No entanto, apesar do aumento da complexidade, os contĂȘineres compensam com sua flexibilidade e portabilidade.e esse preço Ă© a complexidade da operação. Para implantar a produção, nĂŁo Ă© suficiente apenas implantar um contĂȘiner em uma VM vazia. Para uma implementação "correta", vocĂȘ precisa de algum tipo de gerenciamento de contĂȘiner que aumente a complexidade e os custos operacionais. No entanto, apesar do aumento da complexidade, os contĂȘineres compensam com sua flexibilidade e portabilidade.
PrĂłs:
- Flexibilidade, portabilidade
- A arquitetura sempre ativa permite diferentes tipos de paradigmas
- Facilidade de teste e desenvolvimento local
Desvantagens:
- A produção requer gerenciamento de contĂȘineres
- O uso de computação no modo "sempre ligado" pode custar mais do que sem servidor, mas depende da carga
- Mais trabalho necessårio para se preparar para a produção
ConclusĂŁo
Embora sua escolha pessoal possa depender muito da aplicação e da carga de trabalho, minha conclusĂŁo Ă© muito simples: os contĂȘineres ainda sĂŁo muito relevantes e continuarĂŁo sendo por muito tempo. Apesar do aumento da complexidade, sua portabilidade e nĂvel de controle permitem que os engenheiros façam exatamente o que desejam, sem ter que fazer a engenharia reversa de uma solução baseada em algo como o Heroku.
Usando nossos servidores em nuvem, vocĂȘ pode implantar seus contĂȘineres Docker perfeitamente. Este Ă© apenas um dos milhĂ”es de desafios que vocĂȘ pode realizar com MacLeod !
Cadastre-se pelo link acima ou clicando no banner e ganhe 10% de desconto no primeiro mĂȘs de aluguel de um servidor de qualquer configuração!