Name: | Description: | Size: | Format: | |
---|---|---|---|---|
5.29 MB | Adobe PDF |
Authors
Advisor(s)
Abstract(s)
Over the course of the last ten years, web applications have stood out as the go to when it comes to software development, replacing the traditional desktop apps. As a result of this, customer demand has been on the rise, leaving companies with their hands full as they try to meet expectations. In the year 2011, the world was introduced to the concept of Microservices, which came to revolutionize the software development industry by splitting typical backend monolithic codebases into smaller, more manageable chunks that were able to be developed, deployed and tested independently. This in turn facilitated customer deliveries as it opened the door to iterative and incremental developments, preventing customers from having to wait months, or even sometimes years, to receive a fully functional product since they could now be handed constant updates in time periods as short as 15 days. However, even though this expedited today’s backend developments, a web application is not only composed by a server-side layer, but also a client-side one. Today’s application frontends still rely on the traditional monolithic architecture which presents the same issues that backend developments once did and, due to the ever-increasing popularity of the online world, these types of solutions have been growing massively and escalating those problems. By having these architectural discrepancies between frontend and backend codebases, iterative and incremental software developed can never be fully realized as all microservices still depend on the same monolithic frontend. This is where Micro Frontends come in. The concept behind this model is to take the teachings microservices provided and expand them to the client-side. By organizing applications into several components, each with its respective business sub-domain, vertical teams can then be assembled and take full ownership of said sub-domain, ultimately implementing the component from end-to-end. Since a Micro Frontend based architecture is still a somewhat recent concept, information is lacking and makes the assessment of its viability hard to reach. As such, this dissertation aims to study its feasibility by studying and comparing possible alternatives, ultimately describing its advantages and disadvantages, and finally presenting a proof-of-concept application.
Ao longo dos últimos dez anos, as aplicações web têm-se destacado no que diz respeito ao desenvolvimento de software, substituindo as aplicações desktop tradicionais. Consequentemente, a quantidade de clientes neste mercado tem vindo a aumentar, deixando as empresas com dificuldades ao tentar atender às expectativas. Em 2011, o mundo tecnológico foi apresentado ao conceito de Microsserviços, o qual veio revolucionar a indústria de desenvolvimento de software ao dividir soluções monolíticas em peças de menor dimensão e mais facilmente geridas que possibilitaram os processos de desenvolvimento, implantação e teste de forma independente. Deste modo os microserviços permitiram a adoção de desenvolvimentos iterativos e incrementais, que por sua vez vieram evitar morosas esperas por parte dos clientes para receber o seu produto desejado em troca de entregas de, por exemplo, 15 em 15 dias (a duração por defeito de um sprint na maioria das metodologias de desenvolvimento de software ágeis). No entanto, embora isso tenha acelerado o desenvolvimento de código relativo ao backend, uma aplicação web não é composta apenas por uma camada do lado do servidor, mas também do lado do cliente. Atualmente, o desenvolvimento de aplicações de frontend tende a utilizar uma arquitetura monolítica tradicional, a qual apresenta os mesmos problemas que os desenvolvimentos de backend anteriormente apresentavam. Devido ao aumento de popularidade das aplicações web, essas mesmas soluções monolíticas têm crescido exponencialmente, agravando os problemas. Com as discrepâncias arquiteturais entre projetos de frontend e backend, o conceito de desenvolvimento de software iterativo e incremental nunca pode ser cumprido na totalidade, pois todos os microsserviços implementados dependem do mesmo frontend monolítico. Para solucionar os problemas supramencionados, surgiu o conceito de Micro Frontends. O principal propósito da arquitetura de Micro Frontends é aplicar os conceitos providenciados pelos microsserviços e expandi-los para o lado do cliente. Ao organizar as soluções em vários componentes, cada um com seu respectivo subdomínio do negócio da aplicação, torna-se possível a criação de equipas verticais, as quais assumem controlo total do referido subdomínio, implementando o componente de ponta a ponta. Visto que uma arquitetura de Micro Frontends ainda é um conceito relativamente recente, avaliar a sua fiabilidade torna-se uma tarefa difícil. Deste modo, esta dissertação procura estudar este modelo e comparar as diferentes alternativas de implementação, descrevendo as suas vantagens e desvantagens e, por fim, apresentando uma prova de conceito.
Ao longo dos últimos dez anos, as aplicações web têm-se destacado no que diz respeito ao desenvolvimento de software, substituindo as aplicações desktop tradicionais. Consequentemente, a quantidade de clientes neste mercado tem vindo a aumentar, deixando as empresas com dificuldades ao tentar atender às expectativas. Em 2011, o mundo tecnológico foi apresentado ao conceito de Microsserviços, o qual veio revolucionar a indústria de desenvolvimento de software ao dividir soluções monolíticas em peças de menor dimensão e mais facilmente geridas que possibilitaram os processos de desenvolvimento, implantação e teste de forma independente. Deste modo os microserviços permitiram a adoção de desenvolvimentos iterativos e incrementais, que por sua vez vieram evitar morosas esperas por parte dos clientes para receber o seu produto desejado em troca de entregas de, por exemplo, 15 em 15 dias (a duração por defeito de um sprint na maioria das metodologias de desenvolvimento de software ágeis). No entanto, embora isso tenha acelerado o desenvolvimento de código relativo ao backend, uma aplicação web não é composta apenas por uma camada do lado do servidor, mas também do lado do cliente. Atualmente, o desenvolvimento de aplicações de frontend tende a utilizar uma arquitetura monolítica tradicional, a qual apresenta os mesmos problemas que os desenvolvimentos de backend anteriormente apresentavam. Devido ao aumento de popularidade das aplicações web, essas mesmas soluções monolíticas têm crescido exponencialmente, agravando os problemas. Com as discrepâncias arquiteturais entre projetos de frontend e backend, o conceito de desenvolvimento de software iterativo e incremental nunca pode ser cumprido na totalidade, pois todos os microsserviços implementados dependem do mesmo frontend monolítico. Para solucionar os problemas supramencionados, surgiu o conceito de Micro Frontends. O principal propósito da arquitetura de Micro Frontends é aplicar os conceitos providenciados pelos microsserviços e expandi-los para o lado do cliente. Ao organizar as soluções em vários componentes, cada um com seu respectivo subdomínio do negócio da aplicação, torna-se possível a criação de equipas verticais, as quais assumem controlo total do referido subdomínio, implementando o componente de ponta a ponta. Visto que uma arquitetura de Micro Frontends ainda é um conceito relativamente recente, avaliar a sua fiabilidade torna-se uma tarefa difícil. Deste modo, esta dissertação procura estudar este modelo e comparar as diferentes alternativas de implementação, descrevendo as suas vantagens e desvantagens e, por fim, apresentando uma prova de conceito.
Description
Keywords
Web Applications Micro Frontends Microservices Architecture Aplicações Web Microsserviços Arquitetura Desenvolvimento de Software