arquitetura.rst.in 3.42 KB
Arquitetura
===========

A arquitetura do SPB consiste em 7 servidores como representado na figura
a seguir.

.. image:: arquitetura.png

Servidores e Serviços
---------------------

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 6 máquinas com funções distintas:

* **Reverseproxy**

  * Proxy reverso


* **Integration**

  * Segundo proxy reverso;

  * Repositórios Git;

  * Listas de email;

  * Backend final de email;


* **Email**

  * *Relay* de email;


* **Social**

  * Servidor de rede social Noosfero;


* **Database**

  * Servidor de banco de dados PostgreSQL;


* **Monitor**

  * Monitoramento de informações dos outros serviços;


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** e **database** 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`.

.. image:: ssh.png

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.

Gestão de configuração
----------------------

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 :doc:`/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.

.. _Chef: https://docs.chef.io
.. _Chake: https://github.com/terceiro/chake