Uma pilha de tecnologia é uma combinação de linguagens de programação, estruturas e ferramentas. Este artigo irá ajudá-lo a escolher o melhor para o seu projeto.
A tecnologia evolui mais rápido do que qualquer setor de negócios. Num piscar de olhos, algo novo chegou para se tornar o queridinho das empresas em todo o mundo. Veja os contêineres, por exemplo.
Antes da tecnologia de contêineres (e especialmente do Kubernetes), as empresas dependiam de pilhas de aplicativos monolíticos para a implantação de aplicativos e serviços. Um ótimo exemplo de pilha monolítica é LAMP (Linux, Apache, MySQL, PHP). Essa pilha tem ajudado a capacitar as empresas há décadas.
Mas, como dissemos, a evolução acontece e muito rapidamente.
Hoje em dia, pilhas de tecnologia totalmente realizadas aparecem tão rapidamente quanto os aplicativos simples. E os desenvolvedores estão pegando pedaços e juntando-os de maneiras cada vez mais criativas até que o mercado seja inundado com pilhas novas e diferentes.
Isto, claro, levanta a nossa primeira questão.
O que é uma pilha de tecnologia?
Simplificando, uma pilha de tecnologia é uma combinação de linguagens de programação, estruturas e ferramentas que se unem para possibilitar que os desenvolvedores criem aplicativos e serviços da Web ou móveis.
Vamos pegar a pilha LAMP como exemplo. Esta pilha muito popular inclui:
- Uma linguagem de programação (especificamente, uma para scripts CGI) – PHP
- Um servidor web – Apache
- Um sistema operacional – Linux
- Um banco de dados – MySQL ou MariaDB
Com essa pilha, é possível implantar aplicativos poderosos e dinâmicos para diversas finalidades. No entanto, essa combinação não é o padrão de fato pelo qual todas as pilhas são construídas.
Isto é especialmente verdade na era moderna e móvel. Hoje, os engenheiros de software precisam da capacidade de desenvolver e implantar seus aplicativos com muito mais rapidez do que uma pilha LAMP oferece. É aí que a estrutura entra em jogo. Quando uma estrutura é adicionada ao mix, o trabalho é mais eficiente e menos redundante.
Uma pilha mais moderna pode ser dividida em 7 categorias diferentes. Cada pilha ou serviço pode ser empilhado sobre outras pilhas/serviços para criar um aplicativo ou serviço robusto e completo.
Sistemas operacionais/linguagens de programação
Esta seria a pilha base para a qual todo o resto é construído. Para esta pilha, você deve escolher um sistema operacional e as linguagens de programação necessárias para o projeto. O sistema operacional que você escolher dependerá principalmente do seu nível de conforto ou dos requisitos das outras pilhas que você usará. Em muitos casos, o sistema operacional mais popular para pilhas de tecnologia é o Linux.
A linguagem de programação, por outro lado, será determinada pelo projeto. Você pode usar Java, JavaScript, .NET, C++, Ruby, Python ou qualquer linguagem que possibilite o desenvolvimento da aplicação ou serviço.
Servidores e balanceamento de carga
Aqui temos a categoria que envolve servidores, bem como hardware/software para redes de distribuição de conteúdo, roteamento, serviços de cache, gerenciamento de recursos, RBAC, serviços fundamentais (como computação, armazenamento e rede). Essa pilha específica permite que aplicativos e serviços recebam solicitações de usuários e aplicativos, funcionem sem problemas e sejam dimensionados conforme a demanda aumenta. Um exemplo disso é o AzureStack, que inclui um componente de balanceamento de carga.
Armazenamento de dados e consulta de dados
Nesse nível, você encontrará uma pilha que consiste em bancos de dados relacionais e não relacionais, bem como data warehouses, data lakes e pipelines de dados. Sem essa pilha, seus aplicativos não podem ser de natureza dinâmica, nem podem armazenar dados para consulta ou uso posterior.
A pilha de dados depende da entrada de fontes de dados, que podem vir de vários serviços como Facebook, Twitter, entrada do usuário, Google Analytics, Salesforce e (é claro) bancos de dados. Depois que a pilha de dados recebe a entrada, ela pode gerar informações para análise de negócios.
Pilha do lado do servidor
A pilha do lado do servidor (ou back-end) adiciona muitas das funcionalidades básicas necessárias para criar aplicativos para o back-end da sua pilha de aplicativos. Isso fornecerá os componentes necessários para coisas como comunicação de banco de dados, tratamento de solicitações de usuários e redefinições de senha. Essa pilha é invisível para os usuários finais e fornece a espinha dorsal do aplicativo.
Os componentes mais comuns da pilha do lado do servidor incluem linguagens de programação como Python e Ruby, estruturas como Django e Ruby on Rails e o ambiente de tempo de execução JavaScript Node.js. A pilha do lado do servidor também pode incluir bancos de dados (como MySQL) e servidores web (como Apache).
Pilha do lado do cliente
A pilha do lado do cliente (também conhecida como pilha de front-end) é o que os usuários finais veem exibido em suas telas. Essa pilha inclui todos os componentes necessários para construir GUIs para seus aplicativos, como HTML, CSS e JavaScript, bem como as estruturas React e Angular. Alguns desenvolvedores preferem ser desenvolvedores full-stack, o que significa que podem fazer desenvolvimento tanto no lado do servidor quanto no lado do cliente.
Pilha de APIs
Isso não é tanto uma pilha por si só, mas é um componente absolutamente crucial para reunir pilhas que possam realmente funcionar. A API Stack permite que você conecte todas as ferramentas de toda a sua pilha de tecnologia. Muitas dessas API Stacks consistem em milhares de APIs pré-construídas e são divididas em 2 camadas, uma para serviços e outra para infraestrutura.
Ferramentas e serviços de monitoramento
Ao construir sua pilha (ou usar uma pré-construída), você também precisará das ferramentas e serviços necessários para monitorar a integridade e o desempenho desses componentes e serviços. E você pode acreditar que pode monitorar apenas o desempenho do aplicativo como um todo, mas pode achar necessário (dependendo de como você criou seu aplicativo ou serviço) monitorar algumas das pilhas individuais. Talvez seja necessário colocar um monitor específico na pilha do servidor, na pilha de armazenamento de dados ou na pilha do sistema operacional.
Tornar seu monitoramento muito granular permite otimizar a pilha como um todo de forma mais consistente e confiável. Além disso, os dados que você recebe ao monitorar essas pilhas individuais podem ser inestimáveis para ajustar o desempenho de cada peça individual. No final, essa granularidade permite que você ajuste sua pilha para ter o melhor desempenho possível.
Qual pilha de tecnologia você deve escolher?
A resposta a esta pergunta é complicada porque depende absolutamente da natureza do seu projeto. Mas é fundamental escolher a pilha de tecnologia certa desde o início. Se você seguir o caminho errado, poderá ter que recomeçar na metade do processo de construção. E tempo perdido é dinheiro desperdiçado.
Também é fundamental selecionar uma pilha de tecnologia que seja capaz de ser dimensionada para atender às suas necessidades. Por exemplo, se você adicionar um banco de dados relacional a uma pilha que será usada para um aplicativo que lidará com milhões de solicitações por hora, sua pilha não poderá ser dimensionada para atender a essa demanda. Em vez disso, você deve usar um banco de dados NoSQL para essa pilha.
Existem várias pilhas de tecnologia muito populares para você escolher. Vamos dar uma olhada em alguns dos mais populares.
SIGNIFICAR
A pilha MEAN é uma das pilhas mais populares para a construção de sites e aplicações web dinâmicos. Esta pilha é centrada em JavaScript e é composta por:
- MongoDB – banco de dados
- Express.js – estrutura de back-end
- Angular.js – estrutura de front-end
- Node.js – servidor multiplataforma
A principal razão pela qual MEAN é tão popular é sua natureza centrada em JavaScript. Isso significa que seus desenvolvedores só precisam se concentrar em uma única linguagem (em vez de reunir diversas linguagens para um único projeto). Isso possibilita a construção rápida de aplicativos e serviços, como:
- Ferramentas para gerenciamento de fluxo de trabalho
- Aplicativos de rastreamento de despesas
- Sites de agregação de notícias
- Aplicativos de mapeamento e localização
- Aplicativos de tarefas e calendário
- Fóruns interativos
A razão pela qual o MEAN é tão importante é que ele permite criar aplicativos escalonáveis e nativos da nuvem com um ciclo de vida de desenvolvimento simplificado usando uma única linguagem. Com a ajuda do MongoDB, seus aplicativos baseados em MEAN podem trabalhar com grandes quantidades de dados, por isso são perfeitamente adequados para empresas. Finalmente, como o MEAN possui um servidor web integrado, a implantação é bastante simples.
MEVN
MEVN é semelhante ao MEAN, mas troca Angular.js por Vue.js. Por que? Vue.js é considerado uma ótima opção para desenvolvimento frontal e posterior e torna muito fácil a implantação de aplicativos da web dinâmicos voltados para o usuário. MEVN significa:
- MongoDB – banco de dados
- Express.js – estrutura de back-end
- Vue.js – estrutura de front-end
- Node.js – servidor multiplataforma
Para qualquer desenvolvedor que deseja implantar aplicativos web front-end com alta rapidez, MEVN é a pilha a ser usada. E graças à capacidade do Vue.js de trabalhar com serviços de terceiros, ele é bastante flexível e pode fornecer o melhor dos mundos Angular e React. Com a adição do Vue.js. suas aplicações web desfrutarão de um desempenho notável.
As duas principais vantagens da pilha MEVN são que ela usa JavaScript durante todo o ciclo de vida de desenvolvimento e tem uma construção mais clara do lado do cliente versus do lado do servidor. E como o Vue.js é mais fácil de usar do que o Angular, será mais fácil para seus desenvolvedores se familiarizarem com essa pilha.
MERN
Esta é outra pilha semelhante ao MEAN, mas substitui a estrutura de front-end Angular.js pelo React. Como o React é uma das estruturas mais populares para a construção de aplicativos móveis de página única, você pode ter certeza de que o MERN é uma das principais estruturas para a construção no espaço móvel.
MERN significa:
- MongoDB – banco de dados
- Express.js – estrutura de back-end
- React – estrutura front-end
- Node.js – servidor multiplataforma
MERN oferece uma vantagem semelhante ao MEAN porque usa JavaScript durante todo o ciclo de vida de desenvolvimento. E como o MERN usa a arquitetura MVC (Model-View-Controller), o processo de desenvolvimento deve ser bastante familiar para seus engenheiros. Graças ao React e seu comportamento assíncrono, é possível ter um desempenho incrível em aplicações front-end. Por fim, o React é usado por alguns dos sites mais populares do mundo, como Facebook e Dropbox, por isso é altamente capaz de atender às necessidades de empresas de qualquer porte.
LÂMPADA
Já mencionamos a pilha LAMP, mas ela deve ser incluída nesta lista, devido ao quão difundida e crucial essa pilha é. A pilha LAMP consiste em:
- Linux – sistema operacional
- Apache – servidor web
- MySQL (ou MariaDB) – banco de dados
- PHP – linguagem CGI
A pilha LAMP costuma ser a pilha base usada para implantações de sites WordPress. Também é possível trocar vários componentes. Por exemplo, você pode trocar o Linux pelo Windows para criar uma pilha WAMP ou o macOS para criar uma pilha MAMP. Você pode colocar Perl ou Python no lugar de PHP. Mas não importa como você monte essa pilha, ela é uma das pilhas de servidores web mais populares do mercado e é usada por milhões de sites em todo o mundo.
Pilha Meteor.js
Esta é outra pilha de desenvolvimento web de código aberto. Meteor.js concentra-se inteiramente em JavaScript para tornar o desenvolvimento de aplicativos muito mais eficiente. Com Meteor.js você pode desenvolver aplicativos para desktop, dispositivos móveis e web e até mesmo integrar com vários frameworks e ferramentas. A única desvantagem do Meteor.js é que ele só funciona com o banco de dados MongoDB NoSQL, portanto, seus desenvolvedores devem conhecer essa ferramenta para construir com sucesso com esta pilha.
A vantagem do Meteor.js é que você pode escrever aplicativos com significativamente menos código do que outras pilhas. Meteor.js também permite construir aplicativos altamente escalonáveis. Outras vantagens incluem:
- Incrivelmente simples de usar
- Comunicação perfeita entre o cliente e o servidor
- Ferramentas de teste em tempo real
- Excelentes recursos de depuração
- Muitos pacotes e bibliotecas para trabalhar
Sem servidor
Você pode achar que isso não é uma pilha, mas é. Mas o que é sem servidor? Basicamente, não se trata de gerenciar servidores. Plataformas de nuvem como AWS, Google Cloud e Azure oferecem soluções sem servidor. E todos esses hosts de terceiros oferecem pilhas completas, que incluirão tudo que você precisa para construir e implantar.
Existem três vantagens principais em não usar servidor:
- É econômico
- Você não precisa se preocupar com o provisionamento de hardware
- Oferece escalabilidade massiva
O Serverless Stack é uma extensão do AWS CDK e apresenta um ambiente de desenvolvimento Lambda ativo, suporte para configuração de pontos de interrupção e depuração no VS Code, oferece suporte à implantação em várias regiões e ambientes, inclui construções de nível superior e usa suporte de configuração zero para JavaScript, TypeScript, Go, Python, C# e F#.
JAMstack
JAMstack não é tão popular quanto as outras pilhas da lista, mas está se tornando cada vez mais útil para o desenvolvimento web moderno.
JAM significa:
- JavaScript
- APIs
- Marcação
JAMstack é voltado especificamente para o desenvolvimento de sites. O que é importante entender com o JAMstack é que o desenvolvimento está completamente desconectado da hospedagem. Por causa disso, você pode criar sites no ambiente de sua escolha e, em seguida, quaisquer alterações feitas na construção serão implantadas em um gerador de site estático ou CDN. Depois que a compilação for implantada, o novo site será gerado.
JAMstack é uma ótima opção para construir sites estáticos rápidos e até mesmo automatizar o processo (de maneira semelhante a CI/CD). É importante entender que você pode selecionar os componentes de sua preferência para cada seção (como React para JavaScript, Elastic para API e Gatsby para Markup). Isso torna o JAMstack bastante flexível.
faça você mesmo
Aqui está uma das melhores coisas sobre pilhas de tecnologia. Talvez você não encontre uma pilha atual que atenda às necessidades do seu projeto. Você sabe exatamente o que está construindo, mas nenhuma das pilhas oferece tudo o que você precisa.
É aí que a mentalidade Do It Yourself entra em ação. Com tanta tecnologia disponível, você pode montar uma pilha totalmente nova para criar exatamente o que seu projeto precisa. Talvez esse projeto precise de uma pilha LAMA: Linux, Apache, MongoDB, Angular. Ou talvez seja tudo sobre pilha JAN (JavaScript, Apache, Node.js). Talvez você até precise basear seu projeto em uma pilha LAN (Linux, NGINX, Node.js).
A beleza das pilhas de tecnologia é que elas não são imutáveis. Na verdade, não há limite para as pilhas que você pode criar. Mas se você seguir esse caminho, é absolutamente crítico que você saiba o que precisa que a pilha faça, que as partes constituintes possam se comunicar entre si e que a pilha possa fornecer em termos de confiabilidade, tempo de atividade, escalabilidade e flexibilidade.
Se você montasse sua própria pilha e descobrisse no meio do projeto que ela não funcionaria, você estaria de volta à estaca zero. No mundo da computação moderna, recuar é semelhante à implosão. Seus desenvolvedores e sua empresa devem estar sempre avançando. Se você optar pelo caminho da pilha DIY, faça-o corretamente e ele atenderá bem às suas necessidades.
Conclusão
As pilhas de tecnologia já existem há muito tempo. Mas ao longo dos anos eles evoluíram para ferramentas muito especializadas para ajudar a facilitar o trabalho dos seus desenvolvedores e, ao mesmo tempo, possibilitar que sua empresa implante aplicativos extremamente escaláveis e fáceis de usar que o público pode usar para interagir com sua empresa.
A coisa mais importante que você deve entender, entretanto, é que as pilhas de tecnologia possibilitam que seus desenvolvedores façam uso de software pré-construído, para que não precisem reinventar a roda toda vez que iniciam um novo projeto.
Com toda essa tecnologia disponível, o desenvolvimento de aplicativos está passando por um dos maiores e mais rápidos períodos de crescimento da história. Graças ao desenvolvimento de aplicativos nativos da nuvem, contêineres, web e dispositivos móveis, as pilhas de tecnologia são agora mais importantes do que nunca.
Fonte: BairesDev