Em um mundo cada vez mais dinâmico, optar pela estrutura de plataforma correta pode fazer toda a diferença para o sucesso de um projeto digital. Explicamos, aqui, as diferenças entre as duas principais arquiteturas de software

Se você está em busca de uma plataforma para o seu negócio digital, vale a pena saber mais sobre a estrutura na qual ela está baseada antes de bater o martelo. Isso porque muitas ações e mudanças no projeto podem ser impactadas de acordo com o tipo de arquitetura presente na plataforma.

Tratando-se de desenvolvimento de softwares, atualmente as arquiteturas monolíticas (monolithic) e a de microsserviços (microservices) são as mais utilizadas no mercado de tecnologia, sendo a segunda considerada a mais flexível e moderna delas.

“A arquitetura de microsserviços vem ganhando muito o mercado de produção de software desde 2011, e é sem dúvida hoje a mais utilizada pelas empresas”, analisa Allen Oberleitner, coordenador do curso de Tecnologia em Análise e Desenvolvimento de Sistemas do Centro Universitário FIAP.

Grandes companhias, como Microsoft, IBM, Amazon, Facebook e Google, utilizam esta arquitetura em suas operações, no entanto, ela também pode ser usada por empresas menores, dependendo de seu plano estratégico. Se o negócio digital necessita de mudanças e atualizações constantes, a arquitetura de microsserviços pode ser, de fato, a melhor escolha.

Enquanto ela permite a atualização de funcionalidades de uma maneira mais rápida, por ser dividida em pequenos blocos de funcionalidades, a monolítica funciona de forma oposta, por isso o nome ‘mono’.

“Na arquitetura monolítica, os sistemas de software são construídos em um único bloco e são implantados e processados em uma única aplicação. Este tipo de sistema funciona em camadas e possui um código único”, explica Oberleitner.

Ou seja, todo tipo de mudança requer um esforço muito maior, já que a alteração e/ou atualização, seja ela de funcionalidade ou estrutural, o bloco inteiro precisa ser implantado – muitas vezes, sendo necessário testar toda a aplicação do zero novamente.

Solucionando problemas de uma forma mais rápida

Projetos que requerem agilidade, como os superapps ou, ainda, plataformas de marketplaces que visam um ecossistema digital, têm mais benefícios ao utilizar estrutura de microsserviços, uma vez que esta arquitetura prevê a resolução mais rápida de problemas.

De acordo com Juliano Wickboldt, professor adjunto do Instituto de Informática da UFRGS, atualmente os problemas no cenário digital tendem a ser cada vez mais complexos e, portanto, é mais difícil desenvolver uma peça de software do zero, como ocorre com a arquitetura monolítica.

“A estrutura de microsserviços divide o problema em partes menores, em ‘subproblemas’, resolvendo cada uma dessas partes de maneira independente, para depois integrar tudo para criar uma solução completa”, afirma. “Eu diria que é quase uma filosofia de desenvolvimento baseada em um conceito mais fundamental da computação, que é dividir para conquistar.”

As principais vantagens da arquitetura de microsserviços

Embora novas estruturas estejam surgindo no mercado, como Serverless Architecture, Lambda Functions e FaaS (Function as a Service), a de microsserviços é um conceito mais maduro e, portanto, mais seguro de adotar a longo prazo, uma vez que tende permanecer em ascensão por muitos anos.

Esse tipo de arquitetura, de uma forma geral, também é considerada mais vantajosa por ser “poliglota”, ou seja, por suportar diversas plataformas de desenvolvimento e linguagens.

Uma delas é a Golang (GO), criada pelo Google, que é uma linguagem moderna e compilada, útil para a implementação de aplicações concorrentes e distribuídas, e tem um kit específico para desenvolvimento de microsserviços.

Além de suportar uma diversidade maior de plataformas e de linguagens, o professor da UFRGS destaca três grandes vantagens da implementação de microsserviços. A primeira delas, já citada anteriormente, diz respeito ao hot swap de serviços, que é a facilidade de adicionar ou substituir componentes, muito comum em desenvolvimento de softwares.

“Quando começamos um projeto, é comum que ele evolua com o tempo. E ter de adicionar alguma nova funcionalidade sem ter de construir do zero é, sem dúvida, o ponto alto de microsserviços”, acrescenta Juliano Wickboldt.

O segundo benefício refere-se à escalabilidade. Com o avanço do digital, é natural um projeto ganhar visibilidade conforme o tempo. Com isso, mais usuários terão acesso à plataforma, que precisará estar preparada para entregar as mesmas funcionalidades para um número maior de pessoas em um curto espaço de tempo. Sendo assim, é possível começar com poucos recursos e escalar, indefinidamente, replicando componentes.

A terceira grande vantagem é o gerenciamento mais flexível, através de plataformas de orquestração, monitoramento e autorrecuperação. “Nesse caso, se o host parar de funcionar, essas plataformas com sistemas mais modernos permitem que o usuário sequer perceba a falha, pois existe a recuperação automática. O nível de disponibilidade é, praticamente, de 100%.”

De acordo com Wickboldt, embora o custo de uma arquitetura de microsserviços seja relativamente mais alto por conta da mão de obra envolvida, ao longo do processo o investimento se paga.

“Ao incorporar novas funcionalidades de forma mais rápida, automaticamente o projeto cativará mais clientes e investir neste tipo de estrutura, no fim das contas, valerá mais a pena”, afirma.

Para Allen Oberleitner, da FIAP, trabalhar com a arquitetura de microsserviços é uma questão de mentalidade da empresa. “Nossa mente está acostumada ao tradicional e sair da zona de conforto é tarefa, muitas vezes, complexa para a maioria das pessoas. Porém, depois que se acostuma com a nova arquitetura, o processo de desenvolvimento é facilitado e focado”, opina.

Como funciona a arquitetura monolítica?

As arquiteturas de microsserviços e a monolítica são completamente antagônicas. Enquanto a primeira foi pensada para garantir que o software tenha baixo acoplamento e alta coesão – o que significa que cada componente é autocontido, realizando tarefas específicas, dependendo o mínimo de outros componentes para funcionar –, a segunda é justamente o inverso.

O software monolítico é bem acoplado, ou seja, não consegue ser desmembrado em partes ou modificado sem afetar todas as partes envolvidas. No entanto, uma questão importante desta arquitetura é sua simplicidade. De uma forma geral, o software monolítico é mais simples de ser entendido estruturalmente, já que é uma coisa só, um único bloco, ao contrário da complexidade e maior elaboração da estrutura de microsserviços.

“A principio diria que a arquitetura monolítica está ultrapassada. Cada vez se usa menos arquiteturas desse tipo, principalmente para desenvolvimento de aplicações modernas, onde há muita colaboração e fluxo de usuários”, analisa Juliano Wickboldt.

Para esse tipo de aplicação, onde a plataforma pode receber a visita de centenas de usuários hoje e milhares na próxima semana, onde a escala avança rapidamente, fica praticamente inviável usar arquiteturas monolíticas, justamente pela dificuldade de ajustes e aperfeiçoamento de serviços e funcionalidades quando necessário.

Por outro lado, é uma relação de custo-benefício. Se for desenvolver uma aplicação mais tradicional, que vai ser rodada apenas em desktop e para um número pequeno de usuários, a estrutura monolítica pode ser a melhor escolha.

Em outros casos, quando é preciso fazer uma prova rápida de conceitos, mostrar alguma funcionalidade para o cliente antes de desenvolver uma aplicação melhor distribuída como a de microsserviços, esta arquitetura também pode ser a solução e um caminho mais simples a ser percorrido.

O professor da FIAP concorda quanto à adesão desta arquitetura em projetos menores. “Uma das variáveis que deve ser levada em consideração, por exemplo, é a complexidade do projeto. Para projetos de complexidade baixa é mais indicada a arquitetura monolítica pela sua fácil gestão e não exigência de equipe experiente”, opina Allen Oberleitner.

Microsserviços ou monolítica: qual escolher?

Essa reposta depende do modelo de negócio e do business de uma empresa. Se for um projeto que tende a ganhar escala e visibilidade, a arquitetura de microsserviços atenderá melhor, mas se for algo menor e para poucos usuários, a estrutura monolítica pode corresponder às expectativas.

Independentemente do sistema que optar, vale lembrar que o mundo digital é dinâmico e é sempre aconselhável ter acesso rápido e fácil à plataformas e sistemas que disponibilizem opções e arquiteturas modernas, caso seja necessário expandir e escalar rapidamente.

Ambas têm seus pontos fortes que precisam ser analisados de acordo com o plano estratégico da empresa.

“Em aplicações e sistemas mais modernos, raramente vemos a estrutura monolítica. Ao mesmo tempo, ela não vai desaparecer de uma hora pra outra, porque, em alguns casos, ainda é vantajosa. Boa parte dos softwares surgiu nos anos 1980 e 1990 e, todavia, funcionam, pois fazem mais sentido em alguns projetos”, conclui Juliano Wickboldt.

A CWS Platform possui arquitetura baseada em microsserviços e uma infraestrutura moderna, baseada em Cloud Computing. Suas aplicações são executadas em contâiners (Docker) e orquestradas pelo Kubernetes na AWS (Amazon Web Services).

Gostou do texto?

Tem alguma observação ou pergunta para colaborar com a discussão?
Deixe abaixo nos comentários.

Fique atualizado com todos os nossos conteúdos