Cloud Foundry: Design and Architecture
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Vikas Hazrati on Jul 21, 2009
General understanding suggests that, if everyone on the team works at top capacity then the team would be most productive. Contrary to this, Steve Bockman mentioned that this assumption might not always be true. In some cases, it may be necessary to slow down and work at less than top capacity in order to boost productivity and profitability.
Steve discussed an exercise that he carried on with two teams. The steps of the exercise were,
- Operation 1 - Get raw material (a sheet of paper) from stock.
- Operation 2 - Fold inward lengthwise, then unfold.
- Operation 3 - Fold top corners inward.
- Operation 4 -Fold sides inward, fold in half, fold wings down.
One team worked at top capacity and the other team was asked to slow down to match the rate of the slowest operation.
Both the teams produced the same number of planes in 5 minutes, however the loss due to work-in-progress inventory by the team working at top capacity was significantly higher than the second team who matched the rate of the slowest operation. The second team had no work-in-process inventory built up, thus reducing the amount spent on materials and labor.
Steve further cited the business novel The Goal, which outlines the following process to improve productivity,the
- Step 1 - Identify the system’s bottlenecks.
- Step 2 - Decide how to exploit the bottlenecks (e.g. don’t let a bottleneck be idle).
- Step 3 - Subordinate everything else to the above decision (e.g. throttle back the upstream operations).
- Step 4 - Elevate the system’s bottlenecks (e.g. speed up a slow operation).
- Step 5 - If, in a previous step, a bottleneck has been broken (i.e. a bottleneck is no longer a bottleneck) go back to Step 1.
Thus, the recommendation is to slow down all non-bottleneck operations before trying to speed the bottlenecks up.
Combing the recommendations above with the learnings from his experiment, Steve drew an analogy to the software development process which boils down to creation and sharing of knowledge. He suggested the following mantra to improve profits
- Knowledge is the inventory of software development
- People consume knowledge at their own rate
- Creating knowledge faster than it can be consumed causes excess inventory
- Excess inventory reduces profits
Based on the above, one can draw a conclusion that it is not beneficial to work at top capacity if there are bottlenecks in the system which are operating at a lower level. The key is to maintain a capacity similar to the bottleneck and speed up the bottleneck first to get closer to the top capacity. This would result in lower work-in-progress and thus make the bottom line healthy and profitable.
Five Key Practices to Agile ALM
Agile Practices to Improve Project Management Organization (PMO) Effectiveness
Agile Maturity Model Applied to Building and Releasing Software
Maximize your business-responsiveness with Mingle. Provide your global development team a shared space that adapts to the way they work.
Derek Collison discusses the goals, the design premises and patterns employed in creating the architecture of Cloud Foundry, VMware’s open source PaaS, unveiling internal architectural details.
Andrew Watson talks about the work of the OMG, where CORBA is alive and well (hint: in your car), UML and UML Profiles vs. custom Modeling languages, DDS and other middleware, and much more.
Sohil Shah discusses creating iPhone and Android enterprise mobile applications based on cloud services using the open source platform OpenMobster.
Paul Sanford presents the transformations supported by data throughout its life cycle, and how that can be better done with Splunk, an engine for monitoring and analyzing machine-generated data.
A common “best practice” for unit tests is to only write a one assertion in each test. I intend to question this advice by showing that multiple assertions per test are both necessary and beneficial.
John Rauser presents the architectural and technological evolution of Amazon retail websites starting with 1994 and ending with adopting Amazon Web Services.
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
2 comments
Watch Thread Reply