SlideShare a Scribd company logo
1 of 38
@dwStrebel
Dave Strebel
@dwStrebel
Dave Strebel
Hybrid IT
12 Factor
Microservices
PaaS
Oh My!
I. Codebase
27-Oct-15 5
II. Dependencies
Definitions : Yours and Theirs
III. Config
27-Oct-15 9
IV. Backing Services
27-Oct-15 11
V. Build, Release, Run…
27-Oct-15 13
VI. Processes
27-Oct-15 15
VII. Port Binding
27-Oct-15 17
RunningProcesses
Process Types
VIII. Concurrency
27-Oct-15 19
27-Oct-15CTL Cloud Platform Montly Ops Review 20
IX. Disposability
27-Oct-15 21
X. DevProd Parity
27-Oct-15 23
XI. Logs
27-Oct-15 25
27-Oct-15 26
XI. Admin
Processes
27-Oct-15 27
27-Oct-15CTL Cloud Platform Montly Ops Review 28
27-Oct-15 29
CF Architecture
The router shapes and routes all
external system traffic (HTTP/API)
and application traffic from the
internet/intranet. It maintains a
dynamic routing table for each
load-balanced app instance with
IP addresses and ports.
How It Works:
• Load balancing
• Maintaining an active routing table
• Access logs
• Supports web-sockets
Responsible For:
Router
The Cloud Controller maintains
command and control systems,
including interface with clients (CLI,
Web UI, Spring STS), account and
provisioning control. It also provides
RESTful interface to domain objects
(apps, services, organizations, spaces,
service instances, user roles, and
more).
How It Works:
• Expected App state, state
transitions, and desired
convergence
• Permissions/Auth
• Orgs/Spaces/Users
• Services management
• App placement
• Auditing/Journaling and billing
events
• Blob storage
Responsible For:
Cloud Controller
“Droplet Execution Agents” are secure
and fully isolated containers. DEAs are
responsible for an Apps lifecycle:
building, starting and stopping Apps
as instructed. They periodically
broadcast messages about their state
via the NATS message bus.
How It Works:
• Managing Linux containers (Warden)
• Monitoring resource pools
• Process
• File system
• Network
• Memory
• Managing app lifecycle
• App log and file streaming
• DEA heartbeats (NATS to CC, HM)
Responsible For:
DEA
Buildpacks are Ruby scripts that
detect application
runtimes/frameworks/plugins, compile
the source code into executable
binaries, and release the app to an
assigned DEA. Runtime components
can be cached for faster execution of
subsequent app pushes.
How It Works:
• Staging*
• /bin/detect
• /bin/compile
• /bin/release
• Configure droplet
• Runtime
(Ruby/Java/Node/Python)
• Container
(Tomcat/Websphere/Jetty)
• Application (.WAR, .rb, .js, .py)
Responsible For:
Buildpacks
Service Brokers provide an interface
for native and external 3rd party
services. Service processes run on
Service Nodes or with external as-a-
service providers (e.g., email,
database, messaging, etc.).
How It Works:
• Advertising service catalog
• Makes create/delete/bind/unbind
calls to service nodes
• Requests inventory of existing
instances and bindings from cloud
controller for caching, orphan
management
• SaaS marketplace gateway
• Implemented as HTTP enpoint,
written in any language.
Responsible For:
Service Broker
UPSI (formerly “Service Connectors”)
store meta-data in the Service Broker
to enable Cloud Foundry to connect
to local services that are NOT
managed by Cloud Foundry (e.g.,
OracleDB, DB2, SQLServer, etc.)
How It Works:
• Metadata management
Responsible For:
User Provided Service Instances
Health Manager monitors application
uptime by listening to the NATS
message bus for mismatched
application states (expected vs.
actual). The Cloud Controller publishes
expected state and the DEAs publish
actual state. State mismatches are
reported to the Cloud Controller.
How It Works:
• Maintains the actual state of apps
• Compares to expected state
• Sends suggestions to make actual
match expected (cannot make
state changes itself – only CC can
do that!)
Responsible For:
Health Manager
12 Factor Apps and Cloud Foundry - Twin Cities Code Camp
12 Factor Apps and Cloud Foundry - Twin Cities Code Camp

More Related Content

What's hot

Spring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
Spring Dynamic Modules for OSGi by Example - Martin Lippert, ConsultantSpring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
Spring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
mfrancis
 
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning
Christian Posta
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-final
Christian Posta
 

What's hot (20)

NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013
 
GWT Enterprise Edition
GWT Enterprise EditionGWT Enterprise Edition
GWT Enterprise Edition
 
Java Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed BanffJava Serverless in Action - Voxxed Banff
Java Serverless in Action - Voxxed Banff
 
Microcontainers and Tools for Hardcore Container Debugging
Microcontainers and Tools for Hardcore Container DebuggingMicrocontainers and Tools for Hardcore Container Debugging
Microcontainers and Tools for Hardcore Container Debugging
 
Spring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
Spring Dynamic Modules for OSGi by Example - Martin Lippert, ConsultantSpring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
Spring Dynamic Modules for OSGi by Example - Martin Lippert, Consultant
 
5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline5 steps to take setting up a streamlined container pipeline
5 steps to take setting up a streamlined container pipeline
 
ActiveMQ Performance Tuning
ActiveMQ Performance TuningActiveMQ Performance Tuning
ActiveMQ Performance Tuning
 
Container Landscape in 2017
Container Landscape in 2017Container Landscape in 2017
Container Landscape in 2017
 
A curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & KubernetesA curtain-raiser to the container world Docker & Kubernetes
A curtain-raiser to the container world Docker & Kubernetes
 
Cloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , KeynoteCloud Foundry Open Tour India 2012 , Keynote
Cloud Foundry Open Tour India 2012 , Keynote
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systems
 
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShiftReal-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
 
Node and Micro-Services at IBM
Node and Micro-Services at IBMNode and Micro-Services at IBM
Node and Micro-Services at IBM
 
Developing Microservices with Apache Camel, by Claus Ibsen
Developing Microservices with Apache Camel, by Claus IbsenDeveloping Microservices with Apache Camel, by Claus Ibsen
Developing Microservices with Apache Camel, by Claus Ibsen
 
DCEU 18: 5 Patterns for Success in Application Transformation
DCEU 18: 5 Patterns for Success in Application TransformationDCEU 18: 5 Patterns for Success in Application Transformation
DCEU 18: 5 Patterns for Success in Application Transformation
 
Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...
 
Flexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL TemplatesFlexible Permissions Management with ACL Templates
Flexible Permissions Management with ACL Templates
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Docker
 
Oracle SOA suite and Coherence dehydration
Oracle SOA suite and  Coherence dehydrationOracle SOA suite and  Coherence dehydration
Oracle SOA suite and Coherence dehydration
 
Camel oneactivemq posta-final
Camel oneactivemq posta-finalCamel oneactivemq posta-final
Camel oneactivemq posta-final
 

Viewers also liked (9)

The Only Hope For America
The Only Hope For AmericaThe Only Hope For America
The Only Hope For America
 
Presentación 1 proyecto de grado final (1)
Presentación 1 proyecto de grado final (1)Presentación 1 proyecto de grado final (1)
Presentación 1 proyecto de grado final (1)
 
Elementos para el diálogo
Elementos para el diálogoElementos para el diálogo
Elementos para el diálogo
 
246 Cedar Blvd
246 Cedar Blvd246 Cedar Blvd
246 Cedar Blvd
 
Diapositivas fase 5
Diapositivas fase 5Diapositivas fase 5
Diapositivas fase 5
 
Convocatoria soporte pedagógico primaria 6
Convocatoria soporte pedagógico primaria 6Convocatoria soporte pedagógico primaria 6
Convocatoria soporte pedagógico primaria 6
 
Hacemos música con el cuerpo
Hacemos música con el cuerpoHacemos música con el cuerpo
Hacemos música con el cuerpo
 
Palabras con n
Palabras con nPalabras con n
Palabras con n
 
Los delfines
Los delfines Los delfines
Los delfines
 

Similar to 12 Factor Apps and Cloud Foundry - Twin Cities Code Camp

An architect’s guide to leveraging your incumbency
An architect’s guide to leveraging your incumbencyAn architect’s guide to leveraging your incumbency
An architect’s guide to leveraging your incumbency
Michael Elder
 
Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)
Christian Posta
 

Similar to 12 Factor Apps and Cloud Foundry - Twin Cities Code Camp (20)

Introduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud FoundryIntroduction to Platform-as-a-Service and Cloud Foundry
Introduction to Platform-as-a-Service and Cloud Foundry
 
Cloud Foundry Technical Overview
Cloud Foundry Technical OverviewCloud Foundry Technical Overview
Cloud Foundry Technical Overview
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
A journey from Java EE to cloud-native microservices - Rabobank, JUG meetup
A journey from Java EE to cloud-native microservices - Rabobank, JUG meetupA journey from Java EE to cloud-native microservices - Rabobank, JUG meetup
A journey from Java EE to cloud-native microservices - Rabobank, JUG meetup
 
Cloud native microservices for systems and applications ieee rev2
Cloud native microservices for systems and applications ieee rev2Cloud native microservices for systems and applications ieee rev2
Cloud native microservices for systems and applications ieee rev2
 
An architect’s guide to leveraging your incumbency
An architect’s guide to leveraging your incumbencyAn architect’s guide to leveraging your incumbency
An architect’s guide to leveraging your incumbency
 
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan GoksuSpring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
 
J-Spring 2018 - A journey from Java EE to Cloud Native microservices
J-Spring 2018 - A journey from Java EE to Cloud Native microservicesJ-Spring 2018 - A journey from Java EE to Cloud Native microservices
J-Spring 2018 - A journey from Java EE to Cloud Native microservices
 
Serverless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on KubernetesServerless integration with Knative and Apache Camel on Kubernetes
Serverless integration with Knative and Apache Camel on Kubernetes
 
"Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?""Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?"
 
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architectureDevoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
 
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
Eseguire Applicazioni Cloud-Native con Pivotal Cloud Foundry su Google Cloud ...
 
Spring Boot & Spring Cloud on Pivotal Application Service
Spring Boot & Spring Cloud on Pivotal Application ServiceSpring Boot & Spring Cloud on Pivotal Application Service
Spring Boot & Spring Cloud on Pivotal Application Service
 
IBM Z for the Digital Enterprise 2018 - Offering API channel to application a...
IBM Z for the Digital Enterprise 2018 - Offering API channel to application a...IBM Z for the Digital Enterprise 2018 - Offering API channel to application a...
IBM Z for the Digital Enterprise 2018 - Offering API channel to application a...
 
Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)
 
Docker12 factor
Docker12 factorDocker12 factor
Docker12 factor
 
IBM BP Session - Multiple CLoud Paks and Cloud Paks Foundational Services.pptx
IBM BP Session - Multiple CLoud Paks and Cloud Paks Foundational Services.pptxIBM BP Session - Multiple CLoud Paks and Cloud Paks Foundational Services.pptx
IBM BP Session - Multiple CLoud Paks and Cloud Paks Foundational Services.pptx
 
All About Microservices and OpenSource Microservice Frameworks
All About Microservices and OpenSource Microservice FrameworksAll About Microservices and OpenSource Microservice Frameworks
All About Microservices and OpenSource Microservice Frameworks
 
Containerize, PaaS, or Go Serverless!?
Containerize, PaaS, or Go Serverless!?Containerize, PaaS, or Go Serverless!?
Containerize, PaaS, or Go Serverless!?
 
ATO 2018 - What is Serverless Useful For?
ATO 2018 - What is Serverless Useful For?ATO 2018 - What is Serverless Useful For?
ATO 2018 - What is Serverless Useful For?
 

More from David Strebel (6)

DevOps In Action
DevOps In ActionDevOps In Action
DevOps In Action
 
Docker Swarm Overview
Docker Swarm OverviewDocker Swarm Overview
Docker Swarm Overview
 
Cloud Foundry on Azure
Cloud Foundry on Azure Cloud Foundry on Azure
Cloud Foundry on Azure
 
Twin Cities Code Camp - DevOps In Action
Twin Cities Code Camp - DevOps In ActionTwin Cities Code Camp - DevOps In Action
Twin Cities Code Camp - DevOps In Action
 
Introduction To Microsoft Windows Containers
Introduction To Microsoft Windows ContainersIntroduction To Microsoft Windows Containers
Introduction To Microsoft Windows Containers
 
DRaaS and Centurylink Cloud
DRaaS and Centurylink CloudDRaaS and Centurylink Cloud
DRaaS and Centurylink Cloud
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

12 Factor Apps and Cloud Foundry - Twin Cities Code Camp

  • 2. @dwStrebel Dave Strebel Hybrid IT 12 Factor Microservices PaaS Oh My!
  • 3.
  • 7. Definitions : Yours and Theirs
  • 20. 27-Oct-15CTL Cloud Platform Montly Ops Review 20 IX. Disposability
  • 28. 27-Oct-15CTL Cloud Platform Montly Ops Review 28
  • 30. The router shapes and routes all external system traffic (HTTP/API) and application traffic from the internet/intranet. It maintains a dynamic routing table for each load-balanced app instance with IP addresses and ports. How It Works: • Load balancing • Maintaining an active routing table • Access logs • Supports web-sockets Responsible For: Router
  • 31. The Cloud Controller maintains command and control systems, including interface with clients (CLI, Web UI, Spring STS), account and provisioning control. It also provides RESTful interface to domain objects (apps, services, organizations, spaces, service instances, user roles, and more). How It Works: • Expected App state, state transitions, and desired convergence • Permissions/Auth • Orgs/Spaces/Users • Services management • App placement • Auditing/Journaling and billing events • Blob storage Responsible For: Cloud Controller
  • 32. “Droplet Execution Agents” are secure and fully isolated containers. DEAs are responsible for an Apps lifecycle: building, starting and stopping Apps as instructed. They periodically broadcast messages about their state via the NATS message bus. How It Works: • Managing Linux containers (Warden) • Monitoring resource pools • Process • File system • Network • Memory • Managing app lifecycle • App log and file streaming • DEA heartbeats (NATS to CC, HM) Responsible For: DEA
  • 33. Buildpacks are Ruby scripts that detect application runtimes/frameworks/plugins, compile the source code into executable binaries, and release the app to an assigned DEA. Runtime components can be cached for faster execution of subsequent app pushes. How It Works: • Staging* • /bin/detect • /bin/compile • /bin/release • Configure droplet • Runtime (Ruby/Java/Node/Python) • Container (Tomcat/Websphere/Jetty) • Application (.WAR, .rb, .js, .py) Responsible For: Buildpacks
  • 34. Service Brokers provide an interface for native and external 3rd party services. Service processes run on Service Nodes or with external as-a- service providers (e.g., email, database, messaging, etc.). How It Works: • Advertising service catalog • Makes create/delete/bind/unbind calls to service nodes • Requests inventory of existing instances and bindings from cloud controller for caching, orphan management • SaaS marketplace gateway • Implemented as HTTP enpoint, written in any language. Responsible For: Service Broker
  • 35. UPSI (formerly “Service Connectors”) store meta-data in the Service Broker to enable Cloud Foundry to connect to local services that are NOT managed by Cloud Foundry (e.g., OracleDB, DB2, SQLServer, etc.) How It Works: • Metadata management Responsible For: User Provided Service Instances
  • 36. Health Manager monitors application uptime by listening to the NATS message bus for mismatched application states (expected vs. actual). The Cloud Controller publishes expected state and the DEAs publish actual state. State mismatches are reported to the Cloud Controller. How It Works: • Maintains the actual state of apps • Compares to expected state • Sends suggestions to make actual match expected (cannot make state changes itself – only CC can do that!) Responsible For: Health Manager

Editor's Notes

  1. But first, here is my story. CenturyLink – where we control one of the largest pools of IT infrastructure in the world that customers can slice up into subscription services of various shapes and sizes. I work on our Cloud Specialist Team, where our mission is to help customers understand the value of our platform and to make them succesful on the platform. Then blah…blah….blah
  2. But first, here is my story. CenturyLink – where we control one of the largest pools of IT infrastructure in the world that customers can slice up into subscription services of various shapes and sizes. I work on our Cloud Specialist Team, where our mission is to help customers understand the value of our platform and to make them succesful on the platform. Then blah…blah….blah
  3. Put all your code in a source control system. Heck, just put it up on GitHub from the start. All your application code lives in one repository. Once you get big, you may have a distributed system with multiple apps talking to each other (like a web application and a backend API), at which point you can treat them as separate apps with their own code repositories (still in source control, of course). A codebase is run by developers on their local machines, and deployed to any number of other environments, like a set of testing machines, and the live production servers.
  4. All the environments your code runs in need to have some dependencies, like a database, or an image processing library, or a command-line tool. Never let your application assume those things will be in place on a given machine. Ensure it by baking those dependencies into your software system. Most languages and frameworks provide a natural way to do this. You list all the versions of all the libraries you expect to have in place, and when the code is deployed, a command is run to download all the right versions and put them in place. No guesswork, everything as it needs to be. This philosophy extends to your devs or devops team managing entire machine configurations using management tools like Chef and Puppet Importance: High Without this, your team will have a constant slow time-suck of confusion and frustration, multiplied by their size and number of applications. Spare yourself.
  5. Configuration is anything that may vary between different environments. Code is all the stuff that doesn’t. The code that talks to your database will always be the same. But the location of that database (which machine it’s running on) will be different for a local developer machine than it will for your production servers. Likewise, in your testing environment, you might want to log debugging information about each web request, but in production that would be overkill. Usernames and passwords for various servers and services also count as configuration, and should never be stored in the code. This is especially true because your code is in source control (see I. above) which means that anyone with access to the source will know all your service passwords, which is a bad security hole as your team grows. All configuration data should be stored in a separate place from the code, and read in by the code at runtime. Usually this means when you deploy code to an environment, you copy the correct configuration files into the codebase at that time. Importance: Medium Lots of companies get away without this, but you’re sloppy if you do.
  6. Your code will talk to many services, like a database, a cache, an email service, a queueing system, etc. These should all be referenced by a simple endpoint (URL) and maybe a username and password. They might be running on the same machine, or they might be on a different host, in a different datacenter, or managed by a cloud SaaS company. The point is, your code shouldn’t know the difference. This allows great flexibility, so someone from your team could replace a local instance of Redis with one served by Amazon through Elasticache, and your code wouldn’t have to change. This is another case where defining your dependencies cleanly keeps your system flexible and each part is abstracted from the complexities of the others…a core tenet of good architecture. Importance: High Given the current bindings to services, there’s little reason not to adhere to this best-practice.
  7. The process of turning the code into a bundle of scripts, assets and binaries that run the code is the build. The release sends that code to a server in a fresh package together with the nicely-separate config files for that environment (See III. above). Then the code is run so the application is available on those servers. The idea here is that the build stage does a lot of heavy lifting, and developers manage it. The run stage should be simple and bullet-proof so that your team can sleep soundly through the night, knowing that the application is running well, and that if a machine gets restarted (say, a power failure happens) that the app will start up again on launch without the need for human intervention. Importance: Conceptual From a practical perspective, the tools and framework you use will define best-practices for building, deploying, and running your app. Some do a better job than others of enforcing strict separation, but you should be okay if you follow your framework’s suggested mechanisms.
  8. It’s likely you will have your application running on many servers, because that makes it more fault tolerant, and because you can support more traffic. As a rule, you want each of those instances of running code to be stateless. In other words, the state of your system is completely defined by your databases and shared storage, and not by each individual running application instance. Let’s say you have a signup workflow, where a user has to enter 3 screens of information to create their profile. One (wrong) model would be to store each intermediate state in the running code, and direct the user back to the same server until the signup process is complete. The right approach is to store intermediate data in a database or persistent key-value store, so even if the web server goes down in the middle of the user’s signup, another web server can handle the traffic, and the system is none-the-wiser. Importance: High Not only is a stateless app more robust, but it’s easier to manage, generally incurs fewer bugs, and scales better.
  9. We’re getting a bit technical now, but stick with me. This factor is an extension of factor IV. above. The idea is that, just like all the backing services you are consuming, your application also interfaces to the world using a simple URL. Usually you get this for free because your application is already presenting itself through a web-server. But let’s say you have an API that’s used by both your customers in the outside world (untrusted) and your internal website (trusted). You might create a separate URL to your API that your website can use which doesn’t go through the same security (firewall and authentication), so it’s a bit faster for you than for untrusted clients. Importance: Medium Most runtime frameworks will give you this for free. If not, don’t sweat it. It’s a clean way to work, but it’s generally not hard to change later.
  10. When running your code, the idea is that lots of little processes are handling specific needs. So you might have dozens of handlers at the ready to process web requests, and another dozen to handle API calls for your enterprise users. And still another half-dozen processing background welcome-emails going to new users, or sending tweets for your users sharing things on your social media service. By keeping all these small parts working independently, and running them as separate processes (in a low-level technical sense), your application will scale better. In particular, you’ll be able to do more stuff concurrently, by smoothly adding additional servers, or additional CPU/RAM and taking full advantage of it through the use of more of these small, independent processes. Importance: Low Don’t worry about this factor until you get pretty deep into scaling considerations. Trust your chief architect or CTO to raise the red flag if this is going to become an issue for you.
  11. When you deploy new code, you want that new version to launch right away and start to handle traffic. If an application has to do 20 seconds of work (say, loading giant mapping files into RAM) before it’s ready to handle real traffic, you’ve made it harder to rapidly release code, and you’ve introduced more churn on the system to stop/start independent processes. With the proliferation of so many 3rd party libraries in today’s software systems, sub–1-second startup times are less and less common. But beyond loading code, your application should have everything it needs waiting in high-speed databases or caches, so it can start up snappily and be ready to serve requests. Further, your application should be robust against crashing. Meaning, if it does crash, it should always be able to start back up cleanly. You should never do any mandatory “cleanup” tasks when the app shuts down that might cause problems if they failed to run in a crash scenario. Importance: Medium Depending on how often you are releasing new code (hopefully many times per day, if you can), and how much you have to scale your app traffic up and down on demand, you probably won’t have to worry about your startup/shutdown speed, but be sure to understand the implications for your app.
  12. It has become in vogue in recent years to have a much more rapid cycle between developing a change to your app and deploying that change into production. For many companies, this happens in a matter of hours. In order to facilitate that shorter cycle, and the risk that something breaks when entering production, it’s desirable to keep a developer’s local environment as similar as possible to production. This means using the same backing services, the same configuration management techniques, the same versions of software libraries, and so on. This is often accomplished by letting developers use a tool like Vagrant to manage their own personal virtual server that’s configured just like production servers. Importance: Medium Developers will feel like taking shortcuts if their local environment is working “well enough”. Talk them out of it and take a hard-line stance instead, it’ll pay off long-term.
  13. Log files keep track of a variety of things, from the mundane (your app has started successfully) to the critical (users are receiving thousands of errors). In an ideal situation, those logs are viewed by developers in their local consoles, and in production they are automatically captured as a stream of events and pushed into a real-time consolidated system for long-term archival and data-mining like Hadoop. At the very least, you should be capturing errors and sending them to an error reporting service like New Relic or AirBrake. You can take a more general approach and send your logs to a service like PaperTrail or Splunk Storm. Importance: Low If you are relying on logs as a primary forensic tool, you are probably already missing out on better solutions. Be sure to consolidate your logs for convenience, but beyond that, don’t worry about being a purist here.
  14. You’ll want to do lots of one-off administrative tasks once you have a live app. For example, doing data cleanup on bad data you discover; running analytics for a presentation you are putting together, or turning on and off features for A/B testing. Usually a developer will run these tasks, and when they do, they should be doing it from a machine in the production environment that’s running the latest version of the production code. In other words, run one-off admin tasks from an identical environment as production. Don’t run updates directly against a database, don’t run them from a local terminal window. Importance: High Having console access to a production system is a critical administrative and debugging tool, and every major language/framework provides it. No excuses for sloppiness here.
  15. Fully Isolated containers which are warden containers, but will be called garden container that will support build packs, docker, .NET containers. DEA also manages lifecycle management for the app, so that would include starting, stopping apps as instructed by the cloud controller
  16. Advertises the service catalog, so things like caching, message queues,.Emplemneted as a HTTP Endpoint and can support user defined services that live outside the platform. So for Example you could define an Oracle DB as an endpoint.
  17. User provides instances are for services that live outside the platform, so for instance an Oracle DB, or maybe even a haddoop cluster.
  18. Manages actual state and reports back to the cloud controller
  19. So we’ve covered making sure you are aligned on defintions, defining your purpose and selecting a provider, now lets pass on some success characteristics we’ve seen utilized by customers we’ve seen successfully make the transition to cloud