Um conceito importante, que vem ganhando popularidade no mundo da tecnologia da informação, é o de microsserviços. Essa abordagem de gestão de sistemas tem um grande potencial de permitir que os departamentos de TI possam se aproximar cada vez mais das áreas de negócios e também da área de analytics.
De acordo com o ResearchAndMarkets, o mercado global de microsserviços em nuvem crescerá a uma taxa de 22,5% com o mercado americano projetado de 27,4% para os próximos 4 anos. Dentre os setores do mercado, estima-se um crescimento superior a 23,4% do segmento de plataforma de microsserviços, alcançando $1,8 milhão em 2025. Contudo, quais os prós e contras dessa arquitetura? Qual o futuro dessa prática? Devemos investir nessa tendência? Quais tecnologias usar?
A arquitetura de microsserviços
A ideia por trás dessa arquitetura baseia-se na construção em um ambiente onde os serviços sejam independentes, em vez de uma extensa e única base de código (monolito). Esses serviços comunicam-se frequentemente por meio de APIs, com cada um tendo sua própria base de dados reduzida e mais leve.
A implementação de uma arquitetura de microsserviços não diz respeito, necessariamente, a tecnologias específicas, mas sim à adoção de boas práticas que facilitem a integração de diversas fases no ciclo de vida do desenvolvimento de software, como: conteinerização, integração contínua (CI), DevOps, integração automática de testes e, em muitos casos, metodologias de desenvolvimento ágil.
Benefícios
Os 2 tópicos mais importantes quando o assunto é microsserviços são performance e escalabilidade.
State of Microservices
Quando implementado corretamente e, em conjunto com a adoção de boas práticas citadas anteriormente, a arquitetura de microsserviços pode trazer uma série de benefícios para os projetos e aplicações:
- Agilidade, facilidade e escalabilidade no processo de desenvolvimento e manutenção da aplicação: construída a partir de módulos e códigos reduzidos, as aplicações tornam-se mais acessíveis para os desenvolvedores entenderem as funcionalidades do serviço, visto que estes são separados. Além disso, há a possibilidade de escalá-lo no tempo específico, ao contrário de toda a aplicação;
- Possibilidade do uso de diversas linguagens e tecnologias: elimina o fator de dependência e lock in, isto é, possibilita a flexibilidade de utilizar novas tecnologias que sejam mais performáticas para determinado serviço, utilizando menos recursos;
- Melhor detecção de falhas: como os serviços são separados e menores, torna-se mais fácil monitorar e detectar quando há uma falha na aplicação. Além disso, grandes aplicações podem se manter intactas mesmo por uma falha de um módulo específico;
- Potencialização da integração contínua e no processo de deploy: em vez de toda a aplicação, o deploy pode ser realizado apenas no serviço específico, onde foi atualizada determinada feature. Isso e outras práticas já citadas incentivam a integração contínua (CI).
Quando usar microsserviços?
Como os microsserviços abordam questões estruturais dos sistemas e até de modelos de negócio, indica-se a sua utilização em times de desenvolvimento pequenos (squads), aplicações grandes, alta taxa de comunicação e/ou aplicações complexas que precisam escalar.
O papel dos microsserviços em Analytics
Hoje vemos uma grande dificuldade das empresas de grande porte em conseguir interagir com seus sistemas de ERPs e também com os ecossistemas de empresas externas. Quando algumas análises são feitas, normalmente são bastante manuais, trabalhosas e não replicáveis. Geralmente, as análises ficam restritas às planilhas.
O impacto da nova abordagem de microsserviços é vasto em toda área da computação. No entanto, no que tange à área de Analytics, eles podem ser utilizados de forma estratégica em camadas para potencializar a qualidade e a profundidade da análises de dados.
Com os microsserviços há um ganho de flexibilização da integração de dados. Em outras palavras, os datasets (o que são datasets?) poderão ser enriquecidos com dados de naturezas diferentes, não apenas internos da organização, mas externos. Exemplos: dados de temperatura, colocações, consultas de preço, previsão de demanda e outros.
Exemplos da nova geração de sistemas
Dos pedidos feitos pelo aplicativo Ifood e filmes sugeridos na Netflix aos sistemas de identificação bancária ou reconhecimento facial, não são poucas as aplicações que tem como base os conceitos de microsserviços, sendo desenvolvidas por empresas dos mais variados setores da economia.
Um dos exemplos mais icônicos da nova realidade de sistemas é o aplicativo Uber, que integra serviços altamente especializados, tais como:
- geolocalização;
- cobrança;
- cartão de crédito;
- envio de mensagens.
Tudo isso é orquestrado por técnicas avançadas de UX para que o aplicativo, 100% baseado em microsserviços, entregue o valor aos usuários, que, ao fim do processo, querem se deslocar do ponto A para o ponto B no menor tempo possível, com segurança e comodidade.
Tecnologias e Plataformas
Existem diversas tecnologias e plataformas encontradas no mercado que possibilitam o sucesso na implantação da arquitetura de microsserviços. Abaixo, encontram-se algumas importantes:
- Plataformas de conteinerização: mover-se entre diferentes serviços pode ser um pesadelo para configurar a máquina. Entretanto, ferramentas como Docker permitem o deploy de imagens em seu computador localmente, independente do sistema operacional usado;
- Ferramentas automatizadas de deploy: softwares como jenkins combinam com a arquitetura de microsserviços, permitindo assim a integração contínua e deploy;
- Plataformas de testes de integração automatizada: plataformas como Selenium são de grande importância na integração contínua e na arquitetura de microsserviços;
Dentre algumas ferramentas para a área de analytics, podemos citar:
- Sistemas de mensagens: geralmente, utilizam-se plataformas, como: Apache Kafka e Amazon Kinesis. Transferem dados de um aplicativo para outro para que os aplicativos possam se concentrar nos dados sem se atrapalharem na transmissão e no compartilhamento dessas informações.
- Sistemas de orquestração: plataformas como Kubernetes automatizam, configuram, coordenam e gerenciam sistemas de computador e software.
- Computação em nuvem: serviços como Amazon AWS e Microsoft Azure facilitam o deploy e escalam os recursos, potencializando assim a adoção de microsserviços.
Mundo
O State of Microservices 2020 tem como objetivo mensurar a utilização de microsserviços por profissionais ao longo do globo. A pesquisa reuniu dados de 650 desenvolvedores de softwares, sendo, em sua maioria, CTOs, líderes e seniors espalhados por todos os continentes do mundo (exceto a África), de empresas de pequeno, médio e grande porte. Destaca-se que o tempo de utilização dessas tecnologias por parte da maioria dos profissionais é de, em média, 1 ano.
“Por muito tempo, a arquitetura de microsserviço foi associada a grandes soluções corporativas, as quais eram geralmente construídas usando Java ou .Net. No entanto, parece que as coisas estão mudando rapidamente. Em primeiro lugar, cada vez mais pessoas estão falando sobre JavaScript universal e como essa linguagem (ambas com TypeScript) está ganhando popularidade. Em segundo, os desenvolvedores começaram a construir microsserviços não apenas para plataformas de nível empresarial, mas também para projetos de software de médio porte. Em terceiro lugar, o modelo “microsserviços sem servidor” também está em ascensão e todos nós sabemos que JavaScript e TypeScript funcionam muito bem com ou sem servidor.”
State of Microservices
A integração contínua é uma importante prática no processo de desenvolvimento de software, podendo trazer diversos benefícios a quem usa. Por isso, atualmente, existem diversas opções no mercado que, aliadas a um bom planejamento, podem trazer liberdade e recompensas futuras. Além disso, a migração de uma tecnologia para outra torna-se mais acessível de acordo com a melhor solução para o negócio. A pesquisa apontou que 87% dos entrevistados já utilizam ferramentas de integração contínua, tornando-se assim um padrão para os desenvolvedores.
Conclusão
Os microsserviços representam uma forte tendência de arquitetura na área da computação. Existem diferentes tecnologias para implementar soluções que, por sua vez, podem atender necessidades variadas de negócio.
Neste artigo, abordamos os conceitos básicos de arquitetura de sistemas e buscamos dar alguns exemplos daqueles que já operam nesta visão. Também mostramos como os projetos de analytics podem se beneficiar disso.
Embora o maior fator de sucesso dos projetos de analytics resida na estratégia de governança e cultura informacional das empresas, um fator crítico ainda continua sendo a qualidade dos registros armazenados. Vemos um grande potencial para ganhos de maturidade analítica com esta abordagem, principalmente pelo enriquecimento de conjunto de dados a partir da integração com parceiros especializados em determinados tipos de informações.
Acreditamos que o futuro das arquiteturas de sistemas terão como base os microsserviços e que o próximo grande desafio, depois da estabilização desta arquitetura, será a falta de mão de obra de profissionais criativos para conectar cada microsserviço nos processos de negócios. Nesse sentido, já existem pesquisas avançadas para utilização de web semântica (o que é web semântica?) e inteligência artificial para ajudar.
Quem é a Aquarela Analytics?
A Aquarela Analytics é vencedora do Prêmio CNI de Inovação e referência nacional na aplicação de Inteligência Artificial Corporativa na indústria e em grandes empresas. Por meio da plataforma Vorteris, da metodologia DCM e o Canvas Analítico (Download e-book gratuito), atende clientes importantes, como: Embraer (aeroespacial), Scania, Mercedes-Benz, Grupo Randon (automotivo), SolarBR Coca-Cola (varejo alimentício), Hospital das Clínicas (saúde), NTS-Brasil (óleo e gás), Auren, SPIC Brasil (energia), Telefônica Vivo (telecomunicações), dentre outros.
Acompanhe os novos conteúdos da Aquarela Analytics no Linkedin e assinando a nossa Newsletter mensal!
Autores:
Entusiasta da tecnologia, proativo e na busca constante de novos desafios. Engenheiro formado pela UFSC e graduando em Análise e Desenvolvimento de Sistemas.
Fundador e Diretor Comercial da Aquarela, Mestre em Business Information Technology com especialização em logística – Universiteit Twente – Holanda. Escritor e palestrante na área de Ciência e Governança de Dados para indústria e serviços 4.0.