Anyone who is familiar with Cloud Foundry must be aware that Diego is now the official container runtime and the pre-diego ( DEA’s) have been officially deprecated from May 2017. Let’s take a look what has changed and how Diego functions.
The DEA was the runtime engine earlier and its architecture system is largely written in Ruby and the new Diego architecture system is written in Go.
A new container execution engine “Garden” now replaces the earlier “Warden”. Warden could only manage containers on VMs that are running Linux operating system, but the Garden subsystem supports VMs running diverse operating systems including Windows. With Garden, Developers can now have SSH access to log into the containers and access their running app instances that is enabled by Diego SSH package, this functionality was not avaiable earlier with DEA.
Also the Health Manager (HM9000) component has been replaced by the coordinated actions of the nsync, BBS, and Cell Reps. HM was essential to esnure that apps running on Cloud Foundry remained available and it had the four core responsiblities :
•Reconcile the actual state of applications with their expected state
•Monitor applications to determine their state
•Determine applications’ expected state, version, and number of instances
•Direct Cloud Controller to take action to correct any discrepancies in the state of applications
Below is the nice summary of what has changed from DEA to Diego
DEA / Diego KEY Differences Summary
|DEA architecture||Diego architecture||Function||notes|
|Ruby||Go||Source code language|
|DEA||Diego Brain||High-level coordinator that allocates processes to containers in application VMs and keeps them running||DEA is part of the Cloud Controller. Diego is outside the Cloud Controller.|
|DEA Node||Diego Cell||Mid-level manager on each VM that runs apps as directed and communicates “heartbeat”, application status and container location, and other messages||Runs on each VM that hosts apps, as opposed to special-purpose component VMs.|
|Warden||Garden||Low-level manager and API protocol on each VM for creating, configuring, destroying, monitoring, and addressing application containers||Warden is Linux-only. Garden uses platform-specific Garden-backends to run on multiple OS.|
|DEA Placement Algorithm||Diego Auction||Algorithm used to allocate processes to VMs||Diego Auction distinguishes between Task and Long-Running Process (LRP) job types|
|Health Manager (HM9000)||nSync, BBS, and Cell Reps||System that monitors application instances and keeps instance counts in sync with the number that should be running||nSync syncs between Cloud Controller and Diego, BBS syncs within Diego, and Cell Reps sync between cells and the Diego BBS.|
|NATS Message Bus||Bulletin Board System (BBS) and Consul through HTTP, HTTPS, and NATS||Internal communication between components||BBS stores most runtime data; Consul stores control data.|