Coder Social home page Coder Social logo

infrastructure-class's Introduction

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.

infrastructure-class's People

Contributors

estenrye avatar jasondbaker avatar jasondbakerspok avatar jknudsen avatar jmahowald avatar rclc avatar sidi-cheikh avatar

Watchers

 avatar  avatar

Forkers

aralek2004

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.