Commit 208ac9d6bbf679710b24921f0958002c107a8522
1 parent
38934816
Exists in
master
and in
3 other branches
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 | ... | ... |