• Nenhum resultado encontrado

5 DESENVOLVIMENTO E VALIDAÇÃO DA PROPOSTA

5.3 SOLUÇÃO PROPOSTA

5.3.1 Análise e questionário

Uma das maiores vantagens da arquitetura proposta é a agilidade. Devido ao fator de que toda a implementação é orientada a funções altamente desacopladas, se tem uma capacidade de responder rapidamente a um ambiente em constante mudanças.

A facilidade de implantação é outro ponto positivo, pois isso é relativamente fácil de se alcançar devido a natureza dissociada das funções do processador de eventos. Outro ponto muito importante é a performance, embora seja certamente possível implementar uma arquitetura orientada a eventos que não tenha um bom desempenho devido a toda a infraestrutura de mensagens envolvida, em geral, o padrão alcança alto desempenho por meio de seus recursos assíncronos, em outras

palavras, a capacidade de executar operações assíncronas paralelas e dissociadas supera o custo de enfileirar e desenfileirar mensagens.

Alta escalabilidade é alcançada naturalmente nesse padrão por meio de processadores de eventos altamente independentes e dissociados. Cada processador de evento pode ser dimensionado separadamente, permitindo uma escalabilidade refinada.

Não se deve considerar a arquitetura proposta como solução para todos os problemas, pois ela também tem suas desvantagens, como a testabilidade, embora o teste de unidade individual não seja muito difícil, ele exige algum tipo de cliente ou ferramenta de teste especializada para gerar eventos. O teste também é complicado pela natureza assíncrona desse padrão. A dificuldade no desenvolvimento é um outro ponto a se considerar, o desenvolvimento pode ser um pouco complicado devido à natureza assíncrona do padrão, bem como à criação de contratos e à necessidade de condições mais avançadas de tratamento de erros no código para processadores de eventos que não respondem e agentes com falha.

Para garantir a conformidade das informações levantadas nesta monografia é aplicado um questionário com profissionais da área que tem um alto nível de conhecimento em desenvolvimento de software.

A seção a seguir transcreve o resultado dessa pesquisa. 5.3.1.1 Questionário

Para avaliar o uso e complementar os pontos positivos e negativos da arquitetura, foi elaborado um questionário no Google Forms. Esse formulário foi enviado para pessoas selecionadas com alto nível de experiência em desenvolvimento de software web, dentro do ambiente de desenvolvimento da empresa de um dos autores dessa monografia.

O questionário foi elaborado com 7 perguntas, ficou disponível por 2 dias e recebeu um total de 14 respostas.

A pergunta 01 do questionário, segundo a figura 36, é a seguinte: "Você já desenvolveu aplicações web? SaaS".

Figura 38 - Pergunta 01 do questionário

Fonte: Os autores (2019)

A pergunta 01 obteve 92.9% de respostas na opção "Sim" e 7.1% na opção "Não".

A pergunta 02 do questionário, segundo a figura 37, é a seguinte: "Você atua na área de desenvolvimento de software a quanto tempo?"

Figura 39 - Pergunta 02 do questionário

A pergunta 02 obteve 42.9% das respostas na opção "Entre 5 anos e 10 anos", 35.7% das respostas na opção "Mais de 10 anos" e 21.4% das respostas na opção "Entre 1 ano e 5 anos".

As próximas perguntas do questionário se referem a opinião profissional com base em experiências dos desenvolvedores com a proposta apresentada nesta monografia.

A pergunta 03 do questionário, conforme a figura 38, se refere a "O quanto você conhece sobre Serverless?".

Figura 40 - Pergunta 03 do questionário

Fonte: Os autores (2019)

A pergunta 03, obteve 21.4% de respostas na opção "Já utilizei em projetos de teste", 42.9% de respostas na opção "Já utilizei em projetos em produção" e 35.7% de respostas na opção "Já ouvi falar mas nunca utilizei".

A pergunta 04 do questionário, conforme figura 39, é a seguinte: "O quanto você conhece sobre AWS Lambda?".

Figura 41 - Pergunta 04 do questionário

Fonte: Os autores (2019)

A pergunta 04, obteve 42.9% das respostas na opção "Já ouvi falar mas nunca utilizei", 42.9% na opção "Já utilizei em projetos em produção" e 14.3% de respostas na opção "Já utilizei em projetos de teste".

A pergunta 05 do questionário, conforme figura 40, se refere a "Testar uma função lambda é:"

Figura 42 - Pergunta 05 do questionário

A pergunta 05, obteve 35.7% das respostas na opção "Fácil", 14.3% das respostas na opção "Muito fácil", 42.9% das respostas na opção "Não sei dizer" e 7.1% de respostas na opção "Difícil".

A pergunta 06 do questionário, conforme figura 41, se refere a "Você utilizaria Serverless em seus projetos?".

Figura 43 - Pergunta 06 do questionário

Fonte: Os autores (2019)

A pergunta 06, obteve 57.1% de respostas na opção "Sim", 7.1% de respostas na opção "Não sei dizer", 28.6% de respostas na opção "Talvez".

A pergunta 07 do questionário, conforme figura 42, e refere a "Você utilizaria Serverless para estruturar uma aplicação web (SaaS) inteira?".

Figura 44 - Pergunta 07 do questionário

Fonte: Os autores (2019)

A pergunta 07, obteve 57.1% das respostas na opção "Talvez", 14.3% das respostas na opção "Não", 14.3% das respostas na opção "Não sei dizer" e 14.3% das respostas na opção "Sim".

6 CONCLUSÃO

Neste capítulo, é apresentado a conclusão do projeto deste trabalho, a partir da visão dos integrantes do projeto. Também será apresentado os trabalhos futuros que podem ser desenvolvidos utilizando os conceitos apresentados neste trabalho. 6.1 CONCLUSÕES

Aderir a arquitetura serverless no processo de desenvolvimento de uma aplicação web pode tornar-se difícil sem uma etapa de investigação e modelagem da solução que se busca. A AWS possui uma estrutura completa para auxiliar em todo o processo de construção, execução, implantação e monitoramento.

Perante a possibilidade de se construir uma arquitetura serverless que dê suporte a uma aplicação web comum de maneira concisa, os integrantes deste projeto propuseram-se a demonstrar de forma teórica e prática os recursos oferecidos pelas ferramentas que a AWS disponibiliza, possibilitando a elaboração de uma arquitetura serverless para aplicações web.

Ao longo da pesquisa desta monografia foram analisados diversos pontos de grande relevância sobre a arquitetura em questão, tais como: Estado, Duração da execução de uma função, Latência de inicialização, Custo operacionais, Custos de escalonamento, Chamadas ocasionais, Tráfego, Otimização, etc. Desta forma cumprindo o objetivo de identificar as principais características da arquitetura

serverless baseado em eventos, desta monografia.

Foi definido um tema básico para o desenvolvimento do protótipo: Lista de afazeres. O domínio escolhido é conhecido pela comunidade de desenvolvimento de software como o MVP (produto viável mínimo) de validação simples de ferramentas, linguagens e arquiteturas.

Considerando que intenção desta monografia foi propor uma arquitetura

serverless para aplicações web, pode-se concluir que o desenvolvimento de um

protótipo funcional de uma lista de afazeres é o suficiente para cumprir com este objetivo específico desta monografia.

Para validar a arquitetura proposta nesta monografia, foi necessário desenvolver um protótipo funcional que efetuasse as funções básicas de uma lista de afazeres: Cadastrar, Listar, Editar e Remover. Foram analisados vários critérios durante o desenvolvimento e com isso, concluído que antes de desenvolver uma aplicação web com uma estrutura serverless, é necessário planejar, mapear as possíveis features e buscar uma visão do futuro a longo prazo da mesma. As funções lambdas publicadas na AWS são altamente escaláveis, fáceis de

implementar e de realizar manutenção, mas assim como todas as outras tecnologias e estratégias atuais no mercado, a arquitetura serverless não deve ser considerada uma bala de prata.

Por fim, foi realizado uma avaliação e análise feita via questionário com profissionais da área. Foi aplicado o questionário para 14 entrevistados durante 2 dias. Com a aplicação deste questionário é possível levantar informações relevantes e complementares sobre a arquitetura proposta.

A utilização de serverless em aplicações web é uma opção cogitada por 93% dos entrevistados, porém apenas 15% destes utilizariam serverless para estruturar uma aplicação web por inteira, sendo que 57.1% não deram certeza no assunto.

A testabilidade de funções Lambda se provou como sendo fácil para 50% dos entrevistados, sendo que 42.9% ainda não tem conhecimento suficiente para opinar.

As respostas da pesquisa também comprovam que a maioria dos entrevistados conhece e entende sobre serverless, mas ainda não colocaram código em produção utilizando essa arquitetura. Comparando os resultados da pesquisa e combinando com os pontos importantes apresentados nesta monografia, pode-de concluir que a arquitetura serverless supre a necessidade de qualquer aplicação web mas não deve ser considerada como a melhor escolha sem um estudo prévio da aplicação final proposta.

Assim, foi atingido todos os objetivos desta monografia. 6.2 TRABALHOS FUTUROS

Visto os bons resultados obtidos com a arquitetura proposta, os integrantes deste projeto pretendem aprofundar ainda mais seus conhecimentos com Serverless utilizando a AWS.

Existe também a necessidade de aplicar uma camada de segurança nas chamadas HTTPS ao API Gateway, executar testes de carga, além da implementação de testes de integração. Outro ponto importante seria definir uma pipeline de entrega e deploy contínuo para as funções para obter uma facilidade ainda maior de implantação.

REFERÊNCIAS

BERTOLETI, Pedro. Arquitetura de software em camadas para iniciantes. Disponível em: https://www.embarcados.com.br/arquitetura-de-software-em- camadas/. Acesso em: 29 Mai. 2019.

BOAVENTURA, Edivaldo M. Metodologia da Pesquisa: Monografia, dissertação, tese. São Paulo: Atlas, 2004. 160 p.

CLOUDFLARE. Why use Serverless Computing?: Pros and Cons of Serverless. Disponível em: https://www.cloudflare.com/learning/serverless/why-use-serverless/. Acesso em: 13 Abr. 2019.

DEUTSCH, Daniel. Introducing Amazon Web Services (AWS). Disponível em: Introducing Amazon Web Services (AWS). Acesso em: 1 Nov. 2019.

DEUTSCH, Daniel. Introducing Amazon Web Services. Disponível em: https://medium.com/createdd-notes/introducing-amazon-web-services-aws- 72c12547b9ff. Acesso em: 1 Nov. 2019.

FIGUEIREDO, Elaine G. M. de. Arquiteturas de sistemas Web 3.0. 2013. Disponível em: https://www.devmedia.com.br/arquiteturas-de-sistemas-web-3- 0/29381. Acesso em: 13 Abr. 2019.

FILHO, José. Pe. M. O desafio da pesquisa. Franca. Dissertação (FHDSS) - Universidade Estadual Paulista Júlio de Mesquita Filho, 2006.

FONSECA, J. J. S. Metodologia da pesquisa científica. UEC. Fortaleza, 2002. 127 p. Disponível em: academia.edu. Acesso em: 8 Mai. 2019.

FRANZINI, Fernando. O que são microservices?. 2017. Disponível em:

https://imasters.com.br/desenvolvimento/o-que-sao-microservices. Acesso em: 29 Mai. 2019.

GERTEL, Lucas. Padrões de Arquitetura Web: Monolítica ou Micro Serviços?. 2019. Disponível em: https://medium.com/@lgertel/padrões-de-arquitetura-web- monolítica-ou-micro-serviços-7b3f0c9394fe. Acesso em: 13 Abr. 2019.

GIL, Antônio Carlos. Métodos e técnicas de pesquisa social. 6. ed. São Paulo: Atlas, 2008. 216 p.

GUEDES, Gilleanes T. A. UML 2: Uma Abordagem Prática. 1. ed. São Paulo: NovaTec, 2009. 488 p.

HAQ, Siraj Ul. Introduction to Monolithic Architecture and MicroServices Architecture. 2018. Disponível em: https://medium.com/koderlabs/introduction-to- monolithic-architecture-and-microservices-architecture-b211a5955c63. Acesso em: 30 Abr. 2019.

KUBELESS. Disponível em: https://kubeless.io/. Acesso em: 16 Jun. 2019.

LAKATOS, E. M; MARCONI, M. A. Fundamentos da Metodologia Científica. São Paulo: Atlas, 1986. 238 p.

LEWIS, James; FOWLER, Martin. Microservices: a definition of this new architectural term. Disponível em:

https://martinfowler.com/articles/microservices.html. Acesso em: 13 Abr. 2019. MARTIN, Robert C. Clean Architecture: A Crafstman's Guide to Software Structure and Design. Prentice Hall, 2017. 432 p.

MEDEIROS, Higor. Introdução ao Padrão MVC. 2013. Disponível em:

https://www.devmedia.com.br/introducao-ao-padrao-mvc/29308. Acesso em: 29 Mai. 2019.

MENDES, Antonio. Arquitetura de Software: Desenvolvimento orientado para arquitetura. Disponível em: https://www.devmedia.com.br/arquitetura-de-software- desenvolvimento-orientado-para-arquitetura/8033. Acesso em: 22 Abr. 2019. ROBERTS, Mike. Serverless architectures. 2018. Disponível em:

https://martinfowler.com/articles/serverless.html. Acesso em: 13 Abr. 2019.

RODRIGUES DA SILVA, Alberto Manuel. UML, Metodologias e Ferramentas. Porto - Lisboa. Portugal: Centro Atlântico, 2001. 578 p.

RV, Rajesh. Spring Microservices. LiveryPlace: Packt Publishing Ltd, 2016. SERVERLESS. Disponível em: https://serverless.com. Acesso em: 16 Jun. 2019. SILVA, Edna Lúcia da. Metodologia da pesquisa e elaboração de dissertação. Florianópolis: UFSC, 2005. 138 p.

SOMMERVILLE, Ian. Engenharia de Software. 9. ed. São Paulo: Pearson Prentice Hall, 2011.

UML DIAGRAMS. UML 2.5 Diagrams Overview. Disponível em: https://www.uml- diagrams.org/uml-25-diagrams.html. Acesso em: 19 Out. 2019.

Documentos relacionados