Lecturer(s)
|
-
Brenkus David, Ing. Ph.D.
|
Course content
|
Lectures outline (not aligned to the weekly schedules): Introductions, reasons for introducing the DevOps methodology, its goals, phases and metrics. Continuous integration and delivery (CI/CD), build pipeline principles, definition of testing, staging and production environments. Software deployment and dependencies provisioning. Theory and strategies of software updates. Basic types of software artifacts, their distribution and mutual dependencies maintenance. Introduction to the container architecture. The container architecture, principles and benefits. Introduction to the build process, distribution and deployment of containers in CI/CD pipelines. The approach of infrastructure as code. Basic principles, versioning and change deployment. Dynamic aspects of infrastructure and automatic scaling. Infrastructure CI/CD. Software monitoring, tracing and event auditing. Metrics collection, important operational metrics of software systems. Log aggregation, archiving and retention policies. Utilizing metrics in software design, development and operation. Understandability and correct interpretation of collected metrics. Service level indicators and how to choose them. Sensitive data handling in systems logs. Software security aspects during design, development and operation. Designing secure software, static code analysis, penetration tests. Software composition analysis, bill of material, third-party software security, license compliance in terms of software distribution types. CI/CD in context of database systems. The problem of database data and schema migration, differences in traditional relational database and noSQL database migration. Application of CI/CD principles in the areas of mobile applications and IoT devices. Continuous feedback and its implementation in particular phases of build pipelines. Automatic notifications on outages, negative trends in operational parameters of software. Failure recovery processes and audit. Systems for feature and bug tracking.
|
Learning activities and teaching methods
|
- Contact hours
- 48 hours per semester
- Practical training (number of hours)
- 32 hours per semester
- Preparation for an examination (30-60)
- 24 hours per semester
|
prerequisite |
---|
Knowledge |
---|
Mastering at least one higher level programming language at intermediate level. |
Ability to design and implement an application of a small to intermediate scale at the level of the KIV/SAR and KIV/PIA courses. |
Knowledge of TCP/IP network fundamentals and the OS Unix/Linux environment at the level fo the KIV/UPS and KIV/ZOS courses. |
Knowledge of higher communication protocols at the level of established application interfaces at the level of the KIV/PIA course. |
Knowledge of basic principles of agile software development at the level of the KIV/ZSWI course. |
Skills |
---|
Mastering at least one common versioning control system at the level of the KIV/ZSWI course. |
General knowledge of process and resource management of Unix/Linux operating systems at the level of the KIV/ZOS course. |
Develop and debug software in the Unix/Linux environment. |
Competences |
---|
N/A |
N/A |
learning outcomes |
---|
Knowledge |
---|
Ability to describe and explain the model of cooperative development, automatic deployment, secure and reliable application operation. |
Ability to understand basic concepts and problems of cooperative software development like technical debt, regression and the problem of trust in open-source and third party software quality. |
Ability to understand the functions and importance of the particular stages of software development and to be able to implement them using own or third party software. |
Knowledge of software deployment and update strategies. |
Knowlegde of software and software components distribution approaches. |
Basic knowledge of container technologies. |
Overview of monitoring possibilities, metrics of operated software and their use for diagnostics and software operational parameters trends monitoring. |
Skills |
---|
Practical experience with at least one tool for infrastructure management and deployment automation. |
Practical experience with at least one tool for build pipeline development. |
Practical experience with the CI/CD model and build pipelines design. |
Practical experience with the design and implementation of the cooperative development model. |
Competences |
---|
N/A |
teaching methods |
---|
Knowledge |
---|
Lecture supplemented with a discussion |
Group discussion |
Self-study of literature |
Skills |
---|
Practicum |
Skills demonstration |
Group discussion |
Competences |
---|
Interactive lecture |
assessment methods |
---|
Knowledge |
---|
Written exam |
Continuous assessment |
Skills |
---|
Skills demonstration during practicum |
Continuous assessment |
Competences |
---|
Written exam |
Recommended literature
|
-
Gonzales, David. Implementing Modern DevOps. Packt Publishing, 2017. ISBN 978-1-78646-687-7.
-
Hsu, Tony. Hands-On Security in DevOps. Packt Publishing, 2019. ISBN 978-1-78899-550-4.
-
Krief, Mikael. Learning DevOps. Packt Publishing, 2019. ISBN 978-1-83864-273-0.
|