Course: Continuous software development and delivery

» List of faculties » FAV » KIV
Course title Continuous software development and delivery
Course code KIV/CICD
Organizational form of instruction Lecture + Tutorial
Level of course Master
Year of study not specified
Semester Summer
Number of ECTS credits 4
Language of instruction Czech
Status of course unspecified
Form of instruction Face-to-face
Work placements This is not an internship
Recommended optional programme components None
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.


Study plans that include the course
Faculty Study plan (Version) Category of Branch/Specialization Recommended year of study Recommended semester