Skip to main content

Cloud Computing Concepts

Overview

  • Credit value: 15 credits at Level 6
  • Convenor: Dr Stelios Sotiriadis
  • Assessment: a programming task and report (30%) and two-hour examination (70%)

Module description

In this module we introduce the concepts of distributed computing systems, scalability and development and configuration of complex large scale systems. You will learn how to develop and deploy modern applications on the cloud.

You will be introduced to various modern tools and technologies, including the use of virtual machines and containers, the configuration of distributed systems, the deployment of NoSQL systems, and the development of RESTFul services. The module uses a mix of Node JS and Python for cloud native application development. We conclude with the development of cloud-native applications using modern tools such as Kubernetes.

You should have excellent knowledge of Python, which is a requirement for various tutorials, and Node JS will be taught at a fast pace so you must be prepared to learn quickly.

This is a highly technical module with a heavy programming lab schedule. It includes tutorials on deploying and using modern big data tools, including public cloud providers such as the Google Cloud Platform and Microsoft Azure, and the deployment of custom Node JS applications and microservices using Docker and Kubernetes.

Indicative syllabus

  • Introducing cloud and cloud-native applications
  • Using Linux environments and command line interfaces
  • Introducing cloud services, virtualisation, web services, REST and authorisation protocols
  • Using Node JS to develop micoservices and RESTFul APIs
  • Introducing cloud data storage systems and NoSQL systems for microservice development
  • Using messaging systems for distributed application development
  • Introducing container systems and distributed protocols and systems configuration
  • Introducing distributed systems approaches and algorithms such as the byzantine fault tolerance, logical clocks, Paxos, Raft and others
  • Deploying and scaling cloud applications using distributed orchestrators such as Kubernetes

Learning objectives

By the end of this module, you will be able to:

  • understand complex distributed computing systems algorithms
  • use Linux systems and the command line interface
  • develop microservices following the RESTFul architecture using Node JS and distributed databases
  • deploy and configure containerised systems (e.g. using Docker)
  • develop cloud native applications on the cloud using containarised environments and orchestrators
  • conceptualise architectures for cloud native applications.