Skip to Main Content

CS302

Download as PDF

DevOps Principles and Practices

SCIS Sch of Computing & Info Sys

Course (UG/PG)

Undergraduate

Offering Unit/Department

Course Description

Historically, the software development process was linear, and code was deployed infrequently. Today, it couldn't be more different: companies like Amazon reportedly deploy new code every 11.7 seconds, and software development culture in general has shifted towards iterating with agility. In this course, students will be introduced to some state-of-the-art practices for building, testing, deploying, and maintaining software, in a way that supports frequent and rapid iterations. In particular, they will study the 'DevOps' approach, which embodies the idea that development and operation teams should work closely together throughout the entire software lifecycle. As well as studying examples of this culture through some real-world case studies, students will also gain hands-on experience, by learning how to build loosely coupled systems based on microservices, and automating the process of testing, containerising, and orchestrating them using a modern continuous integration / continuous delivery (CI/CD) pipeline.

Course Learning Outcomes

Course Objectives

Upon completion of the course, students will be able to:

  1. Recognise and explain the main theories and practices of DevOps.

  2. Design, build, and evaluate microservices-based solutions.

  3. Apply containerisation technology in software deployment.

  4. Automate the various stages of the software delivery workflow.

  5. Build a complete CI/CD pipeline using modern tools.

  6. Manage and monitor deployed systems.

Competencies

Students will be able to:

  1. Describe the main practices and benefits of DevOps culture.

  2. Build microservices using suitable programming languages.

  3. Design and implement synchronous communication between microservices using REST APIs.

  4. Design and implement asynchronous communication between microservices using AMQP.

  5. Build external-facing API gateways.

  6. Utilise containerisation (e.g. Docker) and Infrastructure as Code (e.g. Terraform) technology.

  7. Manage microservices in production using container orchestration solutions (e.g. ECS, Kubernetes).

  8. Design and implement automated testing processes.

  9. Implement a complete CI/CD pipeline using modern tools (e.g. GitLab).

  10. Monitor a deployed application using appropriate tools (e.g. Prometheus).

Discipline-Specific Competencies

Software Design, Agile Software Development, Applications Development, Continuous Integration and Continuous Deployment, Software Testing

SMU Graduate Learning Outcomes

Disciplinary Knowledge, Critical thinking & problem solving, Collaboration and leadership, Communication, Self-directed learning

Grading Basis

GRD - Graded

Course Units

1