Building applications for Kubernetes is both a challenge and an opportunity-a challenge because the options and complexity to develop for Kubernetes are evolving rapidly, an opportunity because, if done right, your applications will go into production quicker, scale easier, and run smoother.
This book outlines the impact of Containers and Kubernetes on modern software development and discusses the application frameworks to pick from, how to design an application, and how to develop for and on Kubernetes. You are guided through the application life cycle: development, build, and deployment into the runtime phase. In each phase, you see how it ties to Kubernetes and how to leverage its manifold capabilities. Applications will be more lightweight, easier to maintain, and simpler to operate by just focusing on the business logic.
This book provides a strong technical foundation in modern software development and operations. Practical examples show you how to apply the concepts and teach you the full potential of Kubernetes.
What You Will Learn
Get hands-on experience developing, building, and deploying software to Kubernetes
Develop your software to get the best out of Kubernetes
Focus on business logic while leveraging Kubernetes services
Design application components of different granularity from application server-based services to lightweight services
Automate deployments and Day 2 operations
Who This Book Is For
Developers who want to close the gap between development and the production environment in order to gain high delivery performance in terms of throughput and stability. This book also targets application operations and DevOps engineers.
¿Benjamin Schmeling is an IT professional with more than 15 years of experience in developing, building, and deploying Java-based software. Today, he works as a solution architect for Red Hat, with a passion for the design and implementation of cloud-native applications running on Kubernetes-based container platforms.
Maximilian Dargatz has been working in the IT industry for more than 10 years and consults clients on their journey to modernize applications for containers and Kubernetes. He currently works for IBM as a solution architect, working with large German clients on their cloud adoption and how to apply DevOps concepts.
Chapter 1: The Impact of Kubernetes on development
Chapter Goal: Understand the foundations of Kubernetes and how it disrupted development and operations
No of pages 30
Sub -Topics
- Introduction to Kubernetes
- Services provided by Kubernetes (Infrastructure, Cluster, Application, Developer)
- Why change development behaviour?
- How Kubernetes and DevOps fit together
Chapter 2: Application Design Decisions
Chapter Goal: Discuss various design decisions before you start with development
No of pages: 40
Sub - Topics
- Domain Driven Design
- Microservices
- Choosing the right programming platform (Quarkus, Javascript, Go ... (Python :)
- Application Deployment Models (App Server, Modular App Server, e.g. Galleon, Bootable Jar, Serverless, Function as a Service)
Chapter 3: Developing on and with Kubernetes
Chapter Goal: Learn different development models and options
No of pages : 50
Sub - Topics:
Local Development, Build and Testing - Hybrid Models (local coding / remote build / remote test, local coding / local build / remote test)
- Coding on Kubernetes
Chapter 4: Writing Kubernetes-native Applications
Chapter Goal: Explain how to leverage Kubernetes API, Resources, CRDs
No of pages: 20
Sub - Topics:
1. Using the Kubernetes API to make the application control the infrastructure
2. Create Custom Resource Definitions to interact with the application
3. Use Custom Resource Definitions to store application data
Chapter 5: Kubernetes-native CI/CD
No of pages: 30
Chapter Goal: How to Leverage Kubernetes for Build (pipelines)
- Staging environments
- Container Builds
- Kubernetes Build Pipelines
- Continuous Deployment
GitOpsChapter 6: Reproducible Deployments and Operations to Kubernetes
No of pages: 30
Chapter Goal: Show different ways of packaging and deploying applications and separating environment-specific configuration
- HELM
- What are Operators?
- Writing your own Operator
- Configuration Management
Chapter 7: Running Distributed Applications
No of pages: 30
Chapter Goal: Explain the different runtime aspects and how to use application service to shift technical responsibilities to the platform
- Composing applications from services
- Databases
- Leveraging platform services to purify business logic (Service Mesh, Prometheus, EFK)
- Kubernetes-native Middleware
Chapter 8: Managing the Application Lifecycle
No of pages: 20
Chapter Goal: Illustrate how to scale an application, release new features, manage traffic and make services more resilient in a distributed environment.
- Scaling your application
- Serverless / Function as a Service
- Canary Releases, Blue/Green Deployment, Dark Releases, A/B Testing
- Improving robustness and resiliency