Lab 1: Infrastructures as a Service, a comparative study

Application deployment & comparative study of Cloud infrastructures (IaaS)

This work will be done by groups of 5 students.

The goal of this lab is to compare the “functionalities” and “performances” of five Cloud infrastructures (IaaS): AWS Amazon, Google Cloud Engine, Microsoft Azure, SwitchEngine (OpenStack) and Exoscale (CloudStack). To carry out this practice-oriented comparative study, you are asked to deploy a distributed three-tier application of your choice, on the 5 infrastructures. For each IaaS, the deployment is done in two ways:

  1. Manual deployment : by using the GUI of the related IaaS

  2. Automatic deployment: by using the proprietary API of the IaaS.

Each member of the group has the responsibility to deploy the application on one IaaS. The five members of the group must then write a comparative study document based on criteria to be defined following the 5 deployments.

The selected distributed three-tier application must contain at least 3 modules: an object storage (database), a back office and a front office modules. Each module will be deployed on a separate instance (VM).

Please keep in mind that this is not a programming exercise. You are not asked to develop a distributed three-tier application. Feel free to use the application of your choice, its "quality" will not affect the grade.

Each group must propose its application for validation See details here.

Deliverables (deadline: October 19th 2021, 20h45):

A comparative study document (pdf format), with this structure: 

  1. Git URL containing the 5 python programs representing the 5 automatic deployments of the application on the 5 IaaSs

  2. Members of the students group:

    1. Name 1 : AWS Amazon

    2. Name 2: GCE

    3. Name 3: Azure

    4. Name 4: SwitchEngine

    5. Name 5: Exoscale

  3. The Application (on page max.). See details here

  4. The criteria (one page max). Choose a maximum of 4 criteria and describe the 5 IaaSs according to these criteria. Please use a table that contains the IaaSs (AWS, GCE, Azure, OpenStack and CloudStack) in rows and the criteria in columns.

    Conclusion/synthesis (one page max): your personal overview/conclusion.

The name of the pdf document should be the concatenation of the names of the 5 students who constitute the group.

Guidelines

You will use Python to access the APIs (automatic deployment). The tested version is 3.6.9. Higher versions might work but it's not guaranteed. Keep in mind that you should never use system Python. The alternative is to use conda. Conda is a package/environment management system running on Windows, macOS, and Linux. It allows you to easily switch between Python versions without breaking your system Python.

To install conda run the following commands and follow on screen instructions:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

You can check your python version with the following command:

python3 --version

Since these tutorials might break your system python installation we recommend you use a virtual environment for each cloud provider.

A virtual environment isolates a copy of a specific Python interpreter. Once you activate that environment, running pip install installs a library into that environment only. When you then run your Python code, it runs in the environment's exact context with specific versions of every library. And when you run pip freeze, you get the exact list of the those libraries.

If you don't use a virtual environment, then Python runs in its global environment. Although using the global environment is quick and convenient, it tends to bloat over time with all the libraries you install for any project or experiment. Furthermore, if you update a library for one project, you might break others projects that depend on different versions of that library. And because the environment is shared by any number of projects, you can't use pip freeze to retrieve of a list of any one project's dependencies.

The global environment is where you do want to install tool packages that you want to use in multiple projects. For example, you might run pip install gunicorn in the global environment to make the gunicorn web server available everywhere.

Conda allows you to create virtual environments. The Conda user guide will guide you through the creation of you first environment.

https://docs.conda.io/projects/conda/en/latest/user-guide/getting-started.html#managing-environments

For further informations about environment management using conda the

https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html

Cloud providers tutorials

The following tutorials are specific to Linux systems and are tested using Ubuntu 18.04.

If you have Windows, it is easy to setup an Ubuntu 18.04 subsystem https://docs.microsoft.com/en-us/windows/wsl/install-win10

Amazon Web Services (AWS)

OpenStack (SwitchEngine)

Microsoft Azure

Google Compute Engine (GCE)

CloudStack (Exoscale)

Modifié le: lundi 27 septembre 2021, 17:42