Arquitetura do Sistema - Modelo Operacional

De Redome
Revisão de 16h49min de 4 de maio de 2021 por Sheila.prado (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

Voltar

O modelo operacional tem por objetivo definir e documentar a forma como os componentes do sistema serão desenvolvidos e distribuídos em nós, junto com as conexões necessárias para suportar as interações requeridas por estes, de forma a atender os requerimentos funcionais e não funcionais da solução, considerando as restrições de tecnologia.

Plataforma de Desenvolvimento

O sistema será desenvolvido com a utilização do IBM® Bluemix porque facilita a implementação e a hospedagem de aplicações.

O IBM® Bluemix que é uma plataforma como serviço (PaaS) baseada em um projeto de código aberto de Cloud Foundry que permite que as organizações e os desenvolvedores criem, implementem e gerenciem aplicativos na nuvem de maneira fácil e rápida.

A equipe do projeto seguirá uma metodologia de desenvolvimento de software DevOps e o IBM Bluemix oferece capacidades que permite maior agilidade no ciclo de vida de desenvolvimento de aplicações nesta metodologia. A seguir uma breve descrição dos serviços DevOps que estão previstos de serem utilizados no projeto:

  • Track and Plan – Permite planejar o backlog e os work itens e tarefas de cada sprint bem como rastrear quem está fazendo o que e quando ficará pronto. Oferece uma interface simples para iniciar um projeto e rapidamente adicionar membros da equipe, atribuir tarefas e produzir código.
  • Git Hosting – Permite criar um projeto com um repositório Git para compartilhar o código fonte com membros da equipe. Os work itens no plano de trabalho podem ser associados às mudanças de código no repositório Git. O código do sistema ficará hospedado na nuvem através de um repositório Git conectado ao Bluemix e desenvolvido localmente utilizando a IDE de desenvolvimento Eclipse. Essa instância Git é o repositório MASTER de código do projeto.
  • Delivery Pipeline – Permite automatizar o processo de deployment de projetos. O pipeline de um projeto define uma sequência de etapas e roda jobs, como builds, testes e deployments.
  • Gestão e Relatórios – Há vários widgets para montar dashboards personalizados. Por exemplo, o widget burndown chart permite acompanhar a velocidade do time enquanto o widget work-item control permite acompanhar o trabalho de cada membro do time.

Cada desenvolvedor executará o Eclipse IDE em seu computador e carregará o código-fonte do sistema usando uma conexão com o repositório Git integrado com o Bluemix. Uma instância local do perfil Liberty que será executada no Eclipse e uma instância do banco de dados Oracle 10g Express Edition deverá ser instalada na máquina de cada desenvolvedor. O Oracle XE é totalmente gratuito para desenvolvimento, distribuição e uso comercial, porém é limitado em tamanho máximo da base de dados (4GB incluindo a tablespace SYSTEM).

Com essa configuração, será possível testar e depurar rapidamente a aplicação, sem conexão com a Internet e fazendo upload do código de volta ao repositório de código sempre que alguma mudança for feita.

Arquitetura-plataforma-cloud.png

Promoção automatizada entre ambientes

No Bluemix, serão criados três espaços virtuais para armazenar e controlar os recursos do sistema conforme seu estágio de operação: desenvolvimento, homologação e produção. Cada espaço está configurado com uma runtime do WebSphere Liberty conectado a um schema de banco de dados dedicado ao sistema e disponibilizado pela Fundação Ary Frauzino.

Os seguintes endereços de rede foram definidos para acesso a essas runtimes:

Endereço Web Ambiente
dev-redome.mybluemix.net Ambiente de testes da equipe de desenvolvimento.
tst-redome.mybluemix.net Ambiente para testes integrados.
hml-redome.mybluemix.net Ambiente para testes de aceitação/homologação do sistema.
prod-redome.mybluemix.net Ambiente produtivo no datacenter Américas.
prod-redome.eu-gb.mybluemix.net Ambiente produtivo no datacenter Europa (alta-disponibilidade geográfica).

A prática de integração e entrega contínua será adotada pela equipe do projeto para permitir aumentar a capacidade de liberar versões do sistema sob demanda, gerar releases bem-sucedidas e implantar o sistema em qualquer ambiente simplesmente apertando um botão e, evitando atividades manuais para geração da build das releases do sistema.

Deste modo será possível detectar erros de forma antecipada e desenvolver o sistema de forma coesa. Para isso, será utilizado o serviço Delivery Pipeline do Bluemix, automatizando desde o desenvolvimento do sistema até sua entrega final. Com ele, diversos tipos de tarefas (ex. testes unitários, análise de código) são executadas com base no sucesso da tarefa anterior.


PIPELINE DE DESENVOLVIMENTO - Integração contínua e promoção entre ambientes automatizada para branch develop Arquitetura-pipeline-develop.png


PIPELINE DE PRODUÇÃO - Integração contínua e promoção entre ambientes automatizada para branch master Arquitetura-pipeline-master.png


O serviço Delivery Pipeline do Bluemix será configurado com um acionador manual ou automático (ex. sempre que alguém da equipe realizar o push do código para o repositório Git do projeto) para mover o código para o ambiente de desenvolvimento.

Assim, depois que o código estiver em execução na máquina local e for considerado pronto para o lançamento, ele poderá ser empacotado e enviado ao ambiente de testes na nuvem pública (o processo representado pela seta pontilhada no diagrama). A partir deste momento, a aplicação ficará disponível por meio do Bluemix e acessível através da Internet para ser validada pela equipe de teste e/ou submetido aos testes automatizados.

Somente quando a aplicação passar com sucesso por todos os testes ela será movida para o espaço seguinte para homologação. Este espaço é uma representação de um local para testar o código ativo em um ambiente de qualidade de produção sem colocá-lo na produção real.

Os espaços virtuais criados no Bluemix terão seu acesso controlado. A equipe do projeto terá acesso somente ao espaço desenvolvimento (teste) o qual conterá os recursos necessários para execução dos testes automatizados e a montagem (build) do sistema. Este espaço é uma área de integração na qual o trabalho individual do desenvolvedor é liberado para ser incorporado ao build e às baselines gerais do sistema.

Arquitetura-controle-acesso.png

Os espaços virtuais homologação e produção são restritos e somente a Fundação Ary Frauzino terá acesso, mantendo um isolamento relativo da equipe projeto.