Commit 208ac9d6bbf679710b24921f0958002c107a8522

Authored by Lucas Kanashiro
1 parent 38934816

architecture: improve Colab description

Showing 1 changed file with 37 additions and 5 deletions   Show diff stats
opensym2017/content/05-architecture.tex
... ... @@ -39,11 +39,43 @@ described how we integrated those tools and conclude with the deployment.
39 39  
40 40 \subsection{Colab}
41 41  
42   -For the second requirement, we decided to use a web integration platform named
43   -Colab\footnote{\url{https://github.com/colab/colab}}. It works as a frontend
44   -for other web applications as a reverse proxy, manages authentication, and can
45   -apply changes to the HTML provided by the integrated applications in order to
46   -bring visual consistency.
  42 +Colab\footnote{\url{https://github.com/colab/colab}} has integration of web
  43 +applications as its main goal, the user of this integrated system should not
  44 +notice the change between the integrated applications. To do that Colab was
  45 +designed to use plugins of each application and has four levels of integration:
  46 +
  47 +\begin{itemize}
  48 + \item Authentication
  49 + \item Visual
  50 + \item Events
  51 + \item Data and search engine
  52 +\end{itemize}
  53 +
  54 +Colab works as a reverse proxy, therefore all external requests pass through
  55 +it, this is an advantage to manage these four levels of integration.
  56 +
  57 +Single Sign-On (SSO) is used to login users throughout all integrated
  58 +applications. REMOTE\_USER HTTP header is sent to the applications and we
  59 +expect that they know how to handle it, since this is a common authentication
  60 +mechanism. The integrated applications should be in a local network to avoid
  61 +security issues. With this the user will be able to navigate through the
  62 +platform applications and will not be asked for authentication credentials.
  63 +
  64 +As Colab is a reverse proxy, it makes some HTML transformations in the HTTP
  65 +response of integrated applications to provide a unified interface. Allows one
  66 +to define some default templates to be used by all applications and overwrite
  67 +when needed in its plugin. This approach allowed us to reuse some HTML pages
  68 +which facilitates maintenance.
  69 +
  70 +A publish-subscribe implementation was used to handle events in the platform.
  71 +Thus, if some application want to trigger some action in case that other
  72 +application do something is possible. A registration of the desired events and
  73 +implementation of the handlers must be done in the plugin of each application.
  74 +This bring us many options to innovate in these integrations.
  75 +
  76 +A integrated search engine is provided by Colab. Each plugin specify which data
  77 +will be indexed and will became available for the users, just need an simple
  78 +implementation of how should perform the collection of data.
47 79  
48 80 Initially, Colab had support for a small set of applications (Trac, GNU
49 81 Mailman, Apache Lucene) and all of them was hard-coded; our team evolved Colab
... ...