\section{Architecture}

%TODO: Kanashiro

The SPB platform was deployed in 7 virtual machines with different functions,
as we can see in Figure \ref{fig:architecture}.

\begin{figure}[hbt]
  \centering
    \includegraphics[width=\textwidth]{figures/arquitetura.png}
  \caption{SPB Architecture.}
  \label{fig:architecture}
\end{figure}

The \textit{reverseproxy} handles the HTTP requests and redirects them to the
\textit{integration}, the \textit{email} sends and receives e-mails on behalf
of the platform and the \textit{monitor} keeps the entire environment tracked.
These three \textit{VMs} mentioned - \textit{reverseproxy}, \textit{email} and
\textit{monitor} - are accessible via Internet and the other ones are only
available in the local network created between them.

\textit{Integration} works as a second layer of proxy beneath
\textit{reverseproxy}, any request to the platform will be handled by it. The
Colab service provides interface, authentication and search engine integration
among all the services. When a request is received to a specific service,
Colab authenticates the user in the target tool, sends the request and makes a
visual transformation in the HTML page, which is the content of the response.
Another user-oriented feature is the integrated search engine, when the user
want to find something in the platform Colab will perform the search in the
whole databases. Colab itself provides a web interface for GNU Mailman and we
have two others integrated tools in \textit{integration}: Gitlab and Prezento.
Gitlab provides web interface for Git repositories and issues tracker, and
Prezento is a front-end for source code static analysis.

The source code static analysis is performed by \textit{mezuro}. It runs some
static analysis tools on source code stored in repository and provides this data
to Prezento. A social network and CMS (Content Management System) is provided by
Noosfero in \textit{social}, and the databases of all tools with a cache
service are in \textit{database}.
