Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
2
REVISÕES
DATA NATUREZA DA REVISÃO RESPONSÁVEIS VERSÃO
23/03/2018 Criação do caderno de arquitetura.
Gustavo Piccin
João Vitor 1.0
3
SUMÁRIO
1 Apresentação ................................................................................................. 1
1.1 Objetivo .......................................................................................................... 1
1.2 Público alvo .................................................................................................... 1
1.3 Aplicação ........................................................................................................ 1
1.4 Atribuições ..................................................................................................... 1
1.4.1 Arquiteto de software ...................................................................................... 1
1.4.2 Desenvolvedor ................................................................................................ 1
2 Ambientes de desenvolvimento ...................................................................... 2
2.1 Infraestrutura .................................................................................................. 2
2.2 Código Fonte .................................................................................................. 2
2.3 Ambientes ...................................................................................................... 3
2.3.1 DESENVOLVIMENTO (Dev) .......................................................................... 3
2.3.2 TESTE (Test) .................................................................................................. 3
2.3.3 HOMOLOGAÇÃO (Pre-production) ................................................................ 4
2.3.4 PRODUÇÃO (Production) .............................................................................. 4
2.4 Testes ............................................................................................................ 4
2.4.1 Ambientes ....................................................................................................... 4
2.4.2 Requisitos padrões de aceitação .................................................................... 4
2.5 Container ........................................................................................................ 5
3 Arquitetura ...................................................................................................... 6
3.1 Autenticação e autorização ............................................................................ 6
3.2 Frontend ......................................................................................................... 7
3.2.1 Conceito ......................................................................................................... 7
3.2.2 Tecnologias .................................................................................................... 7
3.2.3 Teste ............................................................................................................... 7
4
3.3 Backend ......................................................................................................... 8
3.3.1 Conceito ......................................................................................................... 8
3.3.2 Tecnologias .................................................................................................... 8
3.3.3 Arquitetura ...................................................................................................... 8
3.3.4 Teste ............................................................................................................. 10
3.4 Integrações .................................................................................................. 10
4 Ciclo de vida ................................................................................................. 11
4.1 Continuous Integration ................................................................................. 12
4.2 Continuous Delivery ..................................................................................... 13
5 Revisão ......................................................................................................... 13
Figuras 14
Tabelas ..................................................................................................................... 14
Referências Bibliográficas ......................................................................................... 14
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
1
1 APRESENTAÇÃO
1.1 Objetivo
Este documento tem por objetivo ilustrar e definir diretrizes para o
desenvolvimento de software no Poder Judiciário de Mato Grosso. Além disto, busca
evidenciar as tecnologias e padrões estabelecidos, tanto para o conhecimento público,
como forma de transparência da produção de software deste órgão, como para a
evolução e discussões tecnológicas a respeito dos variados temas aqui dispostos.
1.2 Público alvo
Este caderno é destinado a todos os colaboradores associados diretamente a
produção de software, em especial aos que contribuem nos aspectos estritamente
técnicos.
1.3 Aplicação
Dada a pluralidade de soluções tecnológicas ativas no Poder Judiciário e a
constante evolução tecnológica vivenciada pela comunidade mundial de software na
última década, este caderno de arquitetura é válido apenas para produtos
desenvolvidos a partir da data de publicação deste. Produtos legados seguem
diretrizes convencionadas em documento interno de Padrões de Desenvolvimento,
publicado em 2013 e atualizado em 2015.
1.4 Atribuições
1.4.1 ARQUITETO DE SOFTWARE
Responsável pela criação dos elementos básicos do projeto e por validar o
softwares produzidos de acordo com as diretrizes aqui dispostas.
1.4.2 DESENVOLVEDOR
Responsável pelo desenvolvimento das soluções, utiliza este material como
diretriz técnica obrigatória.
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
2
2 AMBIENTES DE DESENVOLVIMENTO
2.1 Infraestrutura
A ferramenta utilizada pelo TJMT para gerenciamento do ciclo de vida de uma
aplicação é o Team Foundation Server (Team Foundation Server, 2018).
Nele é realizada a gestão das necessidades do produto, do processo de
construção, do código-fonte, da homologação, da publicação e das demais etapas
envolvidas no processo de desenvolvimento de software.
2.2 Código Fonte
A gestão do código fonte é realizada pelo mecanismo GIT e o modelo de
trabalho adotado para a gestão das “branches”, ou ramificações do código fonte, é o
GitFlow (Vincent Driessen , 2018).
Neste modelo, as “branches” de desenvolvimento são criadas para atender a
necessidades especificas de mudança no código e possuem, preferencialmente, um
tempo de vida curto. Após a finalização de cada mudança, esta é integrada (“merge”)
na “branch” denominada como “DEVELOP” e posteriormente para a “MASTER”.
A Tabela 1 apresenta as convenções estabelecidas, bem como a relação
entre “branches” e ambientes:
AMBIENTE DESENVOLVIMENTO
ALPHA
TESTE
BETA
HOMOLOGAÇÃO
RC
PRODUÇÃO
STABLE
BRANCH
(Feature branches) DEVELOP
RELEASE-*
ou
HOTFIX-*
(Release branches)
MASTER
BUILD/RELEASE ALPHA-Y BETA RC STABLE
ENDEREÇO DO
AMBIENTE
http://{Projeto}-alpha-
Y.tjmt.jus.br
http://{Projeto}-
beta.tjmt.jus.br
http://{Projeto}-
rc.tjmt.jus.br
http://{Projeto}-
tjmt.jus.br
Tabela 1 - Convenções entre ambientes e endereços
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
3
2.3 Ambientes
Cada ambiente é utilizado com um propósito específico durante o processo de
desenvolvimento. A Figura 1 representa os ambientes (“enviroments”), as
ações realizadas (“actions”) em cada fase e seus responsáveis (“approvers”).
Figura 1 - Fluxo de ambientes
2.3.1 DESENVOLVIMENTO (DEV)
Ambiente dinâmico criado para o desenvolvedor produzir e testar cada
modificação de forma individual.
2.3.2 TESTE (TEST)
Ambiente dinâmico criado para a execução de testes automatizados,
unitários, de integração, de carga, assim como análises manuais e demais validações
necessárias.
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
4
2.3.3 HOMOLOGAÇÃO (PRE-PRODUCTION)
Ambiente dinâmico criado para validação de impactos em produção e
aceitação do usuário.
2.3.4 PRODUÇÃO (PRODUCTION)
Ambiente fixo destinado a disponibilização da versão final do produto utilizada
pelos clientes.
2.4 Testes
2.4.1 AMBIENTES
De forma objetiva, a Figura 2 estabelece a relação entre os estágios do
desenvolvimento de software e suas ações de teste e monitoramento.
Figura 2 - Ambientes de teste
2.4.2 REQUISITOS PADRÕES DE ACEITAÇÃO
Os requisitos quanto da qualidade de código seguem os parâmetros
especificados na Tabela 2. Qualquer software produzido fora destes padrões deve ser
justificado e aprovado.
MÉTRICA MÍNIMO
Cobertura de testes unitários 80%
Cobertura de testes de integração 80%
Cobertura de testes de interface 50%
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
5
MÉTRICA MÍNIMO
Complexidade método Complexidade ciclomática menor que 15
Taxa de duplicações de Igual ou menor que 2%
Taxa de sucesso em testes 100%
Documentação do código 80%
Tabela 2 - Requisitos padrões de testes
2.5 Container
Considerando que o TJMT possui um ambiente orquestrador de “containers”
denominado Kubernetes (Wikipedia, 2018), toda versão de um sistema deve ser
entregue por meio de “container” Docker (Wikipedia, 2018).
Para todos os serviços a serem publicados, deve existir em seu repositório de
código fonte um arquivo de definição do “container” (“dockerfile”), que tem por objetivo
criar uma imagem de “container” em que deverá conter os arquivos do serviço e um
servidor web preparado para rodá-lo.
Cada arquivo de definição do container deve conter minimamente:
1) Processo de compilação
a) Imagem base utilizada para compilar
b) Execução da Compilação do(s) projeto(s)
c) Execução dos Testes Unitários
2) Processo de execução
a) Imagem base contendo servidor web
b) Configuração e Cópia dos arquivos para execução
Também deve existir em seu repositório de código fonte um arquivo (“docker-
compose.yml”), que será utilizado para publicar o serviço em questão em um dos
ambientes do ciclo de vida do software.
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
6
3 ARQUITETURA
3.1 Autenticação e autorização
Toda aplicação ou serviço que necessite de identificação do usuário ou
controle de acesso, deve utilizar o serviço de gerenciamento de identidade implantado
no TJMT denominado Cerberus e seguir a todos os seus requisitos. Em suas últimas
versões, esta plataforma foi expandida para suportar Single Sign On (Wikipedia, 2018)
com o protocolo OAuth e OpenID Connect.
Cada plataforma de desenvolvimento como .NET, JAVA e Javascript,
possuem bibliotecas que fazem uso de autenticação utilizando os protocolos acima
citados e seguem o fluxo de autenticação apresentado na Figura 3.
Figura 3 - Fluxo de autenticação
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
7
3.2 Frontend
3.2.1 CONCEITO
Frontend ou interface gráfica do usuário (abreviadamente, o acrônimo GUI, do
inglês Graphical User Interface) é um tipo de interface do utilizador do sistema que
permite a interação com dispositivos digitais por meio de elementos gráficos como
ícones e outros indicadores visuais (Wikipédia, 2018).
3.2.2 TECNOLOGIAS
O framework destinado ao desenvolvimento de interfaces no TJMT é o
Angular (https://angular.io/) com a linguagem Typescript
(https://www.typescriptlang.org/).
Como base para a criação de novos projetos um padrão arquitetural base de
interface foi criado e nomeado como Aurora. Neste projeto existem componentes
reutilizáveis e estilizados com a identidade visual convencionada.
Detalhes da utilização deste projeto, assim como seus componentes estão
detalhados em ambiente interno próprio e podem ser verificados em:
http://alm.tjmt.jus.br/Desenvolvimento/DSA/_wiki?pagePath=%2FPADR%C3%95ES
%2FArquitetura%2FFrontend
3.2.3 TESTE
Assim como definido em “2.4 Testes”, os testes de interface seguem as
mesmas definições lá estabelecidas. No entanto, quando falamos de teste de
interface, o teste de integração é feito em cima dos elementos da interface, que no
caso da web é o DOM (Modelo de Objeto de Documento - DOM, 2018).
Neste caso, foi criado um projeto com o objetivo de se criar e executar os
testes de interface como integração, fazendo uso de um projeto já criado e publicado,
aplicações desta natureza são denominadas como End-To-End (Guru99, 2018).
Os testes End-to-End são descritos usando os conceitos do Behavior-driven
development (Behavior-driven development, 2018) por meio da framework Cucumber
(Cucumber, 2018). Detalhes da criação, desenvolvimento e execução podem ser
verificados em:
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
8
http://alm.tjmt.jus.br/Desenvolvimento/DSA/_wiki?pagePath=%2FPADR%C3
%95ES%2FArquitetura%2FFrontend
3.3 Backend
3.3.1 CONCEITO
Backend é o nome dado à execução de código do lado do servidor. Neste
código, é onde normalmente são criadas e validadas as regras de negócio, acesso à
dados, integrações e demais atividades que o negócio necessite.
O conceito backend é normalmente voltado a serviços web (Web service,
2018), os quais são majoritariamente criados utilizando os modelos REST (REST,
2018) e SOAP (SOAP, 2018).
3.3.2 TECNOLOGIAS
As linguagens permitidas para o desenvolvimento backend no TJMT são
JAVA (JAVA, 2018) e .NET (.NET, 2018).
Em uma criação de novos serviços web (backend), o modelo definido é o
REST, salvo casos que tratam de integração com aplicações legadas ou outras
exceções avaliadas individualmente.
3.3.3 ARQUITETURA
A arquitetura utilizada no TJMT para a criação de novos produtos é a de Micro-
serviços (Microservice Architecture, 2018).
Para se ter uma compreensão de uma arquitetura Micro-serviços, deve-se
antes possuir um conhecimento em Domain Driven Design (DDD – Introdução a
Domain Driven Design, 2018), pois esta baseia-se muito em seus princípios.
O caminho definido para a criação de APIs, segue o modelo de decomposição
por sub-domínio, ou seja, é criado uma API onde esta é responsável por cada sub-
domínio do seu negócio.
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
9
Exemplo:
A camada de backend segue a abordagem de desenvolvimento de software
denominada Domain-Driven Design (DDD) que tem como premissa a comunicação
por meio de linguagem ubíqua o isolamento da lógica de domínio (DDD Community,
2018).
Nos casos em que há necessidade de registro histórico dos dados
manipulados na aplicação, de forma a restaurar o momento histórico de uma
determinada transação de negócio, devem ser utilizados os padrões Command Query
Responsibility Segregation (CQRS) (Microsoft, 2018) e Event Sourcing (ES) (Fowler,
2018).
Detalhes referente a estes conceitos podem ser verificados em:
http://alm.tjmt.jus.br/Desenvolvimento/DSA/_wiki?pagePath=%2FPADR%C3%95ES
%2FArquitetura%2FBackend
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
10
3.3.3.1 Qualidade
Existem alguns princípios básicos a serem seguidos para que um serviço
REST possua uma qualidade mínima. Uma das formas de se garantir a qualidade é
por meio do “Modelo de maturidade Richardson” (Fowler, Richardson Maturity Model,
2018).
Seguindo o Modelo de maturidade Richardson, foi instituído que o mínimo
aceitável para a criação de APIs REST é o nível 2. Não só isto, a forma com que a
nomenclatura de operações, recursos e demais itens devem estar condizentes com
as melhores práticas definidas em https://restfulapi.net/resource-naming/. Quanto ao
retorno nas operações da API, esta deve ser no formato JSON (JSON, 2018).
3.3.3.2 Documentação
Toda API criada, deve ter suas definições documentadas utilizando a
“OpenAPI Specification” (OpenAPI Specification, 2018). Também nesta
documentação devem estar contidas as informações necessárias para o consumo do
serviço, tais como autenticação e regras de negócio cabíveis.
3.3.4 TESTE
Assim como definido em “2.4 Testes”, o teste nas APIs (backend) seguem as
mesmas definições. Portanto, os testes unitários e de integração, continuam a ser
requisitos com os parâmetros já estabelecidos.
3.4 Integrações
Integração entre aplicações Micro serviços são realizadas por duas formas
principais: “chamadas entre APIs” e “Mensagem”.
3.4.1.1 Chamadas entre APIs
São as integrações diretas entre os serviços de forma síncrona. Quando
existe uma dependência de outro serviço inerente de sua regra de negócio.
Este modelo de integração nem sempre é recomendado visto que cria uma
dependência entre os serviços e deve ser utilizado somente em casos de leitura de
informação.
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
11
3.4.1.2 Mensagem
A mensagem é utilizado seguindo um padrão de “Publish-Subscribe”
(PubSub, 2018). Neste formato, existe uma API que lança eventos em uma
infraestrutura de Message Broker (Message Broker, 2018) e os interessados que
queiram fazer alguma atividade se registram para receber essa notificação. Este
modelo é o preferido para a integração entre APIs, pois não cria
acoplamento/dependência entre os serviços.
A infraestrutura de mensagens implantada no TJMT é a RabbitMQ (RabbitMQ,
2018), a qual fornece múltiplas bibliotecas para diferentes linguagens, principalmente
as quais são utilizadas no desenvolvimento backend.
4 CICLO DE VIDA
Todo produto ou serviço desenvolvido deve possuir as etapas de Continuous
Integration e Continuous Delivery devidamente configuradas e devem seguir o fluxo
estabelecido na Figura 4. Tais configurações são de atribuição dos arquitetos de
software.
As etapas do ciclo de vida são:
1. Ambiente de Desenvolvimento
a. Ambiente restrito à equipe de desenvolvimento;
b. Execução de testes unitários a cada modificação.
2. Ambiente de Teste
a. Ambiente restrito à equipe de desenvolvimento;
b. Integra diferentes “branches” da equipe para uma nova release;
c. Execução de testes de integração e carga.
3. Ambiente de Homologação
a. Ambiente disponibilizado para análise pelo cliente;
b. Verificação preliminar do impacto da publicação em produção.
Aprovações: Analista de Teste, Controlador da Equipe e Gestão
Estratégica.
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
12
4. Ambiente de Produção
a. Ambiente onde a versão é disponibilizado ao cliente em
definitivo;
Aprovações: Gestão Estratégica.
Figura 4 - Fluxo de produção
4.1 Continuous Integration
Continuous Integration (Continuous Integration, 2018) é uma prática no
desenvolvimento de software com o objetivo de se garantir a qualidade de um código
produzido. Neste processo, múltiplos testes (principalmente unitário e de integração)
são executados e aferidos para que assim seja encaminhado para a próxima fase do
processo.
No Team Foundation Server (Infraestrutura), este processo é executado
mediante um processo de compilação (Build) para teste unitário e posteriormente no
ambiente beta para os testes de integração.
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
13
4.2 Continuous Delivery
Continuous Delivery (Continuous Delivery, 2018) é uma prática utilizada para
se obter uma maior velocidade de entrega. Uma necessidade cada vez mais solicitada
pelos clientes de TI.
No Team Foundation Server (Infraestrutura), este processo é executado
mediante a publicação (Release) da aplicação. Este processo é todo automatizado e
passa por etapas para então se entregue aos usuários em ambiente de produção.
5 REVISÃO
Este caderno de arquitetura possui revisão formal a cada 12 meses.
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
14
FIGURAS
Figura 1 - Fluxo de ambientes ..................................................................................... 3
Figura 2 - Ambientes de teste ..................................................................................... 4
Figura 3 - Fluxo de autenticação ................................................................................. 6
Figura 4 - Fluxo de produção .................................................................................... 12
TABELAS
Tabela 1 - Convenções entre ambientes e endereços ................................................ 2
Tabela 2 - Requisitos padrões de testes ..................................................................... 5
REFERÊNCIAS BIBLIOGRÁFICAS
.NET. (30 de 07 de 2018). Fonte: Microsoft: https://www.microsoft.com/net
Behavior-driven development. (30 de 07 de 2018). Fonte: Wikipedia:
https://en.wikipedia.org/wiki/Behavior-driven_development
Continuous Delivery. (30 de 07 de 2018). Fonte: Continuous Delivery:
https://continuousdelivery.com/
Continuous Integration. (30 de 07 de 2018). Fonte: GAEA:
https://gaea.com.br/entenda-o-que-e-continuous-integration/
Cucumber. (30 de 07 de 2018). Fonte: Wikipedia: https://cucumber.io/
DDD – Introdução a Domain Driven Design. (30 de 07 de 2018). Fonte: AgileAndArt:
http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-
design/
DDD Community. (23 de 03 de 2018). What is Domain-Driven Design. Fonte: DDD
Community: http://dddcommunity.org/learning-ddd/what_is_ddd/
Fowler, M. (23 de 3 de 2018). Event Sourcing. Fonte: Martin Fowler:
https://martinfowler.com/eaaDev/EventSourcing.html
Fowler, M. (30 de 07 de 2018). Richardson Maturity Model. Fonte: Martin Fowler:
https://martinfowler.com/articles/richardsonMaturityModel.html
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
15
Guru99. (30 de 07 de 2018). End-To-End Testing. Fonte: Guru99:
https://www.guru99.com/end-to-end-testing.html
JAVA. (30 de 07 de 2018). Fonte: JAVA: https://java.com
JSON. (30 de 07 de 2018). Fonte: JSON: https://www.json.org/json-pt.html
Message Broker. (30 de 07 de 2018). Fonte: Wikipedia:
https://en.wikipedia.org/wiki/Message_broker
Microservice Architecture. (30 de 07 de 2018). Fonte: Microservice Architecture:
http://microservices.io/patterns/microservices.html
Microsoft. (23 de 03 de 2018). CQRS Journey. Fonte: Microsoft Developer Network:
https://msdn.microsoft.com/en-us/library/jj554200.aspx
Modelo de Objeto de Documento - DOM. (30 de 07 de 2018). Fonte: Mozilla:
https://developer.mozilla.org/pt-BR/docs/DOM/Referencia_do_DOM
OpenAPI Specification. (30 de 07 de 2018). Fonte: Swagger:
https://swagger.io/specification/
PubSub. (30 de 07 de 2018). Fonte: Wikipedia:
https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern
RabbitMQ. (30 de 07 de 2018). Fonte: RabbitMQ: https://www.rabbitmq.com/
REST. (30 de 07 de 2018). Fonte: Wikipedia: https://pt.wikipedia.org/wiki/REST
REST. (30 de 07 de 2018). Fonte: Wikipedia: https://pt.wikipedia.org/wiki/REST
SOAP. (30 de 07 de 2018). Fonte: Wikipedia: https://pt.wikipedia.org/wiki/SOAP
Team Foundation Server. (30 de 07 de 2018). Fonte: Microsoft:
https://visualstudio.microsoft.com/pt-br/tfs
Vincent Driessen . (30 de 07 de 2018). Git branching model. Fonte: Vincent Driessen
Blog: https://nvie.com/posts/a-successful-git-branching-model/
Web service. (30 de 07 de 2018). Fonte: Wikipedia:
https://pt.wikipedia.org/wiki/Web_service
PODER JUDICIÁRIO DO ESTADO DE MATO GROSSO COORDENADORIA DE TECNOLOGIA DA INFORMAÇÃO DEPARTAMENTO DE SISTEMAS E APLICAÇÕES CADERNO DE ARQUITETURA – V.1.0
16
Wikipedia. (04 de 04 de 2018). Continuous Delivery. Fonte: https://en.wikipedia.org/:
https://en.wikipedia.org/wiki/Continuous_delivery
Wikipedia. (30 de 07 de 2018). Docker. Fonte: Wikipedia:
https://pt.wikipedia.org/wiki/Docker_(software)
Wikipedia. (30 de 07 de 2018). Kubernetes. Fonte: Wikipedia:
https://pt.wikipedia.org/wiki/Kubernetes
Wikipedia. (30 de 07 de 2018). Single Sign On. Fonte: Wikipedia:
https://en.wikipedia.org/wiki/Single_sign-on
Wikipédia, C. d. (23 de 03 de 2018). Interface gráfica do utilizador, 51329793. Fonte:
Wikipédia: https://pt.wikipedia.org/wiki/Interface_gr%C3%A1fica_do_utilizador