Topic 3. Everything As Code (+ Docker)
In this unit, we will explore the idea of formalizing your entire software stack using code (e.g. operating system configurations, dependencies, documentation, and more). Even if your team is collaborating on the same codebase, if each team member is developing software with a different compiler, interpreter, language version, operating system, etc., you will likely run into conflicts and inconsistencies. Give this, you will learn about why "everything as code" is such an important idea, and some tools and strategies for managing your system stack over time.
Readings
This week our topic is “Everything as Code.” Readings are a bit light because I’m hoping you’ll spend your outside-of-class time getting oriented with Docker.
Slides
- Everything As Code (9/10)
Tuesday, 9/10
Slides & Activities
- Lecture 5Everything as Code
- Activity 1Git Collaboration Activity
Readings
Thursday, 9/12
Slides & Activities
- Lab 4Intro to Docker
Readings
- optional Docker cheat sheet reference
Study Questions
- What were servers "back in the day"? What are servers now?
- What kinds of server challenges do administrators need to be able to handle?
- What is virtualization? What is containerization? How are they different?
- What is the difference between declarative and imperative code? What are some examples of each?
- Besides your application's source code, what other kinds of things should you also represent as code?
- What are some of the advantages of putting all aspects of your system in terms of code?
- What is Docker and why is it useful?
- Be able to explain the following Docker concepts: image, container, volume, bind mount