5. A typical SaaS Application Architecture
Microservice A Microservice B
Message Queue
Cluster
Database
Cluster
HA Load Balancer
6. A typical SaaS Application Architecture
Microservice A Microservice B
Message Queue
Cluster
Database
Cluster
HA Loadbalancer
99%
99% 99%
99%
99%
0,995
= 95% → 1h 12m Downtime per Day
7. Platform as a Service - Why Care?
DevOps Goals
● Zero Downtime
● Failure Handling & Recovery
● Automated Scalability
● Security & Patching
● Fast and reliable Deployments
● Supportable (Logging, Metrics)
● … while maintaining Developer
Productivity
Cloud Foundry takes care of it.
8. Cloud Foundry
PaaS, based on a container architecture
2 ways to deploy containers
Buildpacks for most languages Bring your own runC Container
Further Benefits:
● High-Availability Load Balancers
● Service Brokers for persistent services (Databases, Message Queues, etc.)
● Takes care of Failure & Recovery
→ Enables highly available applications, with minimal effort
CF builds, distributes and scales your containers
11. Continuous Deployment with Cloud Foundry
● Cloud Foundry has lots of “Batteries Included”
○ Infrastructure as Code
■ CF CLI automation (manifest files)
■ CF API automation (e.g. auto-scaling)
○ Use Blue/Green Deployments
■ High availability during deployment
■ Guards against failed deployments (e.g. App does not start)
○ Builtin Loadbalancer with TLS Termination
○ Managed Application Services with Databases etc.
○ Builtin logging infrastructure
12. ● Automate Deployments to Dev / Staging / Prod
○ Identical environments in different cf spaces
○ Control App Configuration via Environment Variables
● Deploy fast, deploy often
○ typically > 10 times per day to Dev
○ typically > 1 times per day to Prod
○ => Fast Feedback Loop!
● Diagnose production issues with logs, ssh & monitoring
○ collect logs via syslog drain
○ monitor e.g. via ELK Stack
Continuous Deployment with Cloud Foundry
13. Excursion: Concourse CI
● All Container-based CI
● Just three Core Concepts
○ Tasks: Execution of a script in an isolated environment (= container)
○ Resources: Anything that can serve as versioned Input/Output
○ Jobs: Connect Tasks + Resources
■ Think: function with Input/Output (Job->Job = Pipeline)
14. Cloud Foundry in the DevOps Ecosystem
● CF readily automates many common DevOps Tasks
○ Ideal for teams with lots of “dev” but little “ops” experience
● Make your own Control vs. Comfort Tradeoffs
■ Container vs. Buildpack Deployments
■ Container-to-Container Networking vs. shared Networking
● CF vs. Kubernetes
○ “Batteries included” vs. “just orchestration”
○ Both have their place and are converging on many features
■ CF is moving “down the stack” (e.g. container-to-container networking)
■ Kubernetes is moving “up the stack” (e.g. adoption of Service Broker API)