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 Alexander Olaru on Mar 03, 2008
Flux is a commercial product written in Java that offers job scheduling, file transfer and workflow management capabilities - it can be used either as a standalone application or as an embeddable software component in Java, J2EE and Web Services environments. Compared with Quartz and other open-source frameworks that perform similar functions, Flux can be used not only by developers but also by non-technical users who can design work flows through a Web or Desktop Interface or monitor job flow execution through an Operations Console.
Flux can accommodate the setup of very flexible processing flows through the usage of triggers, actions and flows which can be combined to create arbitrarily complex flow charts:
Flow charts can be setup either programmatically through the Flux APIs or graphically through the Web Designer which has been introduced in the prior release as an alternative to the already existing Desktop Designer (built in Swing). Although targeting primarily Java environments, batch processes and executables written in other languages can also be invoked and monitored from Flux through the use of Flux Agents which allow execution of scripts on remote machines.
With the new 7.7 release the Web Designer has been enhanced to allow the setup of actions and triggers related to the various flavors of supported file transfers. Certificate-based authentication has been added as an alternative to password authentication with SFTP hosts to ensure security of B2B file transfers. Another new feature added to the Web Designer is the runtime data mapping which allows developers to move data between actions in a job and workflow.
In a discussion with InfoQ, the President of Flux, David Sims mentioned that "there is about six more months of development work left to bring the Web Designer up to par with the desktop implementation" - the differences are related mainly to messaging, signals and business calendars. The other component embeddable in Web applications - the Operations Console - has been improved in the 7.7 release to make it more scalable: thousands of jobs and chart flows can now be monitored from it.

Sims talked about a common scenario when the Web Designer and Operations Console can be used as embeddable components:
Typically, a Java development team at a financial institution, a financial software company, or some other enterprise (the "Enterprise", let's call them) builds out their application and embeds Flux jobs, workflows, and file transfer capabilities in their application. Then that Enterprise deploys their application, and their IT staff is tasked with monitoring, controlling, and generally using their application.
That's where the Operations Console comes on. The Enterprise's IT operations staff can use it to control jobs, workflows, and file transfers that are an inherent part of the Enterprise's application.
As a simple example, consider the case where the Enterprise builds a funds and account management software application with a Flux engine at the core. Their Java application will be initiating, tracking, and generally managing funds and accounts, but sometimes the IT operations staff will need to step in to do some managing on their side. The IT staff would use the Flux Operations Console, in this case, to make real-time tweaks to their system.
The 7.7 release is fully compatible with the prior release and it did not require any schema changes to the database that can optionally be used for persisting job/workflow definitions and runtime job execution information. Sims also shared some details about the technologies introduced in Flux with the addition of the new web components:
We have used a variety of JavaScript libraries and technologies (GWT, Dojo, Prototype+Scriptaculous, etc.) and are in the process of migrating towards a RESTful architecture with supporting ExtJS widgets.
We have increased scalability by using XPath to read large (5MB) XML workflows directly in the browser. This reduces a lot of round-trip Ajax communications between the browser and server as the browser can simply manipulate the workflow XML and send the result to the server when all modifications have been made. This has allowed us to deliver an interface that is over 90% faster than comparable interfaces that use more Ajax requests to perform work on the server-side.
The conversation with David Sims concluded with him presenting the road map for the next Flux release:
In May/June of this year, Flux 8.0 will be released. Flux's API will change to a POJO model to replace the original factory design pattern that it has had since 2000. A POJO model will make it easier to integrate Flux into other frameworks, most notably Spring.
Also in Flux 8.0, there will be more JavaScript widgets for Flux engines, the BPM dashboard, flow charts (jobs/workflows/business processes), executing flow charts, logs, audit trail, repository, agents, and user management. New database triggers and actions for querying and updating database tables.
Upgrade from HSQL to Derby. Upgrade to Java 5, especially to make use of generics to better document Flux APIs that use collections. Possible Flux REST API if warranted by customer feedback. Generally speaking, we're releasing new Flux versions about every four months now.
More information about Flux can be found on its website and the product manual.
Banking Case Study: Scaling with Low Latency using NewSQL
Tools to unit test your JavaScript
Combining Inspections, Static Analysis, Testing to Achieve >95% Defect Removal Efficiency
Good Relationships: The Spring Data Neo4J Guide Book
Introducing SQLFire: a memory-optimized, high performance SQL database
VMware vFabric SQLFire - Test drive the data management system with memory speed, horizontal scalability and a familiar SQL interface
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.
No comments
Watch Thread Reply