Desde seu início, a transformação digital vem causando grandes mudanças em diversos aspectos do nosso dia a dia. Seja na estruturação das empresas, diferentes formas de trabalho, desenvolvimento de softwares ou até mesmo na relação entre pessoas e consumo, o mundo mudou e agilidade e automatização são palavras de ordem.
Desde sempre as empresas de tecnologia desenvolveram suas aplicações em blocos únicos, compartilhando banco de dados, memória, recursos de processamento, etc. Em outras palavras, elas trabalhavam com arquitetura monolítica.
Conforme o uso e desenvolvimento da aplicação, ela se torna mais e mais complexa, e sua manutenção fica lenta por conta da quantidade de códigos presentes em seu sistema.
Além disso, os desenvolvedores não podem mudar a tecnologia original da aplicação, o que a torna inflexível, difícil de escalar e passível de sofrer comportamentos inesperados.
Ao contrário do que as desvantagens de seu uso aparentam, a arquitetura monolítica funciona bem e ainda é muito utilizada, porém algumas características de seu desenvolvimento dificultam a agilidade e automatização buscadas pela transformação digital.
Uma nova arquitetura de software tem se tornado cada vez mais popular entre as empresas de tecnologia, os microsserviços. Vamos falar um pouco mais sobre eles a seguir.
Microsserviços nas empresas de tecnologia
Microsserviços são uma nova abordagem de criar aplicações. Neste novo tipo de arquitetura, os códigos de programação são criados em blocos separados, que precisam ser unidos para que a aplicação funcione como um todo.
Cada bloco criado é responsável pelo funcionamento de uma função específica, ou serviço. Cada serviço é implantado de forma independente e funciona por si só, portanto, caso haja uma falha em algum deles, ela pode ser consertada sem comprometer os demais blocos.
Uma das vantagens de se utilizar este tipo de abordagem é que a execução dos processos é mais leve. Além disso, cada bloco pode ser construído a partir de uma linguagem de programação diferente, o que torna a criação do software muito mais flexível.
Outra vantagem é em relação à necessidade de esforço da equipe. Grandes aplicações em arquitetura monolítica podem ser modularizados em torno de recursos de negócios também, embora esse não seja o caso comum.
Porém, caso um bloco (que foi utilizado para definir o escopo de um serviço ou um microsserviço) não tenha um contexto bem definido, isso implica em criar um acoplamento forte com outros blocos do sistema distribuído. Em outras palavras, se o bloco ultrapassar os limites modulares, pode ser difícil para os programadores dimensionar e aplicar essas novas necessidades rapidamente, dentro do ciclo de entregas da equipe (sprint).
Esses casos, em geral, demandam um trabalho conjunto de duas ou mais equipes distintas, o que encarece e torna todo o trabalho mais lento. Realmente, isso pode provocar um dano para o sistema considerável.
A separação das funções da aplicação em blocos facilita a manutenção da aplicação e mantém os limites de trabalho da equipe.
Uma outra tendência das empresas de tecnologia que utilizam a arquitetura de microsserviços é preferir que a equipe criadora do software seja inteiramente responsável por ele, do começo ao fim.
Na abordagem monolítica, a equipe do software era responsável apenas por sua projeção, criação e entrega. Depois disso, a aplicação se tornava responsabilidade de outras equipes, de manutenção e suporte, por exemplo.
Nos microsserviços, a tendência é que a equipe criadora acompanhe o software por toda a sua vida útil. Em outras palavras, os desenvolvedores acabam em contato diário com o modo como o software se comporta na produção e aumenta o contato com os usuários, já que se torna trabalho deles assumir pelo menos parte da carga de suporte.
Outro ponto positivo importante de ser ressaltado na arquitetura de microsserviços é o processo de CI (Continuous Integration – integração contínua, em tradução direta). CI é aplicado para garantir agilidade na implantação do sistema no ambiente de produção principalmente, preparando o sistema para um ambiente integrado, com contêiner e replicação de dados.
No entanto, por ser muito mais complexa, a arquitetura de microsserviços exige muito mais para manter uma aplicação distribuída e de comunicação entre os blocos. É preciso contar uma equipe madura e capacidade para garantir a entrega dos projetos com qualidade e eficiência.
Microsserviços nas APIs
Com as grandes mudanças tecnológicas ocasionadas pela transformação digital, há uma enorme necessidade em garantir que dispositivos de diferentes linguagens sejam facilmente integrados.
Para essa integração ocorrer, se faz necessário o uso de APIs, ou Interfaces de Programação de Aplicações. Em uma explicação breve, elas são o conjunto de ferramentas e padrões criados para permitir a troca de informações entre dois ou mais sistemas.
Com a digitalização do mundo e o surgimento das novas tecnologias, o uso de API tornou-se essencial para que a conexão de tudo ocorra facilmente, e é aí que os microsserviços entram!
Os aplicativos baseados em microsserviços tem um mecanismo leve. Além disso, o desmembramento dos processos de TI torna a criação dos software mais ágil, fácil e produtiva, trazendo vantagens para todos os lados do desenvolvimento.
As APIs baseadas em microsserviços são utilizadas por qualquer empresa de tecnologia, porém elas têm sido essenciais no dia a dia de ambientes corporativos ecossistêmicos, como serviços financeiros e indústria de seguros, por exemplo.
Exemplos de empresas de tecnologia que usam microsserviços
Várias empresas grandes e conhecidas utilizam a da arquitetura de microsserviços. A Netflix, inclusive, foi umas das pioneiras e já se beneficia desta abordagem há mais de 10 anos. Assim como a Amazon, elas utilizam os microsserviços por conta da flexibilidade de introduzir novos sistemas sem precisar alterar um bloco monolítico inteiro para isso.
Além disso, a possibilidade de dividir a equipe em blocos de microsserviços ajuda no desenvolvimento dos códigos e acelera a produção como um todo, agilizando inclusive os tempos de entrega do produto/ serviço.
A Amazon, que foi criada como uma simples livraria on-line, quando viu a possibilidade de escalar, optou por mudar sua arquitetura monolítica para uma plataforma de serviços totalmente distribuída e descentralizada, que atendesse a diversas aplicações diferentes.
Essa mudança garantiu a construção de muitos componentes de software de maneira rápida e independente e, assim, ela foi capaz de desenvolver inúmeros serviços entre vários servidores de aplicativos que agregam suas informações.
A Uber é outro exemplo clássico de empresa que se beneficiou com os microsserviços. Em seu início, o aplicativo começou sua jornada com uma arquitetura monolítica que atendia apenas sua cidade de fundação, São Francisco, nos Estados Unidos.
Para estender seus serviços para o resto do mundo e incluir as funções de GPS, faturamento e pagamento, decidiram mudar a arquitetura inicial para a de microsserviços, que é utilizada até hoje.
Empresas de tecnologia que tem o objetivo de continuar crescendo e escalando seus serviços devem fazer como a Netflix, Uber e Amazon e apostar na mudança de arquitetura para tornar o desenvolvimento de software ágil e descomplicado.
Continue lendo o blog da Cedro Technologies para mais assuntos sobre transformação digital!
Leandro Monteiro