Cloud Computing
Overview
- Credit value: 15 credits at Level 7
- 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.
We will build on the material taught in related modules such as Principles of Programming and Programming in Java. If you are taking this module you are assumed to have excellent programming knowledge already.
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. We will use a mix of Node JS and Python for cloud native application development.
You should have excellent knowledge of Python, which is a requirement for various tutorials and be taught Node JS at a fast pace; thus, you should expect to learn fast. Finally, we conclude the development of cloud-native applications using modern tools such as Kubernetes.
This is a highly technical module with a heavy programming lab schedule.
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 micoservies 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.