Escolar Documentos
Profissional Documentos
Cultura Documentos
Natal-RN
Agosto/2018
Yan de Lima Justino
Brasil
2018
Universidade Federal do Rio Grande do Norte - UFRN
Sistema de Bibliotecas - SISBI
Catalogação de Publicação na Fonte. UFRN - Biblioteca Central Zila Mamede
Brasil
2018
Este trabalho é dedicado a minha amada esposa Andréia M. Sakakima e a meu amado
filho Pedro Sakakima Justino,
pelo apoio incondicional e compreensão diante do irreparável vazio causado pela ausência.
AGRADECIMENTOS
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1 Problemática e Motivação . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 Organização do Documento . . . . . . . . . . . . . . . . . . . . . . . 19
2 REFERENCIAL TEÓRICO . . . . . . . . . . . . . . . . . . . . . . . 20
2.1 Orientação a serviço, SOA e MSOAM . . . . . . . . . . . . . . . . . 20
2.2 Reengenharia de Software . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Microsserviços e DevOps . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4 PROCESSO SPREAD . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1 Visão Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Extração do Processo . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.3 Comunicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.1 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.2 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3.3 Práticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4 Planejamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4.1 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4.2 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.4.3 Práticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.5 Modelagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5.1 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.5.2 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.5.3 Práticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.6 Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6.1 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.6.2 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.6.3 Práticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.7 Implantação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.7.1 Atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.7.2 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.7.3 Práticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.8 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6 AVALIAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.1 Resultados da Reengenharia de Software aplicada ao Sistema UVT 71
6.2 Resultados da adoção de SOA . . . . . . . . . . . . . . . . . . . . . . 74
7 TRABALHOS RELACIONADOS . . . . . . . . . . . . . . . . . . . . 77
7.1 Migração de Sistemas Legados . . . . . . . . . . . . . . . . . . . . . . 77
7.2 Aplicação de SOA em contextos de Governo eletrônico (e-gov) . . . 78
7.3 Uso de MSOAM como metodologia para projetos SOA . . . . . . . 80
7.4 O uso de microsserviços . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.5 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.1 Contribuições e Resultados Alcançados . . . . . . . . . . . . . . . . . 82
8.2 Limitações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.3 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
14
1 INTRODUÇÃO
1.2 Objetivos
O objetivo geral deste trabalho é definir um processo de Reengenharia de Software
aplicado a sistemas legados para apoiar a implantação de projetos SOA. Esse processo foi
Capítulo 1. Introdução 17
1.3 Metodologia
Dada a complexidade e abrangência que envolve um processo de Reengenharia de
Software, bem como a necessidade de realizar a pesquisa no ambiente de sua aplicação, a
metodologia adotada para a condução desta pesquisa foi a Pesquisa-ação. Essa escolha
se deu pela necessidade de definição de um processo de reengenharia de sistemas legados,
com alto endividamento técnico, para uma arquitetura orientada a serviços baseada em
microsserviços, dentro de um processo interativo de investigação.
Como ilustrado na Figura 1, a pesquisa foi iniciada com a Escolha do referencial
teórico. Nessa fase foram aplicadas a coleta e a leitura de textos da base teórica dos
estudos relacionados a SOA, Reengenharia de Software e DevOps, detalhados no capítulo
2 . Já a Aplicação do caso foi marcada inicialmente pela execução de um processo ad
hoc, cuja finalidade foi a identificação de um processo mais organizado. O resultado disso
foi a extração de um processo denominado SPReaD, que foi refinado e documentado
durante as iterações.
Os artefatos gerados durante as iterações do processo SPReaD, foram coletados
e organizados em duas categorias: artefatos de concepção e criação, e artefatos de mo-
nitoramento. Essa divisão serviu para direcionar a fase de Avaliação na identificação
de resultados qualitativos, bem como quantitativos. Por fim, a fase de Divulgação foi
Capítulo 1. Introdução 18
mostrou uma atividade fundamental na iteração da metodologia, uma vez que os feedbacks
obtidos eram retro-alimentados na Aplicação do caso, colaborando inicialmente no
refinamento do processo e posteriormente na sua formalização.
2 REFERENCIAL TEÓRICO
Reusabilidade: “os serviços que contêm e expressam uma lógica agnóstica, possam ser
posicionados como recursos empresariais reutilizáveis” (ERL, 2008, p. 258);
Autonomia: “os serviços exercem um alto nível de controle sobre seu ambiente e do tempo
Capítulo 2. Referencial Teórico 21
Descoberta:, “os serviços são complementados com metadados comunicativos pelos quais
eles podem ser efetivamente descobertos e interpretados” (ERL, 2008, p. 368);
Para entregar serviços baseados nos princípios da Orientação a Serviço, é preciso uma
arquitetura tecnológica com características distintas, capaz de acomodar comportamentos
e requisitos que possibilitem alcançar as metas da Computação Orientada a Serviço (ERL
et al., 2014). Para Erl (ERL et al., 2014, p. 13), esta arquitetura “é a Service-oriented
architecture”(SOA), que segundo o autor, “pode existir em quatro escopos ou níveis
diferentes de implementação, sendo que alguns níveis abrangem os outros” (ERL et al.,
2014, p. 15), como ilustra a Figura 2.
Segundo Erl (ERL et al., 2014), esses escopos ou níveis de implementação são
classificados como: Arquitetura de Serviço, que representa a arquitetura de um único
serviço; Arquitetura de Composição de Serviço, que é a arquitetura de um conjunto de
serviços relacionados através de em uma composição; Arquitetura de Inventário de Serviço,
que apoia uma coleção de serviços co-relatos e que são padronizados e gerenciados de forma
independente;e Arquitetura de Empresa Orientada a Serviço que representa a arquitetura
da empresa em si, em qualquer extensão que seja orientada a serviços.
Esta arquitetura requer a compreensão de como projetos SOA bem-sucedidos de-
vem ser conduzidos (ERL; MERSON; STOFFERS, 2017, p. 91). Nessa linha, A MSOAM
(Mainstream SOA Methodology) é um modelo de referência idealizado para proporcionar a
realização de projetos SOA. Como ilustra a Figura 3, essa metodologia é composta por
um conjunto comum de etapas que fazem a transição da concepção de serviços para a
implementação e para a evolução, através de um ciclo de vida pré-definido (ERL; MERSON;
STOFFERS, 2017). As etapas do projeto desse ciclo de vida são as seguintes:
Teste de Serviço: “Os serviços precisam passar pelos mesmos tipos de ciclos de teste
e garantia de qualidade que os aplicativos tradicionais personalizados. No entanto, além
disso, há novos requisitos que introduzem a necessidade de métodos e esforços de teste
adicionais” (ERL; MERSON; STOFFERS, 2017, p. 103).
De acordo com Erl (ERL; MERSON; STOFFERS, 2017), esta metodologia ofe-
rece um conjunto de processos genéricos e práticas que quase sempre requerem maior
customização quando incorporadas a ambientes corporativos.
Continuous Delivery (CDE): prática adotada para a garantir que um aplicativo esteja
sempre em estado preparado para a produção depois de passar com êxito por testes
automatizados e controles de qualidade; Continuous Deployment (CD): prática de
implantação contínua dá um passo adiante e implanta de forma automática e contínua o
aplicativo para ambientes de produção. É importante notar que a prática de CD implica
na prática de CDE, mas a inversa não é verdadeira.
Como ilustrado na Figura 5, a relação dessas práticas contínuas inicia-se com o time
de desenvolvimento realizando commits na base de código. Essa ação notifica o servidor de
CI que executa o build e os testes automatizados da aplicação. Em seguida, as etapas de
CDE e CD são executadas para preparar pacotes de software para a entrega e implantá-los
em ambiente de produção. Os resultados de cada etapa são notificados para o time de
desenvolvimento.
Na indústria, estas práticas contínuas são rotuladas como DevOps, que de acordo
com Bass (BASS; WEBER; ZHU, 2015, p. 4), “é um conjunto de práticas destinadas a
reduzir o tempo entre executar uma alteração em um sistema e a mudança ser colocada em
produção, garantindo ao mesmo tempo alta qualidade”. Ainda para Bass (BASS; WEBER;
ZHU, 2015, cap. 7) associa-se às práticas contínuas do DevOps o Monitoramento, que
fornece identificação de falhas, identificação da degradação do desempenho, o planejamento
das capacidades de recursos, identificação da dinâmica do negócio e detecção de intrusão.
Essas práticas em conjunto ajudam a moldar as decisões tomadas sobre como construir
microserviços e como implantá-los.
Sendo assim, os benefícios associados a adoção de Microsserviços e DevOps são a
construção de serviços que apresentam heterogeneidade de tecnologias, resiliência, escala,
fácil implantação, alinhamento organizacional, passividade de composição, e substituibili-
Capítulo 2. Referencial Teórico 27
que permitia a comunicação irrestrita entre os componentes; b) todo o sistema era executado
em um único nó de processamento (Single thread); c) havia um acúmulo de múltiplas
responsabilidades como a renderização da camada de apresentação, controle de estado dos
objetos complexos, longos processamentos (síncronos) em background, processamento de
lógicas de negócio, acesso a banco de dados e outros componentes de infraestrutura, como
ilustra a Figura 6.
As escolhas realizadas para o desenvolvimento dessa estrutura trouxeram algumas
consequência como: a implantação de um novo serviço ou uma nova versão exigia a re-
distribuição da solução por inteiro; ajustes nos parâmetros de aplicação forçavam a
reinicialização do sistema para atualizações das configuração; uma baixa esca-
labilidade, uma vez que o sistema foi construído para ser executado em uma única thread
de processamento e seu controle de estado de sessão não foi projetado para funcionar de
forma distribuída; efeitos colaterais indesejados em serviços que não foram alterados
devido a manutenções em áreas comuns do sistema; o baixo desempenho ocasionado
pelo uso indiscriminado de alguns recursos do Framework web como o uso gerenciável
de sessão para guarda de objetos muito complexos por muito tempo; por fim, o alto
acoplamento pela ausência de isolamento da lógica do serviço ocasionada pelo mal uso de
ferramentas baseada em conceito RAD (Rapid Application Development), o que permitia
Capítulo 3. Migração do sistema UVT 30
4 PROCESSO SPREAD
é importante que se trace estratégias para que ele atinja as metas de qualidade desejadas,
bem como sua dívida técnica seja diminuída e passe a ser gerenciada continuamente. Para
isso, o SPReaD estabelece um conjunto de medidas: Adotar a Orientação a serviço
como paradigma capaz guiar a Reengenharia de Software na identificação e modelagem de
serviços a partir da engenharia reversa do sistema legado. Aplicar Reengenharia de
Software para decompor o sistema monolítico em pequenos componentes de serviço de fácil
manutenção, maior autonomia, reuso e capacidade de compor modernas soluções orientadas
a serviço; Adotar práticas contínuas para melhorar a qualidade de implantação e
monitoramento do sistema. As medidas antes descritas podem ser observadas na Figura 9.
Além disso, é preciso que hajam elementos táticos que indiquem como proceder
para migrar sistemas monolíticos legados para uma solução orientada a serviço. Nesse
sentido, o SPReaD adota os padrões do catálogo SOA para estruturar inventários de
serviço afim de construir soluções utilizando tanto abordagens clássicas de SOA como
Enterprise Service Bus (ESB), ou abordagens mais recentes como microsserviços.
Em resposta a um cenário no qual serviços necessitam de mais autonomia no
desenvolvimento e implantação - para satisfazer as exigências das mudanças de negócio
cada vez mais dinâmicas - as abordagems escolhidas foram a de microsserviços, DevOps e
Domain-Driven Design (DDD) (EVANS, 2003). A definição do que venha ser um serviço
“micro” na visão do SPReaD aqui é estabelecido pelos conceitos de Contextos Delimitados
(Bounded Context) (EVANS, 2003) definidos dentro de um Inventário de Serviço, o que
será demonstrado nas práticas relacionadas as atividades do processo.
Capítulo 4. Processo SPReaD 37
Direta pela geração de código e testes necessários para migrar as funcionalidades do sistema
legado e as encapsular em novas estruturas.
A fase de Implantação, está dividida em duas partes: na primeira são executadas
as atividades de Implantação e Manutenção de Serviço, responsáveis pela entrega de
software como entidade completa ou como incremento. Essa fase está associada às práticas
contínuas do DevOps. Em seguida, a etapa de Suporte e Feedback é conduzida pelas
atividades de Uso e Monitoramento de Serviço, Descoberta de Serviço e Versio-
namento e Retirada de Serviços, respectivamente para realização do monitoramento
contínuo dos serviços e infraestrutura, descoberta de serviços em seus inventários, bem
como para identificação da necessidade de alteração na versão do serviço ou sua retirada
de um inventário.
As fases do SPReaD, descritas anteriormente são conduzidas num fluxo de um
processo evolucionário, “um modelo iterativo que possibilita desenvolver versões cada vez
mais completas do software” (PRESSMAN; MAXIM, 2016, p. 45). Nesse fluxo o SPReaD
é aplicado iterativamente executando todas as fases do processo para planejar, modelar,
construir e entregar Inventários de serviços. Nesse sentido, a entrega de um Inventário
determina um escopo de uma ou mais iterações, com cada iteração contribuindo com a
ampliação do blueprint de Inventário de serviços.
Essa visão geral captura a essência do processo SPReaD, aplicado nos últimos anos
para modernizar o sistema UVT. As seções a seguir detalharão as atividades, artefatos e
praticas de cada fase do processo. Ressaltamos que as fases de Comunicação e Planeja-
mento foram executadas dentro de um processo adhoc, antes da formalização do processo
SPReaD em si. Sendo assim, elas estão aqui descritas no intuito de serem registradas como
fases importantes que precisam ser executadas. Já as fases de Modelagem, Construção e
Implantação serão apresentadas com um nível maior de profundidade.
4.3 Comunicação
A comunicação é uma das primeiras fases do processo SPReaD. Nela os requisitos
iniciais do projeto são coletados e documentados no intuito de definir as necessidades para
atingir os objetivos pretendidos pelos stakeholders.
4.3.1 Atividades
Como ilustrado na Figura 12, esta fase executa a atividade da Coleta de Requi-
sitos que inicia-se com a Definição de um Grupo de Foco envolvendo os stakeholders
do projeto para se obter informações, experiências e requisitos iniciais que auxiliem na
fragmentação do problema em partes menores e mais gerenciáveis. Uma vez que o foco do
processo é a reengenharia do sistemas legados, é importante que sejam extraídas métricas
Capítulo 4. Processo SPReaD 40
desse sistema no início do processo de migração para que haja um ponto de comparação
que evidencie se a equipe alcançou ou não seus objetivos de migração.
Nesse sentido, a fase de comunicação do SPReaD adota como métrica o Calculo da
Dívida Técnica Atual do Sistema Legado. Ao Comunicar essa Dívida Técnica
aos stakeholders é fornecido um “retrato” da qualidade atual do sistema legado. O intuito
disso é conscientizar a todos sobre os pontos críticos do sistema e quais as práticas que
devem ser revistas durante o ciclo de desenvolvimento de software. Por fim, os princípios da
Orientação a Serviço são utilizados como referência durante a Definição de Requisitos
Gerais (ver 2.1) para antecipar a identificação de elementos que favoreceram a formalização
de contratos, serviços reutilizáveis e composição.
4.3.2 Artefatos
Um dos artefatos produzidos nessa fase é o Documento de Visão Geral, que
fornece um conjunto de requisitos para executar a migração do sistema legado, bem como
um conjunto de metas e atributos de qualidade a serem alcançados. Além disso, também é
gerado um Relatório da Dívida Técnica, cujo principal objetivo é deixar claro qual é
o ponto de partida da migração, quais são os atributos de qualidade mais comprometidos
e o impacto disso no sistema em sua versão atual.
Capítulo 4. Processo SPReaD 41
4.3.3 Práticas
No intuito de orientar a execução da atividade de Coleta de Requisitos é sugerido
que as reuniões do Grupo de foco busquem a ampliar o foco em problemas de domínio
e não apenas tecnologias. No tocante a Calculo e Comunicação da Dívida Técnica,
recomenda-se o suporte de ferramentas que forneçam avaliação de qualidade de software
com base em padrões e metodologias consolidados de qualidade (ISO, SQALE), bem
como apresente as métricas numa linguagem adaptada para os públicos técnicos e de
negócio. Por fim, na Coleta de Requisitos Gerais recomenda-se utilizar técnicas que
ampliem a compreensão dos requisitos como Class Responsibility Collaboration Cards
(CRC), Prototipagem rápida, Event Storming, Mapas mentais e de impacto, Business
Model Canvas etc 1 .
4.4 Planejamento
Em um processo de migração de sistemas legados para adoção de SOA, é necessário
que haja um plano de migração de software para definir o escopo de análise, os prazos,
os recursos, os produtos resultantes e os riscos envolvidos no projeto. Esse plano, na
perspectiva da equipe de TI, é um guia para organizar o cronograma de desenvolvimento e
implantação, bem como dimensionar quais partes do sistema legado devem ser priorizadas;
na perspectiva dos patrocinadores, o planejamento ajuda a estimar os recursos necessários
para sustentar o projeto.
4.4.1 Atividades
A Figura 13 ilustra a fase de Planejamento executando a atividade de Planeja-
mento de adoção de SOA. Essa atividade ocorre pela definição de escopo de análise,
que se dá pelo isolamento de um conjunto de funcionalidades de sistema com o mesmo con-
texto de domínio; seguida pela definição do produto esperado após a migração. Com base
nesse escopo são definidos os marcos de entrega, os recursos necessários para migrar esse
conjunto de funcionalidades, bem como é mensurado os riscos envolvidos nessa migração.
4.4.2 Artefatos
Para aplicar um plano de migração em um sistema legado com inúmeras funciona-
lidades, o planejamento precisa lidar com questões de longo prazo como um cronograma
geral de projeto, insumos a serem fornecidos, instalações, equipamentos exigidos, local
de execução etc. Para isso, deve ser estipulado uma plano de trabalho com as equipes
de projeto. Esse plano visa oferecer aos patrocinadores uma visão geral do cronograma e
1
Uma leitura rápida destas práticas estão descritas no livro Patterns, principles and practices of
domain-driven design (MILLETT, 2015)
Capítulo 4. Processo SPReaD 42
marcos do projeto, bem como como os recursos disponíveis seriam empregados no projeto.
Uma série de documentos podem compor esse plano como Termos de referência, Atas de
Reunião, Cronogramas de execução, Relatórios, Contratos etc.
Ao mesmo tempo, o projeto de migração precisa lidar com questões mais imedi-
atas como mudança de escopo, conflitos de interesses, adequação de recursos e entregas
incrementais antecipadas. Nesse sentido, deve ser adotado um processo iterativo no qual
planejamentos de curto prazo precisam ser realizado a cada ciclo. O foco desse planejamento
da iteração é organizar e estimar os escopos de trabalho do ciclo, promover um maior foco
no objetivo da entrega, reduzir custos de mudança durante o processo de reengenharia
de software, alinhar a equipes de negócio e de TI, bem como promover entregas mais
frequentes de software. Para realização de um planejamento iterativo, recomenda-se a
adoção de ferramentas para gestão de projetos ágeis para gerenciar a migração do sistema
legado nos ciclos de desenvolvimento.
4.4.3 Práticas
No intuito de orientar a execução da atividade de Plano de adoção de SOA é
sugerido adotar práticas de gestão de projetos para realização do planejamento geral (longo
prazo) e práticas ágeis para realização do planejamento das iterações na fase de execução
Capítulo 4. Processo SPReaD 43
(curto prazo). Além disso, adotar ferramentas que proporcionem tanto a gestão de projetos
de software como o controle do ciclo de vida do desenvolvimento. De modo a manter um
registro do planejamento, recomenda-se utilizar documentos como Termos de referência,
Atas de Reunião, cronogramas de execução, relatórios, cópias de contratos etc.
4.5 Modelagem
Esta fase está relacionada a Análise e Design num contexto da Reengenharia de
Software pela execução das atividades de Análise de Inventário de Serviço e Análise
Orientada a Serviço, para aplicação de Engenharia Reversa; e Design Orientado a
Serviço e Design da Lógica de Serviço, para aplicação de Engenharia Direta.
4.5.1 Atividades
A Figura 14 ilustra o fluxo da execução das atividades da Análise. A Análise de
Inventário de Serviço é responsável pela a definição conceitual de Inventários de Serviço,
a partir da identificação de serviços candidatos fazendo uso de abordagens como Contextos
Delimitados e Mapeamento de Contexto (EVANS, 2003; VERNON, 2013) para auxiliar
na identificação das fronteiras dos componentes de negócio, bem como as estratégias de
composição de serviços.
A Análise Orientada a Serviço consiste na coleta de informações por meio de
técnicas de engenharia reversa, envolvendo análise de código legado e documentação de
software. Como resultado dessa engenharia reversa, uma nova documentação de software
(Diagramas de Classe, Diagramas de Entidade Relacional, Casos de Usos etc) é criada
para suportar o processo de engenharia direta.
A Figura 15 ilustra o fluxo das atividades de Design Orientado a Serviço e Design da
Lógica de Serviço. O Design Orientado a Serviço tem por objetivo o re-design da solução
de software com foco na reutilização, bem como uma redefinição da arquitetura de software
para expressar as novas características de design. Em suporte ao re-design, os serviços são
categorizados como: serviços de entidade, que é um serviço reutilizável com contexto
funcional agnóstico associado a uma ou mais entidades empresariais relacionadas (ERL et
al., 2012); serviço de tarefa, que é um contexto funcional não-agnóstico que geralmente
corresponde à lógica de processos de negócio com propósito único (ERL et al., 2012);
serviço utilitários, que é também um serviço reutilizável com um contexto funcional
agnóstico, mas intencionalmente não derivado de especificações e modelos de análise de
negócios" (ERL et al., 2012).
Por sua vez, a atividade de Design da Lógica de Serviço, é responsável por
completar a lógica de serviço, através da definição de um conjunto de informações como a
Capítulo 4. Processo SPReaD 44
versão do serviço, suas políticas de acesso, esquemas de contrato, rotas de acesso das APIs
etc.
4.5.2 Artefatos
Como resultado da Análise, são gerados o blueprint dos inventários de serviço
indicando os principais contextos de domínio; e uma documentação de software voltada
para explanação do escopo de cada inventário e os seus serviços candidatos. Uma forma
para representar esse blueprint é a criação de um mapa mental, no qual os nós de primeiro
nível podem representar os inventários identificados e o segundo nível os serviços candidatos
desse inventário.
Já o resultado do Design é a especificação dos componentes da arquitetura de
serviço em termos da sua modelagem através de diagramas estruturais, como diagramas
de classe e diagramas de componentes da UML. Além disso, um conjunto de metadados
criados juntos ao código-fonte do novo serviço, o que permitirá a construção dos contratos
de serviços, o que facilitará a descoberta de suas capacidades.
Capítulo 4. Processo SPReaD 45
4.5.3 Práticas
Como prática da atividade de Análise de Inventário de Serviço é adotada a
abordagem de Contextos Delimitados (EVANS, 2003) a partir da engenharia reversa do
sistema legado. Como ilustra a Figura 16, isso se dá pela definição de Contextos Delimitados
a partir do agrupamento dos serviços candidatos que estão logicamente unificados, porém
sem fronteiras estabelecidas dentro dos sistema legado. Após essa definição, o Contexto
Delimitado deve ser nomeado e extraído para Inventários de Serviço. Cada Contexto
Delimitado equivale a um microsserviço, e cada serviço identificado no sistema legado
passa a ser uma capacidade a ser oferecida pelo microsserviço identificado. Um inventário
pode conter um ou mais Contextos Delimitados dependendo do escopo de negócio do
Inventário.
Identificados os Inventários e seus serviços candidatos, a prática a ser adotada
na Análise Orientada a Serviço, seguindo a linha da engenharia reversa, é o início
da decomposição do serviço legado. Essa decomposição se dá pela extração da lógica de
Capítulo 4. Processo SPReaD 46
serviço das camadas de apresentação. Como ilustrado na Figura 17 essa extração gera dois
focos de análise: um foco para identificar comportamentos e modelos que satisfazem as
lógicas associadas à interface gráfica; e o outro voltado à lógica de serviço, com o qual são
identificados as capacidades e entidades de negócio do serviço. Nesse processo, é necessário
identificar os modelos de software que contenham múltiplas responsabilidades e separá-los
em classes distintas, afim isolar capacidades de negócio para obter uma melhor autonomia
e manutenção dessas classes.
Em relação às entidades relacionais no banco de dados, a equipe deve levar em
consideração o custo de migração dessas entidades para contextos separados, bem como o
custo de continuar com as entidades compartilhadas. Se por um lado o custo e o riscos
envolvidos na migração de um banco legado podem ser demasiadamente alto, o custo
de preservar a estrutura de banco de dados exige um maior esforço para mapear essas
entidades relacionais nos inventários de serviço. Para isso, é preciso adotar técnicas de
Mapeamento Objeto Relacional (ORM), e estratégias para lidar com problemas como a
concorrência por uma mesma instância (Tupla) de uma entidade, bem como lidar com
o versionamento e migração da base de dados num cenário onde o sistemas distribuídos
estão constantemente acessando recursos de dados.
Em relação a comunicação entre os componentes do sistema legado, antes a arqui-
Capítulo 4. Processo SPReaD 47
tetura monolítica permitia que essa comunicação ocorresse de forma irrestrita, uma vez
que esses componentes compartilhavam um mesmo núcleo. Ao decompor esse núcleo em
Contextos Delimitados e distribuí-los em microsserviços, é preciso que haja estratégias de
comunicação entre eles. Uma vez que as relações entre Contextos Delimitados assumem
várias formas, o Domain-Driven Design (EVANS, 2003; VERNON, 2013; MILLETT, 2015)
provê uma abordagem chamada de Mapeamento de Contextos (Context Mapping), que
especifica o uso de um padrão (DDD relational pattern) para identificação de cinco possíveis
estratégias de relacionamento entre Contextos Delimitados:
Para acessar essas capacidades de negócio o Cliente deve utilizar Contratos Padro-
nizados, o que evita que o cliente conheça aspectos de infraestrutura e detalhes técnicos
Capítulo 4. Processo SPReaD 49
4.6 Construção
Esta fase envolve as etapas de Codificação e Teste, que estão relacionadas
respectivamente as atividades de Desenvolvimento de serviço e Teste de serviço do
MSOAM. Elas também completam o ciclo da engenharia direta dentro do processo da
Reengenharia de Software.
4.6.1 Atividades
A atividade de Desenvolvimento de serviço adota duas abordagens: a Imple-
mentação de API de serviço e a Migração de Software A Figura 19 ilustra o fluxo
dessas atividades na fase de construção.
Capítulo 4. Processo SPReaD 50
2003; VERNON, 2013). Por fim, o acesso aos componentes migrados são normatizados pela
criação de uma Fachada do serviço (Façade), que oculta toda a complexidade existente no
software.
Além dos testes dentro do processo de desenvolvimento de software, a atividade
de Teste de Serviço é executada para garantir que os serviços estejam respondendo aos
resultados esperados e estabelecidos no contrato do serviço. Para isso, são aplicados testes
em serviços agnósticos para verificar se estão prontos para uso repetitivo, bem como em
serviços não-agnósticos para garantir a operação correta da composição do serviço.
4.6.2 Artefatos
Como resultado direto da atividade do Desenvolvimento de Serviço, os compo-
nentes de software e as APIs são criados e compilados em pacotes publicáveis na rede. Como
resultado dos Testes de Serviço, um conjunto de testes que representam as validações
do sistemas são gravados e versionados para usos futuros tanto no ciclo de implantação,
quanto de manutenção de software.
4.6.3 Práticas
Dois fluxos possíveis de desenvolvimento podem ser adotados como prática da
atividade do Desenvolvimento de Serviço: um fluxo é o de migração de software e
um fluxo de construção da API por primeiro. A Figura 20 ilustra os passos do fluxo de
migração: primeiro, o serviço legado é decomposto para extrair entidades e lógicas de
serviços. Em seguida, são criados componentes de negócio que correspondam a arquitetura
de serviços projetada, enquanto que os recursos compartilhados e classes de acesso a
infraestrutura ou serviços externos são envolvidos por wrappers. Por fim, o componente
de negócio é envolvido por uma API web responsável por expor as capacidades de cada
serviço através de contratos padronizados.
Em alguns casos, o contrato do serviço precisa ser disponibilizado antes da lógica
do serviço em si. Por exemplo, equipes externas contratadas para o desenvolvimento do
front-end podem demandar o acesso ao contrato para prosseguir a construção de GUI’s
(Graphic User Interfaces). Também, alguns cenários de composição de serviço ou Testes
de integridade podem demandar a exposição prévia de contratos. Nesse cenário, a API
web é disponibilizada antes da construção do componente de negócio.
4.7 Implantação
A fase de implantação envolve o uso de técnicas de DevOps, como Integração
Contínua (Continuous Integration - CI ), Entrega Contínua (Continuous Delivery - CDE)
Capítulo 4. Processo SPReaD 52
4.7.1 Atividades
As etapas de Entrega, Suporte e Feedback fazem parte da fase de Implantação.
Elas são executadas afim de agilizar e gerenciar as etapas de implantação dos serviços no
ambiente de produção, bem como obter um monitoramento eficaz dos serviços. A Entrega
é orientada pela a atividade da Manutenção e Implantação de Serviço. Conforme
ilustrado na Figura 21, a atividade de Entrega é destinada ao processo de integração
do código-fonte (CI), seguida por sua compilação, execução de testes automatizados e
da análise estática de código. Quando essas atividades são bem-sucedidas, a entrega dos
pacotes é realizada no ambiente de homologação (CDE). Por fim, quando a homologação
dos pacotes é concluída, eles são implantados no ambiente de produção (CD).
A etapa de Suporte e Feedback é conduzida pelas atividades de Uso e Moni-
toramento de Serviço, Descoberta de Serviço e Versionamento e Retirada de
Serviço. Conforme ilustra a Figura 22, a atividade Uso e Monitoramento de Serviço
é aplicada para registrar, recuperar, tratar e disponibilizar um conjunto de logs sobre o
estado de funcionamento dos serviço em produção.
Capítulo 4. Processo SPReaD 53
4.7.2 Artefatos
Para a entrega de serviços, os pacotes de software são compilados para implantação
no ambiente de produção. Esse processo se dá de forma automatizada e gera uma série
de relatórios que contém informações sobre as etapas de integração e compilação do
código-fonte. De forma a verificar e validar a qualidade do software integrado, o relatório
apresenta indicadores sobre a cobertura de código por testes automatizados, bem como
custo da dívida técnica recalculado.
Capítulo 4. Processo SPReaD 54
Uma vez que os serviços são implantados de forma distribuída, o uso do Repositório
de Serviço é adotado para descobrir onde o serviço está sendo executado e quantas
instâncias estão disponíveis para o consumo. Além disso, o Repositório de serviço expõem
as capacidades dos serviços e detalhes do contrato. Para efeito de monitoramento do uso
dos serviços no ambiente de produção, uma série de logs são registrados, recuperados,
tratados e disponibilizados através de dashboard, que são utilizados por equipes de suporte
para o monitoramento da infraestrutura, bem como por equipes de gestão para entender a
dinâmica do negócio através do consumo de serviços.
4.7.3 Práticas
Ao decompor a aplicação monolítica em Inventários de serviços, é possível diminuir
o acoplamento entre as camadas da aplicação. Com isso, busca-se otimizar o uso de
recursos e potencializar a escalabilidade e desempenho do sistema, bem como diminuir os
impactos negativos de efeitos colaterais ocasionados por entregas mal sucedidas. Para isso,
o processo de implantação deve ser repensado para que Inventários de serviços possam ser
Capítulo 4. Processo SPReaD 55
5.1 Modelagem
A fase de Modelagem foi conduzida pela execução da atividade de Análise de
Inventários de Serviço para guiar definição do Inventário de Arrecadação a partir da
delimitação dos serviços candidatos em contextos de negócio. Posteriormente, a Análise
Orientada a Serviço foi executada de modo a guiar a engenharia reversa dos serviços
legados de Débitos, Guias e Prefeituras. Por fim, o Design Orientado a Serviço e
Design de Lógica de Serviço foram executados para auxiliar a re-arquitetura e re-
modelagem desses serviços. Como resultado da etapa de Análise, foram gerados o blueprint
dos Inventários de Serviço de Arrecadação, evidenciando os contextos de Recolhimento
e Repasse; além de uma documentação de software voltada para explanação do escopo
de cada inventário e os seus serviços candidatos. Já o resultado da etapa de Design foi
a especificação dos componentes da arquitetura dos microsserviços de Recolhimento e
de Repasse, através de diagramas estruturais, como diagramas de classe e diagramas de
componentes da UML. Detalhamos cada uma dessas atividades na sequência.
Um vez que todos os serviços legados encontravam-se dentro de um mesmo núcleo
sem fronteiras pré-estabelecidas, a atividade de Análise de Inventários de Serviço foi
executada com o objetivo identificar os contextos de negócio dos serviços legados. Para isso,
a técnica de Contextos Delimitados (EVANS, 2003) foi aplicada no intuito de delimitar a
aplicabilidade de determinados modelos e mantê-los logicamente unificados e consistentes.
Na prática, a partir dos serviços legados foram identificados os Contextos Delimitados e
suas respectivas as capacidades de negócio. Por exemplo, os serviços legados de Débito e de
Guias fazem parte de um conjunto de operações que representam as regras de Recolhimento,
enquanto o serviço legado de Prefeituras representam as regras de Repasse, como ilustra a
Figura 24.
Capítulo 5. Aplicação do SPReaD no Sistema UVT 58
Cada Inventário pode possuir “N” Contextos Delimitados e cada contexto representa
um microsserviço. Por exemplo, a partir do Inventário de Serviço de Arrecadação derivaram
dois microsserviços: o microsserviço de Recolhimento, contendo as capacidades de geração
de Débito e recebimento de Guias; e o microsserviço de Repasse, contendo as capacidades
de gestão de repasses para as prefeituras.
Uma vez que as relações entre Contextos Delimitados assumem várias formas
(ver 4.5.3), foi preciso mapear suas estratégias de comunicação e suas relações de depen-
dência. Nesse sentido, foram mapeadas as comunicações dos contextos de Recolhimento e
Repasse do Inventário de Serviços de Arrecadação com domínios externos, bem como com
serviços internos da SET.
Como ilustra a Figura 25, o contexto de Recolhimento, por exemplo, comunica-se
com domínios externos como instituições bancárias através da estratégia Cliente-Fornecedor,
Capítulo 5. Aplicação do SPReaD no Sistema UVT 59
que acessavam a mesma entidade “Débito”. Revelou também que essa entidade acumulava
amplas responsabilidades, uma vez que ela conhecia todos os contextos de cada origem de
débito, bem como as estruturas de mapeamento relacional com o banco de dados, como
ilustra a Figura 26. Isso forçou o aumento da sua complexidade, linhas de código e o
risco de efeitos colaterais indesejados, uma vez que manutenções nessa entidade envolvia a
manipulação de atributos que eram compartilhados com diversos métodos na entidade.
Figura 26 – Engenharia reversa dos serviço legado de Débitos no escopo de Análise Orien-
tada a Serviço (fonte-própria).
5.2 Construção
Para garantir que a fase de Codificação produzisse o Inventário de Serviços de
Arrecadação que atendesse as especificações de design, foram adotados durante a execução
Capítulo 5. Aplicação do SPReaD no Sistema UVT 63
A Figura 30 ilustra a criação das pastas de solução Serviços de Débitos e Serviços de Guias
dentro da pasta Recolhimento.
que oferece mecanismos para construção de Fachadas para os serviços de Débito e de Guias.
Testes
Capítulo 5. Aplicação do SPReaD no Sistema UVT 67
5.3 Implantação
Visando tornar a Implantação e Manutenção de Serviço mais flexível, a
estrutura de alocação de sistemas da SET foi repensada para favorecer a Entrega contínua
de serviços, bem como o Suporte e Feedback a partir do uso. Nesse sentido, os
serviços de Recolhimento e Repasse foram construídos seguindo padrões de implantação de
microsserviços, afim de serem implantados e mantidos como um produto independentes, de
modo a favorecer seu Monitoramento, a Descoberta de suas capacidades, bem como o
Versionamento e Retirada de Serviço no ambiente de produção.
Para a entrega dos microsserviços, foram configurados na solução de software scripts
para integração de código e compilação de pacotes de implantação de microsserviços no
ambiente de produção: um pacote para o microsserviço de Recolhimento e um pacote de
implantação do microsserviço de Repasse. Para acompanhar o processo de implantação,
foram adotada ferramentas alinhadas com as práticas de DevOps que fornecessem relatórios
contendo logs das etapas de integração e compilação do código-fonte. Além disso, um
portal de Repositório de Serviço foi customizado para que as capacidades dos serviços
em produção fossem passíveis de descoberta. Por fim, foram adotadas ferramentas de
monitoramento para que as equipes de suporte acompanhem o consumo dos recursos de
infraestrutura, bem como para as equipes de gestão entender a dinâmica do negócio através
do consumo dos serviços. Detalhamos cada uma dessas fases na sequência.
Antes da migração, todo o núcleo do sistema UVT precisava ser completamente
compilado para a entrega de novas funcionalidades ou manutenções corretivas no sistema.
Ou seja, até mesmo um pequeno ajuste isolado forçava a recompilação e publicação do
sistema por inteiro. Um fato agravante nesse processo era a necessidade de parada do
sistema, provocada pelo uso inapropriado de mecanismos para lidar com o estado de sessão
e a ausência de distribuição.
Para lidar com essa complexidade e tornar a implantação e manutenção de servi-
ços mais flexível, os componentes de software dos serviços foram desenvolvidos seguindo
1
https://www.getpostman.com/
Capítulo 5. Aplicação do SPReaD no Sistema UVT 68
No caso dos serviços da SET, esse processo de publicação foi suportado por
ferramentas automatizadas que dão suporte a práticas contínuas do DevOps. Esse novo
cenário demandou da equipe da SET uma melhor gerência de configuração para lidar com
integração contínua de código, associada à execução de testes automatizados, para garantir
a segurança e qualidade de implantação dos pacotes entregáveis. Nesse sentido, o processo
de publicação de serviços da SET precisaria ser assistido por ferramentas automatizadas
que dão suporte a práticas contínuas do DevOps.
Para esse propósito, foi adotada a solução TFS (Team Foundation Server) da
Microsoft, que fornece as principais operações vinculadas às práticas de DevOps, como
Integração Contínua (CI), Entrega Contínua (CDE) e Implantação Contínua (CD). Além
disso, o TFS fornece artefatos importantes para a gerência de configuração e é aderente e
Capítulo 5. Aplicação do SPReaD no Sistema UVT 69
6 AVALIAÇÃO
Podemos notar que o código legado do sistema UVT tem a classificação “C”, por
sua vez, os inventários foram avaliados na classificação “A” na escala de classificação de
sustentabilidade, o que indica uma dívida técnica muito baixa. Também é possível notar
que o número total de LoC em Inventários de serviço (247K) aproxima-se ao número de
LoC do sistema legado (282K). No entanto, como cada Inventário possui um ciclo de
manutenção independente, esse número cai consideravelmente.
Além das métricas de código, foram extraídas do ambiente de produção, métricas
de desempenho dos serviços implantados. A Tabela 5 apresenta alguns indicadores obtidos
por meio da infraestrutura de monitoramento ELK, do desempenho dos serviços. Essas
métricas foram extraídas entre os meses de Junho e Dezembro de 2017, e foram agrupadas
por quantidade total de requisições (#Requests) no mês, tempo médio de resposta (em
milissegundos) de todos os serviços e a quantidade de usuários (#Users) atendidos.
Nesse período, o projeto piloto da UVT foi lançado oficialmente em junho/2017
para uma base de usuários inicial com menos de 1.000 usuários. Em julho/2017 a base de
usuários foi substancialmente expandida (mais de 4.000 usuários), e enquanto o número
de requisições mais que dobrou (484.665 requisições contra 197.458 do período anterior); o
tempo de resposta permaneceu em torno de 200 milissegundos. Em agosto/2017, houve
um pequeno aumento no número de usuários (mais de 5.000 usuários) e no número de
requisições (652.455) com um tempo de resposta médio estável (199,21 milissegundos).
Capítulo 6. Avaliação 74
Até agosto/2017, tanto o sistema legado quanto o novo sistema estavam ativos
paralelamente. No entanto, em setembro/2017, o sistema antigo foi desativado e a partir
desse momento todos os usuários passaram a consumir serviços no novo sistema UVT.
Dessa forma, tivemos um incremento de 116% na base de usuários (de 5.162 usuários
para 11.156 usuários) e um incremento de 496% no número de requisições (de 652.455
solicitações para 3.889.923 solicitações).
Este foi um momento de apreensão para a equipe, mas apesar do enorme aumento
na carga, o tempo médio de resposta permaneceu estável em torno de 200 milissegundos.
Além disso, os feedbacks recebidos pela equipe era de que havia uma sensação positiva em
relação ao desempenho do sistema como um todo, bem como havia feedbacks de aceitação
das nova interface gráfica do sistema Web e dos aplicativos para dispositivos móveis. Nos
meses seguintes, de outubro/2017 a dezembro/2017, o sistema apresentou um aumento de
557.712 requisições e 4.145 usuários. No entanto, o desempenho permaneceu próximo de
200 milissegundos.
É importante mencionar que entre os meses de junho/2017 e dezembro/2017, a
equipe de operações estava monitorando ativamente todo o ambiente como parte das
atividades da fase de implantação. Isso permitiu a identificação de gargalos na infraestrutura
e a realização de algumas mudanças pró-ativas, como o redimensionamento de recursos de
infraestrutura alocados para bancos de dados e serviços de cache, bem como a inclusão de
novas instâncias de serviços.
SET atingiu esse nível de maturidade uma vez que os Auditores demandantes de solicitação
já apresentam um nível de compreensão sobre a arquitetura de serviços adotada pela SET
em seus projetos, bem como utilizam junto com os analistas de TI o repositório de serviços
como ferramenta para compor em suas requisições serviços agnósticos já existentes na
base de Inventários de serviços. Além desse benefício geral, adoção do SOA trouxe resulta-
dos positivos que impactaram o ciclo de vida de desenvolvimento de software da SET como:
soluções de software, uma vez que o paradigma SOA está consolidado e trouxe benefí-
cios como agilidade da organização em resposta as demandas de mercado, o retorno de
investimento pela reutilização de serviços e a diversificação de fornecedores de tecnologia.
Tudo isso tem impacto na eficiência da arrecadação do estado do Rio Grande do Norte.
Além disso, existem novas demandas para aplicação de SPReaD para outros sistemas de
SET, e um novo projeto está sendo executado (atualmente na fase de modelagem de nosso
processo).
77
7 TRABALHOS RELACIONADOS
8 CONCLUSÃO
8.2 Limitações
Embora tenhamos obtido resultados relevantes com esta pesquisa, temas impor-
tantes e circundantes ao processo SPReaD não foram explorados, como uma melhor
descrição da gestão da dívida técnica dentro do ciclo de desenvolvimento. Dado que as
métricas de dívida técnica foram baseadas no uso apenas de uma abordagem e uma única
ferramenta, e dada a importância da gestão da dívida técnica como um dos objetivos do
SPReaD, é necessário que haja uma expansão desse tema e uma revisão das atividades
a ele relacionadas. Nesse sentido, uma vez que o processo SPReaD, extraído durante a
migração do sistema de UVT, foi aplicado em um único caso, ainda merece ser revisitado
e reaplicado em outros projetos para garantir sua efetividade e um maior amadurecimento
de todas as suas atividades realizadas.
Além disso, alguns problemas identificados no ambiente durante a condução desse
estudo não foram explorados nessa pesquisa. Como exemplo, o comprometimento da
autonomia de um microsserviço devido a relação entre modelos baseados em domínio ricos
versus modelos de dados legado. Esse problema diz respeito ao esforço que times de desen-
volvimento empregam em sistemas migrados para uma arquitetura de microsserviços, ao
tentar compatibilizar uma abordagem baseada em modelos de domínio e a impossibilidade
de migrar uma base de dados legada não escalável. Temas dessa natureza não só exigem
uma maior maturação do problema, como se esbarram em questões culturais, técnicas e
contratuais da SET.
citar o projeto NFP (Nota Fiscal Potiguar) 1 , um sistema web e um aplicativo móvel
(para as plataformas Android e IOS) que permite o cidadão consultar todas as notas onde
informou seu CPF no momento da compra. Com isso, é necessário que haja um estudo
para avaliar o impacto no SPReaD na estrutura da SET.
Os resultados obtidos ainda motivam pesquisas com foco em automatização nesta
área, como a criação de frameworks para auxiliar a reengenharia de sistemas legados.
Questões relacionadas a aplicação de microsserviços e DevOps como descoberta automática
de serviços, auto-escala de um serviço específico com base em altos volumes de requisição,
modelos e estratégias para migração e decomposição de base de dados legadas, são temas
ainda a serem explorados em futuros trabalhos dentro da estrutura da SET.
Além disso, é necessário também a realização de um estudo sobre o uso de ferramen-
tas e técnicas de BPM em conjunto com o SPReaD. Nesse sentido, pesquisas qualitativas
podem ser conduzidas para explorar a relação entre BPM e SOA no contexto de aplicações
da SET.
1
https://nfp.set.rn.gov.br/
85
REFERÊNCIAS
BASS, L.; WEBER, I.; ZHU, L. DevOps: A Software Architect’s Perspective. [S.l.]:
Addison-Wesley Professional, 2015. Citado 4 vezes nas páginas 15, 25, 26 e 27.
BENNETT, K. Legacy systems: Coping with success. IEEE software, IEEE, v. 12, n. 1, p.
19–23, 1995. Citado na página 14.
ERL, T. Soa: principles of service design. [S.l.]: Prentice Hall Upper Saddle River, 2008.
v. 1. Citado 3 vezes nas páginas 20, 21 e 27.
ERL, T. et al. SOA with REST: Principles, Patterns &Constraints for Building Enterprise
Solutions with REST. 1st. ed. Upper Saddle River, NJ, USA: Prentice Hall Press, 2012.
ISBN 0137012519, 9780137012510. Citado 5 vezes nas páginas 27, 43, 49, 63 e 80.
GRUBB, P.; TAKANG, A. A. Software maintenance: concepts and practice. [S.l.]: World
Scientific, 2003. Citado 2 vezes nas páginas 14 e 24.
Referências 86
JAMSHIDI, P. et al. Microservices: The journey so far and challenges ahead. IEEE
Software, v. 35, n. 3, p. 24–35, May 2018. ISSN 0740-7459. Citado 3 vezes nas páginas 15,
25 e 80.
LEON, A. F. Don’t believe the hype! SOA AND MSA are not the same. 2017. Website.
Disponível em: <https://www.academia.edu/34828240/Dont_believe_the_hype_SOA_
AND_MSA_are_not_the_same>. Citado 3 vezes nas páginas 14, 15 e 80.
NEWMAN, S. Building Microservices. 1st. ed. [S.l.]: O’Reilly Media, Inc., 2015. ISBN
1491950358, 9781491950357. Citado 3 vezes nas páginas 15, 25 e 27.
SHAHIN, M.; BABAR, M. A.; ZHU, L. Continuous integration, delivery and deployment:
A systematic review on approaches, tools, challenges and practices. IEEE Access, v. 5, p.
3909–3943, 2017. ISSN 2169-3536. Citado 4 vezes nas páginas 9, 16, 25 e 26.
TRIPATHY, P.; NAIK, K. Software evolution and maintenance. [S.l.]: John Wiley & Sons,
2014. Citado na página 24.
YAN, P.; GUO, J. Researching and designing the architecture of e-government based on
soa. In: 2010 International Conference on E-Business and E-Government. [S.l.: s.n.], 2010.
p. 512–515. Citado na página 78.