This document discusses how Docker and Kubernetes can help companies improve speed and agility of innovation. It provides an overview of Docker and Kubernetes, explaining how containers and orchestration allow for flexible infrastructure and streamlined development workflows. It also discusses strategies for moving applications to these technologies incrementally.
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
Speed & Agility of Innovation with Docker & Kubernetes
1. Speed & Agility
of Innovation with
Docker & Kubernetes
Damjan Velickovski, Keitaro
Justin Noel, ICS
2. About ICS
● Founded in 1987, currently 120 employees
● HQ in Boston; Field office in Sunnyvale
● We provide:
○ UX design services
○ UI development
○ Software development services
○ Linux and QNX platform and board support
○ Full end to end product realization
○ Qt training
● Delivering 70+ projects each year for global
brands
3. About Keitaro
● Keitaro is an open-source company founded in 2012
● Working with businesses, governments and communities across the globe
● International team based in Sweden, UK, Macedonia and the USA
● Core business and services:
3
4. Cloud Native Technologies in Numbers
● Kubernetes has more than 2000 active contributors on GitHub
● IBM bought RedHat for $34 Billion
● SUSE bought Rancher for $600 Million
● The projected market for container technologies in 2022 is
$4.3 Billion
4
8. What is Cloud Native?
The term cloud native describes how an application is developed
and delivered. Cloud native applications work with standardized
open-source technologies that enable seamless migration and
cooperation between different cloud vendors and on-premise
data-centers equipped with cloud native technologies such as
Docker, containerd, Kubernetes and so on.
8
10. Docker
10
● Packaging applications into container images
● Container images are run on the container engine to become
running containers
● Containers are standardized executable components that combine
the application code with an OS and all dependant libraries
● Solves dependency management and configuration problems
● Enables easy vertical scaling
11. Kubernetes
● Kubernetes is a container orchestrator
● It provides mechanisms for organizing, automating, securing
and scaling containers
● It has flexible design and it’s actively worked on to fit different
usage scenarios
11
12. Why are Containers and Kubernetes so Popular?
● Streamlined promotion between development, staging and
production environments.
● Fits agile ways of working
● Applications can be broken down and deployed as
separate components
● Different components can be managed by different teams
● Horizontally and vertically scalable
● Managed infrastructure (on-premise, cloud, edge and mixed)
12
13. Kubernetes for the
Cloud & for the Edge
13
Speed & Agility of Innovation
with Docker & Kubernetes
14. Kubernetes for the Cloud
14
Amazon Elastic
Kubernetes Service
Google Kubernetes
Engine
Azure Kubernetes
Service - AKS
Container Service for
Kubernetes (ACK)
15. Cloud vendors services
15
Google Cloud
BigQuery
Google Cloud
IoT Core
Google Cloud
SQL
Cloud vendors typically offer fully managed open-source or proprietary
applications to gain competitive advantage. Internally, cloud vendors
utilize Kubernetes to provide these managed solutions.
16. Kubernetes for the Edge
● CNCF has dedicated working group for bringing Kubernetes to
the Edge
● Lightweight Kubernetes distributions
○ K3s (CNCF Sandbox)
○ Microk8s (CNCF Member project)
● Edge Computing Platforms
○ KubeEdge (CNCF Incubated)
○ Eclipse ioFog
● High performant data and metrics collectors and transformators
○ Prometheus (CNCF Graduated)
○ Fluentd (CNCF Graduated)
○ Apache Kafka
16
17. Moving to containers
and Kubernetes:
How and Why
17
Speed & Agility of Innovation
with Docker & Kubernetes
18. 18
Moving to containers and Kubernetes:
How and Why
Before making a switch, beware of the pros and cons
● Pros:
● Future-proof and flexible infrastructure
● Streamlined environment management
● Easy CI/CD Integration
● Cons:
● Might require refactoring parts of the application
● Learning curve to go through
● Change in how people might be comfortable working
19. 19
Moving to containers and Kubernetes:
How and Why
● Moving to Kubernetes can
be done incrementally
based on the application API
21. 21
Docker for Qt Development
● Docker distributes and updates systems
○ Qt applications and development require a number fairly
complex systems
■ Application build system
■ Embedded OS build system
■ Application runtime system
○ Docker containers can help you manage these systems
22. 22
Application Runtime
● Most obvious usage for Docker containers however,
○ Qt has packaging solutions for most major platforms.
○ Qt itself has very few external dependencies (ships most
dependencies)
● Embedded systems get the most benefit
○ Tightly controlled versioning 3rd party libraries
■ Run Yocto 3.0, but need different versions of various libraries
● Newer or older. Including Qt.
23. 23
Docker Containers on Embedded Systems
● Some vendors support containers out of the box for Yocto or Buildroot.
○ See Toradex Torizon Distribution
■ With containers hierarchies. Qt w/ Wayland out of the box!
○ Tightly controlled library and database dependencies
○ Easy OTA update scheme
○ Helps you avoid Yocto black magic.
■ At least for shipping your Qt application.
■ Device drives not included.
24. 24
Containerized Build Environments
● Controlled build environments can save you a lot of time. Usual
scenario:
■ Lengthy document describing how to install everything to build
● Get Qt, device SDK, valgrind, other tools, 3rd party libraries
● Usually everyone has forgotten some minor details that derails a new
hire’s 1st couple of days.
● Even after this you are “pretty sure” everyone’s build environment is the
same.
● And the CI server is “probably” the same as the developer’s machines.
○ No worse phrase than “It works for me.”
○ Who else has spent time shelled into a build agent debugging a test?
25. 25
Benefits of a Containerized Build Environment
● Onboarding new team members.
○ New developers can just install the right container from Docker
Hub.
● Build system is controlled and centrally update-able.
○ Developers can pull the latest build environment from Docker Hub.
■ No more fragile instructions to update library foo to version
x.y.z
● Easy continuous integration
○ Build server uses the SAME build container!
26. 26
Benefits of a Containerized Build Environment
● Controlled environments require controlled build systems
○ FDA loves this concept. Same tools, same compilers, same output.
○ Usually leaves you stranded on an old Linux Distro.
■ Projects can have a very long duration. Even longer than 5 year
LTS.
■ Forget about running a rolling distribution (very fashionable
right now)
○ Containers can solve this. Update your base OS for security and
HW support.
■ All development uses tools and libraries from inside the
container.
27. 27
Containerized Yocto Build Systems
● Building Yocto is not very distribution tolerant.
○ Once you have an SDK you can develop almost anywhere.
○ Getting that image and sdk requires exact version of various
distros
■ You will have the most luck on Ubuntu 16.04 LTS.
■ It’s way out of date, but will reliably build Daisy through
Gatesgarth.
○ VM’s build very slowly. Other option is keeping a spare machine
around.
○ Or install an Ubuntu 16.04 container and use it to build images.
■ VM-like isolation. Native-like speed. Redistributable!