A arquitetura do SPB consiste em 7 servidores como representado na figura a seguir.
Um proxy reverso trata requisições HTTP e as direciona para uma segunda máquina, onde são distribuidas para os serviços solicitados. Todos os bancos de dados relevantes estão concentrados em uma única máquina e todos os emails disparados pelo sistema partem de um mesmo relay.
O ambiente é composto por 7 máquinas com funções distintas:
As máquinas Reverseproxy, Email e Monitor possuem IP’s externos. Reverseproxy recebe requisições HTTP/HTTPS (portas 80 e 443) e possibilita que usuários utilizem os repositórios git (porta 22). Email recebe emails (porta 25) e enviar emails para fora da plataforma. Monitor recebe requisições HTTP/HTTPS (portas 80 e 443). Os IP’s variam de acordo com o ambiente.
Conexões na porta 22 da máquina reverseproxy são redirecionadas para integration. Todas as máquinas aceitam conexões ssh originadas apenas da máquina integration, ou seja, não é possível realizar conexões ssh nas demais máquinas se a conexão não for originada da integration. As máquinas email, social, database e mezuro aceitam conexão ssh vindas da integration na porta 22 e a reverseproxy em uma porta alternativa, especificada no arquivo de configuração do ambiente, config/$SPB_ENV/config.yaml pelo valor alt_ssh_port.
Note que, como será demonstrado neste manual, existem atalhos definidos no repositório de gestão de configuração para simplificar o acesso por ssh às máquinas. Internamente, as máquinas integration e social também rodam web servers para servirem suas aplicações. Por fim, as máquinas integration e social conectam-se em database usando a porta 5432 para acesso aos bancos de dados.
O repositório de gestão de configuração se encontra em git@portal.softwarepublico.gov.br:softwarepublico/softwarepublico.git e pode ser obtido a partir do comando:
$ git clone git@portal.softwarepublico.gov.br:softwarepublico/softwarepublico.git
Note que para tal, é necessário possuir uma conta no Portal do SPB com chaves SSH configuradas. Para mais informações sobre essas configurações, veja a Documentação de Apoio.
Este repositório contém scripts que realizam todos os passos necessários para a instalação, configuração e manutenção do ambiente. Isto é feito através de scripts em linguagem Ruby que utilizam o Chef para a automatização de configurações e deploy de ambientes.
Os scripts mencionados são gerenciados por uma segunda ferramenta, Chake, que elimina a necessidade de um servidor Chef dedicado para gerenciar as máquinas do ambiente. O Chake conecta-se em cada uma das máquinas descritas via ssh, copiando scripts e outros arquivos, contendo as diretrizes necessárias para instalar e configurar todo o ambiente.