Dos Mainframes até Serverless: Como o Mundo da Computação Mudou
Relembre como a computação evoluiu dos antigos mainframes até as tecnologias Serverless e mudou o jeito de trabalhar e pensar sobre TI.
Quando escutei falar sobre Serverless pela primeira vez, por volta de 2018, eu pensei algo que imagino que muitas pessoas pensam até hoje:
“Mais uma dessas modinhas que não resolvem problema nenhum”.
Cheguei a pesquisar um pouco mais sobre o assunto nessa época mas não me interessei de imediato e por isso, não me aprofundei.
Preferi aguardar um tempo para ver se esse “hype” iria se tornar uma tendência real.
Pois bem...
Estamos em 2023 e atualmente as principais plataformas de Cloud Computing (AWS, Google Cloud e Microsoft Azure) oferecem diversos serviços considerados Serverless.
Diversas empresas ao redor do mundo começaram a utilizar Serverless para desenvolver, implantar e operar novas aplicações nativas em nuvem.
E Serverless não causa mais tanto desconforto em times de Tecnologia pois já é muito comum ver a sua adoção mesmo que seja de maneira tímida.
Sem dúvidas, Serverless não é um hype e sim uma tendência.
E é por esse motivo que neste ano de 2023 tomei a decisão de aprender mais sobre esse assunto e, é claro, compartilhar minha jornada com vocês através de uma série de conteúdos sobre Serverless aqui na EdukTI.
Neste primeiro artigo, contarei uma breve história sobre Serverless para te ajudar a entender como a forma de desenvolver e executar aplicações evoluiu ao longo do tempo, dos Mainframes até este modelo computacional.
🦖 Mainframes: o começo de tudo
O capítulo 1 da computação empresarial é dominado pelos famosos mainframes.
É provável que você já tenha escutado falar e conhece alguém que já tenha trabalhado com mainframes.
Um mainframe é um computador de grande porte que dominou a área de tecnologia da informação em grandes empresas nas décadas de 50 e 60.
Esses “dinossauros” da computação eram dedicados para processamento em lote (volume gigante de informações) e basicamente funcionavam da seguinte forma:
Os desenvolvedores:
Inseriam as instruções (programas) em um cartão perfurado.
Entregavam os cartões para a equipe de operações.
Faziam outras coisas enquanto aguardavam o resultado do processamento.
Os operadores:
Agendavam e executavam os cartões perfurados previamente enviados.
Coletavam e entregavam a saída que era gerada/impressa para os desenvolvedores que solicitaram o processamento (e às vezes até enviavam por correspondência!!)
Nessa época, o processo para desenvolver softwares era, além de muito demorado, extremamente caro e, consequentemente, restrito a poucas empresas.
Portanto, caso você trabalhe diretamente com desenvolvimento de software, pense bem quando você achar que o seu trabalho de hoje é difícil, mesmo tendo acesso praticamente gratuito a:
IDEs com interfaces gráficas para desenvolver software;
Apoio de ferramentas de inteligência artificial como GitHub Copilot e recentemente o ChatGPT;
Fóruns como StackOverflow
O próprio Google
E vídeos no YouTube.
🖥️ PC: a era dos servidores físicos
Em seguida veio a era do PC, que também é conhecida como a era da democratização da tecnologia na forma do computador pessoal e que perdura até hoje.
Nessa era, o modelo de processamento mudou de sistemas centralizados baseados em mainframe para o modelo baseado em cliente-servidor.
Neste passado não muito distante, os times de tecnologia precisavam de servidores físicos para implantar e executar as suas aplicações e isso exigia um imenso trabalho de cálculo (leia-se adivinhação) da quantidade de recursos necessários para suportar as aplicações que iriam rodar no servidor, já prevendo um hipotético crescimento em uso.
O processo de compra até a entrega e instalação do servidor físico era muito custoso e demorado, geralmente levando meses até a conclusão.
Por este motivo, era muito comum dimensionar um servidor com bastante folga de recursos.
Após a chegada dos servidores físicos, as pessoas responsáveis por prepará-los para operação eram os Administradores de Sistemas que resumidamente:
Instalavam o sistema operacional, os pacotes e dependências necessárias para executar a aplicação.
Implantavam a aplicação requisitada.
Validavam constantemente se haviam recursos suficientes de hardware (processador, disco e memória) para manter a aplicação no ar e sem lentidão conforme o seu volume de uso.
Nessa época, as aplicações eram implementadas diretamente no servidor físico.
🪄 Virtualização: o servidor virou software
Logo após, a Virtualização de Servidores se tornou popular.
De maneira simplória, uma máquina virtual é um software que emula um servidor físico.
A Virtualização de Servidores trouxe uma enormidade de benefícios comparados ao formato de implantação anterior. Destaco aqui dois deles:
Consolidação de Servidores: a Virtualização possibilitou a hospedagem de diferentes servidores virtuais, com diferentes sistemas operacionais em um único servidor físico.
Separação do Software e Hardware: caso acontecesse uma falha de hardware em um servidor físico, as máquinas virtuais em execução neste servidor poderiam ser movidas para outro servidor físico, sem interromper a sua execução.
Com a Virtualização, a implementação das aplicações passou a ser feita nas máquinas virtuais.
🌥️ Computação em Nuvem: o servidor virou serviço
A "nuvem" veio a seguir, por volta dos anos 2000, iniciando um novo paradigma na computação.
Nesse modelo, o provedor de nuvem é o responsável pela infraestrutura física que executa todos os serviços oferecidos na nuvem e a responsabilidade do cliente é determinada pelos serviços de nuvem utilizados por ele.
O primeiro modelo de uso ofertado foi o IaaS que significa Infrastructure as a Service ou Infraestrutura como Serviço.
Serviços como Amazon EC2, Google Compute Engine e Azure Virtual Machines fazem parte desse modelo computacional, pois exigem que o cliente execute todas as atividades necessárias de configuração e implantação do software.
Neste modelo a implementação das aplicações continua sendo feita em máquinas virtuais, mas com a diferença que você não precisa se preocupar com os servidores físicos, rede, armazenamento e outras coisas ligadas à operação da infraestrutura de um Data center.
Também passou a ser muito mais fácil aumentar a quantidade de recursos computacionais dos seus servidores e aplicações (leia-se escalar), pois você pode facilmente alterar a configuração de servidores existentes ou implantar novos servidores virtuais praticamente em tempo real.
⛴️ Containers: automação e colaboração para implantar aplicações
Enquanto as plataformas de nuvem cresciam, os Containers também se tornaram populares, sendo o Docker, lançado em 20 de março de 2013, a principal ferramenta para execução de aplicações neste formato.
Resumidamente, essa é uma maneira mais eficiente de fazer virtualização, pois permite que um administrador de sistema tenha diferentes aplicações em execução no mesmo sistema operacional (que pode estar em execução em um servidor virtual ou físico) sem que elas interfiram entre si.
Os containers também possibilitam reproduzir um ambiente de desenvolvimento muito fiel ao ambiente de produção, porém, localmente nas estações dos desenvolvedores, o que torna mais consistente a implementação entre diferentes ambientes (ex: desenvolvimento, testes e produção).
Estes são os principais motivos que fizeram com que os Containers ganhassem popularidade.
✨ Serverless: cadê o servidor? Sumiu!
Este excelente texto sobre Arquiteturas Serverless no blog do Martin Fowler aborda tudo o que você precisa saber sobre as origens deste termo.
Destaco os seguintes trechos:
O termo “sem servidor” é confuso, pois com esses aplicativos, o hardware do servidor e os processos do servidor estão sendo executados em algum lugar.
A diferença em comparação com as abordagens típicas é que a organização que cria e oferece suporte a um aplicativo 'sem servidor' não está cuidando desse hardware ou desses processos. Em vez disso, eles estão terceirizando essa responsabilidade para outra pessoa.
O termo se tornou mais popular em 2015, após o lançamento do AWS Lambda em 2014, e cresceu ainda mais em popularidade após o lançamento do API Gateway da Amazon em julho de 2015.
Em meados de 2016, Serverless tornou-se um nome dominante para esta área, dando lugar ao nascimento da série Serverless Conference e vários fornecedores Serverless adotando o termo em tudo, desde marketing de produto até descrições de trabalho.
Serverless como um termo veio para ficar.
Usando serviços Serverless como AWS Lambda e API Gateway, os times de tecnologia começaram a:
Executar código em resposta a eventos;
Delegar para o provedor de nuvem o papel de gerenciar automaticamente os recursos de computação necessários para executar o código da aplicação.
E as empresas passaram a pagar apenas por:
requisições atendidas;
tempo de computação necessário para executar o código.
Em cada um dos paradigmas que antecedem Serverless, existe o conceito de “onde” o software está sendo executado, seja em um servidor físico local ou em uma VM em um provedor de nuvem.
Serverless, por outro lado, alcança outro nível de abstração: o próprio código.
Com esse novo nível de abstração, não precisamos nos preocupar tanto com “onde” nosso código está hospedado.
Conclusão
Neste primeiro artigo, relembramos o passado da computação, falando um pouco sobre o trabalho dos nossos antecessores e sobre como a implementação de software evoluiu ao longo do tempo, até chegar a Serverless, que representa um passo significativo no mundo de desenvolvimento e implantação de aplicações.
Ao remover a necessidade de gerenciamento de servidor, Serverless permite que os times de tecnologia se concentrem em escrever e implantar código, em vez de se preocupar tanto com a infraestrutura.
Isso não apenas melhora a eficiência e reduz os custos, mas também abre novas possibilidades de inovação e escalabilidade.
Além disso, a crescente adoção da computação em nuvem e a crescente demanda por recursos de computação sob demanda e pagos por uso alimentaram ainda mais a popularidade do Serverless.
Todos esses fatores indicam que o Serverless não é apenas uma tendência passageira, mas uma solução de longo prazo que veio para ficar.
No próximo artigo desta série, falarei sobre Serverless no presente: o que de fato é, como você pode utilizar, as principais vantagens e desvantagens e muito mais.
E claro, não esqueça de deixar seu comentário abaixo dizendo o que você achou desse conteúdo.