Prévia do material em texto
CONEXÃO UNIFAMETRO 2020 XVI SEMANA ACADÊMICA ISSN: 2357-8645 Microsserviços como uma alternativa de desenvolvimento. Vinicius Alves Fernandes Centro Universitário Fametro - Unifametro vinicius.fernandes@aluno.unifametro.edu.br Área Temática: Engenharia de Software e Computação em Nuvem Encontro Científico: VIII Encontro de Iniciação à Pesquisa Introdução: No universo do desenvolvimento de software, a tecnologia está em crescente expansão, todos os dias nascem projetos com diferentes aplicações no mundo real, tais projetos são desenvolvidos com uma infinidade de tecnologias, diferentes paradigmas de programação para resolver um problema da melhor forma, como a Netflix, que migrou de uma arquitetura monolítica, que será melhor apresentada posteriormente, para vários microsserviços. O levantamento de tecnologias usadas no desenvolvimento deve ser feito com bastante cautela, para não ter um custo maior do que o planejado, não investir muito tempo refatorando o código-fonte da aplicação, alterações de estrutura de um projeto já em andamento ou até mesmo tendo que iniciar o desenvolvimento do zero, pois a aplicação virou um aglomerado de problemas. A má escolha da estrutura do projeto pode não ser tão impactante inicialmente, mas todos os sistemas buscam a escalabilidade, ou seja, sua complexidade tende a aumentar, para que o serviço possa atender a necessidade de um grande público. Segundo (Rodrigues; Julia; Leoncio; Pinto; Scombatti, 2019), a arquitetura monolítica, uma arquitetura muito usada, funciona da seguinte forma, todas as funções estão contidas em um único módulo. Isso se torna um problema quando a aplicação tende a crescer, como, por exemplo, em sistemas ERP’s. Esse tipo de sistema comporta diferentes departamentos dentro de uma empresa, como financeiro, RH, vendas, estoque, entre outros setores. Ou seja, desenvolver sistemas grandes utilizando arquitetura monolítica pode não ser uma escolha muito eficiente. Na medida em que o sistema aumenta, torna-se difícil administrá-lo, e por ter funções contidas em um único módulo, que é caso da arquitetura monolítica, os serviços estão interligados, ou seja, eles dividem funcionalidades, causando uma dependência entre eles. Ao realizar manutenção corre o risco de impactar negativamente em outros serviços do sistema, além de ter um código-fonte muito extenso, diminuindo a CONEXÃO UNIFAMETRO 2020 XVI SEMANA ACADÊMICA ISSN: 2357-8645 produtividade. Entretanto, a arquitetura monolítica não é de todo mal, ela pode ser uma alternativa para aplicações simples, já que é mais fácil de implementar. Porém, quando falamos de grandes aplicações o escalonamento e implantação são pontos negativos desse modelo. Objetivos: O intuito desse trabalho é mostrar uma, dentre tantas alternativas que podem trazer benefícios a certos casos de desenvolvimento. Ela consiste em uma aplicação separada em vários serviços, e não, com suas funções em um mesmo módulo, como foi apresentado na arquitetura monolítica. Como cada serviços agora é independente, há a facilidade de realizar manutenção e evolução da aplicação, redução de custos, visto que as aplicações só utilizarão os recursos necessários, sem que haja sobrecarga no sistema. Métodos: Com o sistema sendo divido em pequenos serviços independentes, haveria menos tempo de indisponibilidade da aplicação quando fosse necessário realizar manutenção no sistema, já que a manutenção seria em um ou vários serviços, sendo apenas o(s) serviço(s) em manutenção que seria(m) afetado(s), ou seja, o resto da aplicação, os demais serviços, continuaria funcionando. Os microsserviços não consistem apenas em dividir a aplicação, um ponto importante ao criar uma aplicação baseada em microsserviços é a maneira de integrar os microsserviços. É necessário que todos esses componentes do sistema, consigam se relacionar para trabalhar os dados da aplicação da maneira correta. É definida uma interface padrão no sistema, para que haja a comunicação, onde tal comunicação pode ocorrer de duas formas, assíncrona ou síncrona. Resultados: Além de dividir a aplicação em pequenos serviços, pode-se utilizar essa estratégia para a base de dados, cada serviço pode ter uma base de dados específica, seja ela relacional ou não relacional. Isso traz benefícios para a aplicação como diminuir a complexidade de integração de interfaces de comunicação, há mais segurança em relação aos dados. Outro ponto positivo na utilização de estruturas independentes, é a utilização de diversas linguagens de programação e banco de dados, desde que eles consigam se integrar a interface de comunicação padronizada. Contudo, nem tudo possui apenas pontos negativos, há um custo para manter esse modelo, já que a comunicação desses serviços independentes, é realizada através da rede, ou seja, é preciso investir em infraestrutura de rede, para que a latência da rede não prejudique na comunicação. Conclusão/Considerações finais: Como o cenário da tecnologia possui inúmeras maneiras de se resolver um problema qualquer, o intuito do trabalho foi mostrar uma, dentre tantas alternativa para desenvolver aplicações com um pouco mais de complexidade, de maneira organizada e segura, introduzindo o conceito de microsserviços e basicamente como funciona CONEXÃO UNIFAMETRO 2020 XVI SEMANA ACADÊMICA ISSN: 2357-8645 sua implementação. Contudo, cada caso é um caso, é necessário estudar bem o cenário do seu software, a fim de escolher o melhor caminho para o desenvolvimento. Essa escolha poupará recursos, podendo evitar o aumento de custo e prazo do desenvolvimento. Palavras-chave: Microsserviços, monolítica, síncrona e assíncrona. Referências: NAMIOT, Dmitry; SNEPS-SNEPPE, Manfred. On micro-services architecture. International Journal of Open Information Technologies, v. 2, n. 9, p. 24-27, 2014. RODRIGUES, Julia Leoncio; PINTO, Giuliano Scombatti. ANÁLISE DA ARQUITETURA DE MICROSERVIÇOS. 2019. PELISSARI, William Roberto et al. Microserviços como alternativa de arquitetura monolítica. Revista de Pós-Graduação do Centro Universitário Cidade Verde, v. 3, n. 2, 2017. CARVALHO, Lucas Silva Pedatela; ANJOS, Matheus César Lopes dos. Impacto dos padrões arquiteturais de Micro Serviço e Monolítico no desenvolvimento de softwares. 2017.