Skip to content

PhenoMeNal Portal Infrastructure

namratakale edited this page Jul 24, 2018 · 27 revisions

Overview

The PhenoMeNal Portal is also branded as PhenoMeNal Gateway, that allows users to deploy their own Cloud Research Environment on different cloud platforms. The PhenoMeNal Portal now supports OpenStack, Amazon Web Services, Microsoft Azure and Google Cloud Engine.

Infrastructure of the PhenoMeNal Portal

The PhenoMeNal Portal consists of a number of components which have been containerised in docker containers and can run in Kubernetes cluster.

Running on Kubernetes

Kubernetes (commonly referred to as "K8s") is an open-source system for automating deployment, scaling and management of containerised applications. It aims to provide a platform for automating deployment, scaling, and operations of application containers across clusters of hosts. It supports a range of container tools, including Docker. The current PhenoMeNal Kubenetes cluster is running Docker container tool.

In order to deploy the Portal in a Kubenetes cluster, the helm deployment settings are required to be defined. https://github.com/phnmnl/helm-charts is the Helm Chart for running PhenoMeNal Portal on a Kubenetes cluster.

In general, Kubernetes cluster continuous releases of well documented and user friendly packages. These packages are being created as Helm Charts and can be installed using the Helm tool. Helm allows users to easily templatize their Kubernetes manifests and provide a set of configuration parameters that allows users to customize their deployment. Helm is the package manager (analogous to yum and apt) and Charts are packages (analogous to debs and rpms). The home for these Charts is the Kubernetes Charts repository which provides continuous integration for pull requests, as well as automated releases of Charts in the master branch.

Main Frontend for Portal + App Library + Wiki

The main frontend for Portal + App Library + Wiki is a web interface that is publicly hosted at https://portal.phenomenal-h2020.eu/. Its development version of the PhenoMeNal portal is hosted at https://portaldev.phenomenal-h2020.eu/

The main frontend for Portal + App Library + Wiki is a Single Page Application (SPA) developed by using a Javascript framework called Angular (Formerly known as Angular 2+), supported by Google. This Javascript framework enables fast application development, fast web page rendering, taking advantages of using Model-View-Controller concept and it is ideal for responsive application development.

The Main Frontend provides a web interface that allows users to deploy Cloud Research Environments, searching for tutorials and applications within the PhenoMeNal Portal by making AJAX calls to the backend components of the PhenoMeNal Portal. The Backend components includes the following AAP, App Library PHP middleware, User and Audit database, Github Wiki Caching middleware.

Authentication

AAP stands for Authentication and Authorisation Protocol, which is developed and maintained by Elixir. It is a Single Sign-On facility that allows users to register and login to the PhenoMeNal Portal with their existing accounts. At the moment, AAP Supports institutional account, ORCHID, LinkedIn, and Google account.

  • Languages used: Java 8, Spring Boot, Spring MVC
  • Code Base Repo: TBA
  • Container Repo: N/a

The AAP is hosted within the Elixir cloud infrastructure. The PhenoMeNal Portal will redirect the users to the AAP web interface where users can login with their own accounts (Google, LinkedIn, ORCID, or their academic credentials if recognised by Elixir). Once a user is logged in, the user would be returning back to the PhenoMeNal Portal main front-end with a valid JWT token (JSON Web Token) which can be used to trigger API calls for Cloud Research Environment deployment.

App Library PHP Middleware

App Library PHP middleware is a software programme that constantly fetches README.md of containerised applications from the PhenoMeNal GitHub Repository. Each developer who is responsible for the containerisation of tools in PhenoMeNal must write a README.md and place it at the top of the directory in the master branch, following this specifications. App Library PHP middleware will then be able to fetch and parse the information within README.md and return them back as JSON responses. The PhenoMeNal main frontend portal will then consume the JSON responses and display information accordingly.

The App Library PHP middleware will not be updated automatically. The administrator is required to add a new repo directory to the config file, a command will then need to be run for caching README.md at the middleware. For further information please visit App Library PHP middleware

User and Audit Metadata Backend

The User and Audit Metadata backend is a PHP middleware that handle requests from the PhenoMeNal Portal main front-end, including fetching user and audit metadata, adding user and audit metadata to the database. The user and audit metadata are generated through the use of the PhenoMeNal Portal. For example, the agreement and terms and conditions of users will be recorded in the User and Audit Metadata MySQL database when a user agrees the terms before using the PhenoMeNal Portal.

This code base is developed using PHP 7.1 and SLIM framework. For the reference of how SLIM framework works, please refers to https://www.slimframework.com/.

User and Audit Metadata MySQL database

The User and Audit Metadata MySQL database provides the persistence for User and Audit Metadata which are generated through the use of the PhenoMeNal Portal. MySQL database settings have been extracted and stored in the Portal helm deployment settings, which can be easily modified by the administrator.

Github Wiki Caching middleware

Github Wiki Caching middleware is a software programme that constantly fetches the content of Wiki from a PhenoMeNal GitHub Repository. Github Wiki Caching middleware will then be able to fetch and parse the information within Wiki and return them back as JSON responses. The PhenoMeNal main frontend portal will then consume the JSON responses and display information accordingly.

Domain-specific Frontend to TSI Cloud Portal

Domain-specific Frontend to TSI Cloud Portal is a web frontend offered by TSI Cloud Portal. It has similar functionality as the PhenoNeNal main frontend.

  • Languages used: Angular 2+, HTML5, CSS3
  • Code Base Repo: TBA
  • Container Repo: N/a
Clone this wiki locally