From 208ac9d6bbf679710b24921f0958002c107a8522 Mon Sep 17 00:00:00 2001 From: Lucas Kanashiro Date: Tue, 18 Apr 2017 19:25:55 -0300 Subject: [PATCH] architecture: improve Colab description --- opensym2017/content/05-architecture.tex | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/opensym2017/content/05-architecture.tex b/opensym2017/content/05-architecture.tex index 825ccc0..c86177d 100644 --- a/opensym2017/content/05-architecture.tex +++ b/opensym2017/content/05-architecture.tex @@ -39,11 +39,43 @@ described how we integrated those tools and conclude with the deployment. \subsection{Colab} -For the second requirement, we decided to use a web integration platform named -Colab\footnote{\url{https://github.com/colab/colab}}. It works as a frontend -for other web applications as a reverse proxy, manages authentication, and can -apply changes to the HTML provided by the integrated applications in order to -bring visual consistency. +Colab\footnote{\url{https://github.com/colab/colab}} has integration of web +applications as its main goal, the user of this integrated system should not +notice the change between the integrated applications. To do that Colab was +designed to use plugins of each application and has four levels of integration: + +\begin{itemize} + \item Authentication + \item Visual + \item Events + \item Data and search engine +\end{itemize} + +Colab works as a reverse proxy, therefore all external requests pass through +it, this is an advantage to manage these four levels of integration. + +Single Sign-On (SSO) is used to login users throughout all integrated +applications. REMOTE\_USER HTTP header is sent to the applications and we +expect that they know how to handle it, since this is a common authentication +mechanism. The integrated applications should be in a local network to avoid +security issues. With this the user will be able to navigate through the +platform applications and will not be asked for authentication credentials. + +As Colab is a reverse proxy, it makes some HTML transformations in the HTTP +response of integrated applications to provide a unified interface. Allows one +to define some default templates to be used by all applications and overwrite +when needed in its plugin. This approach allowed us to reuse some HTML pages +which facilitates maintenance. + +A publish-subscribe implementation was used to handle events in the platform. +Thus, if some application want to trigger some action in case that other +application do something is possible. A registration of the desired events and +implementation of the handlers must be done in the plugin of each application. +This bring us many options to innovate in these integrations. + +A integrated search engine is provided by Colab. Each plugin specify which data +will be indexed and will became available for the users, just need an simple +implementation of how should perform the collection of data. Initially, Colab had support for a small set of applications (Trac, GNU Mailman, Apache Lucene) and all of them was hard-coded; our team evolved Colab -- libgit2 0.21.2