Summary: | A constante evolução tecnológica associada ao desenvolvimento de software tem cada vez mais levado a alterações significativas relativamente aos processos utilizados de forma a atingir os objetivos propostos. É cada vez maior o número de ferramentas e tecnologias que permitem não só facilitar a execução de tarefas repetitivas, mas também acelerar o tempo que as leva a realizar. Este trabalho é realizado em contexto empresarial (Critical Techworks) e nele são abordados os principais processos utilizados durante o desenvolvimento de software de um conjunto de aplicações de gestão interna da empresa. São apresentadas soluções para a automatização dos mesmos de forma a reduzir o tempo desperdiçado na sua execução e estudadas e avaliadas as tecnologias a utilizar durante o processo de desenvolvimento. É também efetuada uma proposta daquela que apresenta os maiores benefícios tendo em conta o contexto em que este trabalho se insere. Associados aos processos, muitas vezes as decisões tomadas relativamente aos estilos arquiteturais a utilizar são executadas precipitadamente dada a popularidade que os mesmos podem tomar. Dada a constante evolução arquitetural, cada vez mais é visto como uma boa prática a utilização de uma arquitetura orientada a microsserviços. Esta popularidade deve-se não só por esta apresentar um conjunto de vantagens quando comparada com outros estilos arquiteturais, mas também por, paralelamente, se assistir progressivamente a uma implantação de aplicações na cloud. Embora tipicamente considerada como uma arquitetura superior, quando comparada, por exemplo, com a arquitetura monolítica, variáveis como o contexto, maturidade da equipa desenvolvimento e vantagens/desvantagens associadas a ambas devem ser ponderadas. Posto isto, neste documento ambos os estilos arquiteturais são estudados, assim como os conceitos relacionados. Através da integração com um caso prático real, propostas de decomposição de um sistema monolítico são identificadas e é estudada uma possível migração para uma arquitetura orientada a microsserviços. Conceitos como automatização de processos existentes, melhorias na qualidade do código, aplicação de boas práticas de desenvolvimento de software e o estudo de tecnologias a utilizar são abordados em conjunto com o estudo realizado, de forma a assegurar que problemas existentes no sistema atual são eliminados.
|