Skip to content

estenrye/infrastructure-class

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevOps & Cloud Infrastructure (SEIS 665) Curriculum

Overview

In late 2015, the faculty and administration at the University of St. Thomas Graduate Programs in Software asked me to review their current IT graduate curriculum to determine how well it aligned with current IT practices. While much of the curriculum was still relevant, it was clear that the program didn't address some of the dramatic changes reshaping IT organizations. The idea for a new graduate IT course was born from that review process and subsequent discussions with other practitioners in the IT field.

DevOps is rapidly gaining adoption at IT organizations across the world. It represents an IT cultural transformation combining ideas from Lean, Agile, and software development. Cloud infrastructure is a key enabler of DevOps practices, and is a foundational component of modern Internet services.

Students that understand how to wield DevOps practices and create infrastructure as code are empowered to deliver IT services at nearly any scale. These students represent the future of our IT organizations.

Audience

The curriculum was designed for graduate students at a large private university located near a major metropolitan area. The students represent a mixture of age groups, cultural backgrounds, and technical experience levels. Most students tend to be working professionals with 5-15 years of corporate experience. Approximately 40% of the students are International students coming from a wide variety of educational systems.

Students taking this course may have 10+ years of IT experience or no experience at all. Some of the students are transitioning into IT as a new career. One of the challenges I faced while creating this curriculum was figuring out how to calibrate the technical depth of the content. In most instances, I opted to make the content more rigorous to challenge experienced students while at least giving less experienced students exposure to new ideas.

Curriculum Approach

I've never developed educational curriculum before and I didn't follow any particular methodology when creating this course. I created the kind of class that I'd like to take.

The curriculum is based around a process of exploration and hands-on learning. Students are presented with a few theories and best practices, and then we dive straight into real-world implementation. We learn by doing. My hope is that an appreciation for DevOps practices will emerge as students progress through the course.

I'm treating this curriculum as a grand experiment and hope to receive fast feedback from students. I expect to make meaningful changes in future months based on student and peer critiques.

The course is focused on helping students develop skills related to DevOps and cloud infrastructure. Students learn how to walk before they run. Each lesson builds on the learnings from the previous lesson.

The 14-week course is partitioned into 12 lectures and 2 exams. Each lecture is designed cover 3 hours worth of content. Students are given assignments each week for a total of 10 assignments (or 11 if you count the first assignment which just involves account setup).

Students start out the course by learning fundamental version control and Linux system administration skills. The first two lessons are designed to bootstrap students into the core parts of the curriculum. Without these basic skills, it would be difficult for students to navigate many of the future assignments.

The next few courses introduce students to fundamental infrastructure deployment patterns, virtualization, and cloud infrastructure. The cloud infrastructure curriculum is loosely based on the AWS Solution Architect Certification blueprint. The idea is that after completing this course students can pursue an AWS certification with a small amount of incremental effort. Most of the lessons learned using AWS may be applied to other cloud providers such as Microsoft or Google.

Students build on their infrastructure experience by learning how distributed applications are designed to take advantage of this dynamic infrastructure. They will learn that this infrastructure isn't built using traditional ad hoc methods. Students learn how to create infrastructure using code and how to programmatically manage the configuration of that infrastructure over time.

Finally, during the last quarter of the course students are formally introduced to DevOps practices, including continuous integration and delivery. The course finishes with lectures on containerization, service discovery, and container orchestration platforms.

Course Description

This course covers the engineering and design of IT infrastructure, focusing on cloud-scale distributed systems and modern DevOps practices. IT infrastructure deployment practices are rapidly changing as organizations build infrastructure as code and adopt cloud computing platforms. We will examine the theory behind these modern practices and the real-world implementation challenges faced by IT organizations.

Objectives

  • Understand how IT organizations are deploying modern infrastructure and how to build infrastructure as code.

  • Understand how to architect cloud-scale distributed systems and the key design patterns used to enhance scalability and reliability within these systems.

  • Develop specific skills related to DevOps practices including source control management, package management, and configuration management.

Lecture Schedule

Week Topic
1 Course Introduction, Source control, Git
2 Linux fundamentals, Package management, Shell scripting
3 Infrastructure fundamentals, Virtualization, Distributed infrastructure
4 Cloud computing, AWS, IAM, EC2, S3
5 Cloud computing, AWS, VPC, RDS, ELB
6 Cloud computing, AWS, Autoscaling, Cloud Watch, Route53, SQS, SNS, SES
7 Midterm
8 Devops Practices, Continuous integration & delivery
9 Infrastructure as Code, CloudFormation
10 Configuration Management
11 Jenkins & CI/CD Pipelines
12 Containers, Docker
13 Service discovery, Container orchestration
14 Final exam

Build

This repository requires the Asciidoctor toolchain to convert AsciiDoc files into PDF files.

The generate-pdfs.sh script in the /build directory will create PDF versions of all AsciiDoc files located in the root directory. The script can utilize Docker if it's available on the build platform.

The generate-syllabus.sh script in the /build directory will create an HTML version of the course syllabus.

TO DO

  • I need to improve the skill connection between assignments. I originally designed each lecture as a separate module. Assignments should leverage skills attained in previous learnings.
  • The hands-on portion of lectures isn't very interactive at this point. I need to improve that element of the course based on student feedback.

License

All material, except those images not owned by me and used for educational purposes, is licensed under a Creative Commons Attribution 4.0 International License.

Creative Commons License

Thanks

Special thanks go out to Charlie Betz for his collaboration and encouragement. I also would like to thank Dr. Bhabani Misra and Dr. Brad Rubin for their support and mentorship. Finally, thank you to my wife for letting me attempt this.

About

UST SEIS 665 DevOps & Cloud Infrastructure Curriculum

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Shell 100.0%