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,11 +39,43 @@ described how we integrated those tools and conclude with the deployment. | ||
39 | 39 | ||
40 | \subsection{Colab} | 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 | Initially, Colab had support for a small set of applications (Trac, GNU | 80 | Initially, Colab had support for a small set of applications (Trac, GNU |
49 | Mailman, Apache Lucene) and all of them was hard-coded; our team evolved Colab | 81 | Mailman, Apache Lucene) and all of them was hard-coded; our team evolved Colab |