A base do desenvolvimento de software sempre esteve associado à capacidade de armazenamento, processamento e memória, logo após veio o advento da internet e a rede passou a ser indispensável no planejamento de qualquer produto. Para conseguirmos ter esses elementos juntos é necessário realizar a compra de servidores e recursos de redes, montando assim uma infraestrutura muito grande, cara e pouco escalável, fazendo com que muitos projetos tornem-se onerosos antes mesmo do lançamento.
Uma das fases mais importantes no desenvolvimento de software é a implantação em produção, para quem tem experiência na área deve concordar que existe uma diferença muito grande entre os períodos de desenvolvimento e o período de homologação, é daí que vem a velha e conhecida frase entre os desenvolvedores: “Na minha máquina funciona, mas está quebrando em produção”.
Por ser delicada e complexa, a fase de implantação de software fez surgir um mercado promissor de alocação de recursos por demanda, onde empresas de grande porte investiram em plataformas para facilitar a alocação e fornecimento de recursos, fazendo com que o desenvolvedor possa focar nas regras de negócios sem se preocupar com alguns requisitos não funcionais da aplicação, como a escalabilidade (capacidade de expandir o software exponencialmente), backup, alta disponibilidade, autenticação, autorização e etc. Para isso foram desenvolvidos mecanismos de armazenamento de dados, alocação de recursos de memória e processador por demanda. O desenvolvedor que antes precisava alocar servidores exclusivos para a sua aplicação, hoje pode contratar os mesmos serviços por demanda de forma transparente, neste caso o mesmo não deve preocupar-se com as capacidades de hardware e recursos de rede.
Esse tipo de prática parece bem vantajoso para ambos, principalmente a curto prazo por diminuir o custo de início para os desenvolvedores e fazer um bom proveito dos recursos dos servidores. Porém pode trazer altos riscos de dependência de plataformas e provedores, tornando o projeto bastante oneroso a longo prazo, por isso é necessário uma análise prévia dos recursos disponíveis no mercado antes mesmo do início do desenvolvimento do software.
Para os leitores que já trabalham com desenvolvimento de software aqui vai uma dica muito clichê mas importante, antes de iniciar o desenvolvimento agrupe o software por serviços, definindo todas as interfaces de entrada e saída, então quebre em conjuntos dos que necessitarão apenas de processamento e rede ou armazenamento e rede, o próximo passo será tentar prever o quanto que cada serviço poderá expandir e o quanto irão utilizar de cada recurso. Dessa forma será possível definir se a abordagem “serverless” realmente se encaixa para o seu produto ou não.
Para os leitores que não são da área de TI mas que pretendem investir em projetos que envolva software precisam entender dos meios que irão compor o seu produto, por isso que é muito importante realizar a contratação de profissionais que saibam apresentar, explicar e embasar todas as escolhas feitas para desenvolver o seu produto.
Por Yrineu Rodrigues. Juazeirense, desenvolvedor de software. Atualmente morando em San Jose, CA
*Este texto é de inteira responsabilidade do autor e não reflete, necessariamente, a opinião do Revista Cariri