This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
infrastructure.rst 3.01 KiB
Newer Older
CodeAbility Sharing Platform
===========================

The modules provided in this repository represent part of CodeAbility's Sharing Platform.
Subsequently, the infrastructure of the Sharing Platform and the setup of this infrastructure are discussed.

The following diagram depicts the Sharing Platform's general infrastructure.

.. image:: SearchArchitectureFileHook.png
   :width: 600pt
   :alt: GitLab search infrastructure

In the following, a brief description of each component is given.

- GitLab: Publicly available `GitLab <https://about.gitlab.com/>`_ instance that manages file versioning and storing. This instance has a dedicated group called ``sharing``. Resources (e.g.,  lab exercises, lecture slides, collections of links, or Artemis exercises) published in this group are shared with the CodeAbility project partners.
Michael Breu's avatar
Michael Breu committed
- FileHook: A minimalstic gitlab filehook-stub that forwards gitlab events (https://docs.gitlab.com/ee/system_hooks/system_hooks.html) to the gitsearch application for processing and indexing.
- GitSearch Application: Frontend of the CodeAbility's Sharing Platform metadata search. 
  It is implemented as a `JHipster <https://jhipster.tech>`_ application and provides a REST API for querying the metadata.
  Additionally it handles GitLab's system_hooks events and processes potential changes in meta data.
  It validates and indexes the detected meta data. Further details can be found in the section :ref:`ref_filehooks`
 Further details can be found in the section :ref:`ref_git_search`.
- MySQL: Database for the frontend to store various application data e.g., user data.
- Elasticsearch: `Elasticsearch <https://www.elastic.co/elasticsearch/>`_ instance providing a search engine.

The components can be partitioned into the frontend and the backend of the CodeAbility Sharing Platform.
The following services are considered part of frontend:

- GitSearch Application
- MySQL

Michael Breu's avatar
Michael Breu committed
While, the subsequent components are part of the backend:
- GitSearch Indexer
- GitLab
- Elasticsearch

Additionally an instance of
 - `portainer <http://portainer.io/>`_

is running

+-----------------+-----------------------+-------------------------------------------+
| Service         | Container name        |          Port Mapping                     |
+=================+=======================+===========================================+
| GitLab          | sharing_gitlab        | 10082->80,10083->443, 22->22, 5051->5051  |
+-----------------+-----------------------+-------------------------------------------+
| Elasticsearch   | sharing_elasticsearch | 9200, 9300 (unmapped)                     |
+-----------------+-----------------------+-------------------------------------------+
| GitSearch Appl. |                       | 10083->8080                               |
+-----------------+-----------------------+-------------------------------------------+
| MySQL           | sharing_my_sql        |                                           |
+-----------------+-----------------------+-------------------------------------------+