Dr. Niall McMahon
An edited version of lecture notes by Dr. Michael Scriney.
2022-11-08
If you print these slides, think about using two pages per sheet although don't worry too much about it!
-
Deployment and testing are hard.
-
Systems are a lot more complex these days.
-
Microservices mean more deployments and more CI/CD.
-
Maximize efficiency with automation.
It's important to have a long-term, people-centric view.
One example is the Toyota Way with its three core principles. These are:
-
The right process will produce the right results.
-
Add value by developing people.
-
Continuously solve root problems.
-
Although writing software is a little more abstract than building a car or a wind turbine, the code development and operations pipeline is similar to a factory production line.
-
Main objective is to create a steady flow that minimises waste
-
In addition to the mindset you must have technical knowledge.
-
Proficiency in multiple tools is essential as well as understanding their strengths, weaknesses and how they interact.
-
Assuming a cloud deployment, e.g. AWS, Azure or GCC, tools you might need include:
-
Containers.
-
Separates code from infrastructure.
-
Ensures the same code environment regardless of physical deployment.
-
A Docker node is a machine that where containers are deployed.
-
Containers.
-
Similar to Docker but for a cluster of nodes, i.e. many machines.
-
Useful for large systems.
-
Automates tedious aspects of software build, test and deployment.
-
Helps reduce human error and speed continuous integration and delivery.
-
Allows specification of data centre infrastructure.
-
Supports most of the large cloud providers.
-
Is another infrastructure as code tool.
-
Python based configuration of machines.
-
The aim is to allow machines to be easily integrated into a system.
-
Code pushed to .git repo.
-
Jenkins pulls the new code.
-
Docker instances created.
-
Kubernetes cluster created.
-
Push to cloud.