Os Níveis de Abstração: Uma Viagem do Hardware à Engenharia de Plataforma!
O mundo em constante evolução sempre foi a busca da abstração constante em camadas… Durante muito tempo a matemática, física, e química vieram facilitar nossas vidas de forma a nos deixar cada vez mais confortáveis e satisfeitos (, e sedentários :D).
Em cada nova geração tecnológica, perseguimos incansavelmente aprimoramentos, automações e reduções de esforço para simplificar nosso cotidiano. Este desejo contínuo de abstrair e simplificar processos resultou em múltiplas camadas de abstração. Como consequência, muitos hoje não nunca viram um “servidor”, “placa mãe” ou “crimparam um cabo RJ45”
Essa abstração começou em 1947, onde a invenção do transistor pela Bell Labs marcou o início de uma revolução na eletrônica, abrindo caminho para a miniaturização e criação dos primeiros circuitos integrados. Durante a década de 1970 e 1980, esta inovação estabeleceu as bases para o desenvolvimento de CPUs, onde inicialmente predominavam as arquiteturas CISC, como a do Intel 8080. No final dos anos 1980, à medida que a demanda por processamento aumentava, surgiram arquiteturas RISC, exemplificadas pelo MIPS e, posteriormente, na década de 1990, pelo ARM, que dominou o cenário de dispositivos móveis.
Na década de 1970, ocorreu uma revolução no mundo dos PCs, onde a programação direta nas placas, ou até mesmo em cartões perfurados já não eram muito fáceis digamos. E a ideia apareceu com o Xerox Alto, criado em 1973 no Xerox PARC, que foi o pioneiro ao introduzir uma interface gráfica (a primeira camada de abstração visual, sem que o usuário entenda o que está acontecendo nos registradores de seus processadores). Embora a Xerox não tenha capitalizado totalmente sobre essa inovação, empresas como Apple e Microsoft, durante os anos 1980, perceberam seu potencial e a adaptaram para seus sistemas.
Na década de 1990, o cenário de sistemas operacionais foi sacudido pela chegada do Linux, uma alternativa aberta e gratuita ao Unix. Este movimento em direção ao código aberto coincidiu e o crescimento de comunidades massivas em busca de uma anarquia coletiva tecnologica que gerava e gera tecnologia em prol do bem das próprias comunidades.
Até ali vimos que a abstração do hardware já era uma coisa corriqueira, onde nós humanos começávamos a utilizar o computador como uma extensão do nosso corpo, fazendo cálculos, e tarefas repetitivas e muitos de nós nem sabiamos o que estava acontecendo por trás daquele Sistema Operacional.
Mas ai chegaram os anos 2000, onde o bixo pega! A virada do milênio testemunhou um avanço significativo chamado virtualização. A ideia principal era otimizar a utilização de recursos físicos ao permitir que várias “máquinas virtuais” funcionassem simultaneamente em um único servidor físico. Cada máquina virtual imitava um sistema operacional completo, funcionando como se fosse um computador independente. A VMware, fundada em 1998, liderou este movimento, introduzindo soluções que transformaram data centers e permitiram uma utilização mais eficiente do hardware.
A virtualização também pavimentou o caminho para melhorias em recuperação de desastres, migrações e balanceamento de carga. Além disso, trouxe flexibilidade para os administradores de sistemas, pois podiam criar, deletar, migrar e modificar máquinas virtuais de acordo com as necessidades sem alterar o hardware subjacente. Outras empresas, como a Microsoft com o Hyper-V e a Citrix com o XenServer, também entraram no mercado de virtualização, enriquecendo o ecossistema e proporcionando mais opções para as organizações.
No paralelo começamos a ouvir sobre a tecnologia de containers, liderada pelo Docker, que focava em isolar ambientes de software. No final dos anos 2000, o gerenciamento desses containers foi revolucionado pelo Kubernetes, uma ferramenta desenvolvida originalmente pelo Google, que permitiu uma automação e escalabilidade sem precedentes.
Depois de quase 6 anos chega a AWS, enquanto a virtualização estava remodelando os data centers, um novo paradigma estava prestes a emergir: a computação em nuvem. Em 2006, a Amazon Web Services (AWS) lançou o Elastic Compute Cloud (EC2), um serviço que permitia aos usuários alugar recursos de computação virtualizados. Esta inovação representou uma camada de abstração, permitindo que as empresas não precisassem mais investir e manter seu próprio hardware.
À medida que a computação em nuvem evoluía, tornava-se evidente que a tendência era mover-se para níveis ainda mais altos de abstração. Isso se materializou na forma do Serverless Computing. Aqui, a abstração não era apenas sobre os recursos de computação, mas também sobre a infraestrutura de servidor subjacente. Em vez de alugar servidores ou instâncias, os desenvolvedores poderiam simplesmente fornecer seu código, e os provedores de nuvem, como a AWS com sua oferta Lambda, se encarregariam de executá-lo conforme necessário. Esta abordagem representou um novo nível de abstração, onde as nuances do gerenciamento do servidor foram ocultadas, permitindo que os desenvolvedores se concentrassem apenas no código.
A beleza da computação em nuvem e seus níveis crescentes de abstração foi que democratizou o acesso à tecnologia. De startups a grandes corporações, todas puderam escalar suas operações sem grandes investimentos iniciais em infraestrutura, pagando apenas pelo que usavam.
Agora o que estamos falando é de mais uma camada de abstração, onde vc cria plataformas que abstraem a infraestrutura do desenvolvedor! Exato vc cria um portal do desenvolvedor onde ele apenas cria seu código e através de pipelines ele realiza seu deploy e não sabe se está rodando em container, FaaS, ou em uma máquina virtual. Ele apenas sabe que está rodando em algum lugar que pode ser On-Premises, ou em algum Cloud Provider…
O Futuro da Abstração: Hoje, estamos testemunhando ainda mais abstrações. As plataformas estão removendo a necessidade de os desenvolvedores se preocuparem com infraestrutura. Com o advento da Inteligência Artificial e Machine Learning, a próxima fronteira de abstração pode estar na automação completa de tarefas de desenvolvimento e operações, criando sistemas que se auto-otimizam e se adaptam com base nas necessidades dos usuários.
Depois disso qual seria a próxima geração de abstração?
Referências:
- [Bell Labs e o Transistor](https://www.britannica.com/technology/transistor)
- 2. [Comparação entre RISC e CISC](https://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/)
- 3. [Funcionamento da EPROM](https://computer.howstuffworks.com/eprom.htm)
- 4. [IBM Mainframes](https://www.ibm.com/ibm/history/ibm100/us/en/icons/system360/)
- 5. [Xerox e a Interface Gráfica](https://www.computerhistory.org/revolution/input-output/14/348)
- 6. [Origens do Linux](https://www.gnu.org/gnu/linux-and-gnu.en.html)
- 7. [Docker e Containers](https://docs.docker.com/get-started/overview/)
- 8. [Introdução ao Kubernetes](https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/)
- 9. [História da Cloud Computing](https://www.ibm.com/cloud/learn/cloud-computing-history)
- 10. [Fury e IDM](https://www.gartner.com/smarterwithgartner/why-identity-and-access-management-is-crucial-for-digital-transformation/)