Skip to content
Kristoffer Walker edited this page Dec 27, 2012 · 15 revisions

Fireworks Project Platform.X

At Fireworks Project, Platform.X is the name we've given to the conglomeration of components and services assembled to run our service oriented web application platform. Simply put, Platform.X is Fireworks Project Inc.

Virtual Machine Types

Overview

The easiest way to think about Platform.X is to break it down into the two types of virtual machines used: 1) Webserver and 2) Swiss Army Knife (aka SAK server).

Webserver

The user facing portions of Platform.X are running on a single virtual machine, hosted on Amazon EC2, which we simply call the Webserver. This is where web applications are actually served from.

For more, check out the Webserver wiki page. There is also a Git repository for Webserver configuration and setup scripts.

Swiss Army Knife Server

Background processes and other tasks that should not interfere with serving traffic to web applications are handled by the Swiss Army Knife Server (aka SAK Server). The SAK server is a utility VM hosted on the Rackspace platform which handles a lot of unrelated tasks; resulting in the name "Swiss Army Knife". Currently the main responsibility of the SAK server is hosting private Git repositories, although that expand soon.

For more, check out the SAK Server wiki page. There is also a Git repository for SAK Server configuration and setup scripts.

Design Goals

Platform.X is designed to be a generalized collection of components providing all the required services for running most any kind of web application. Platform.X is designed to provide web developers a scalable and extensible environment which will enable them to differentiate their web applications. In addition, Platform.X is designed to host many applications simultaneously , which we refer to as cotenancy.

Extensibility

Extensibility is important. Not only being able to choose different services for their relative strengths and weaknesses (ie CouchDB vs MySQL), but allowing the extension of the basic application environment and protocols (ie text messaging through a third party service using an HTTP API), will allow developers to leverage the scalability of Platform.X, while still creating competitive differentiation.

Cotenancy

Cotenancy is no longer a design goal, at least temporarily.

While extensibility is important, cotenancy is a conflicting goal. Platform.X must create a safe sandbox that insulates applications from one another and insulates the system from the applications, but allows for most of the freedoms required by the extensibility goal at the same time.

Domain Specific Application Workbench

The emergent goal of Platform.X is to provide an Application Workbench allowing applications to be composed and deployed using commonly understood business languages. Although it will be difficult, it is the long term goal of Platform.X to discover ways in which the full capabilities of the underlying system can be leveraged using non-technical interfaces.

See Martin Fowler's description of what he calls the Language Workbench.

Clone this wiki locally