The Foundation Chapter will describe the foundation of the Cloudburo App Platform. It will introduce the major elements (principles, concepts, frameworks, libraries, tools …) of the platform in order to bootstrap a cloud based service delivery business which includes
It’s the nucleus for building up the platform.
The architecture of the Cloudburo Platform is heavily influenced by Reacive Manifesto, which are nicely summarized by the following
New requirements demand new technologies. Previous solutions have emphasized managed servers and containers. Scaling was achieved through buying larger servers and concurrent processing via multi-threading. Additional servers were added through complex, inefficient and expensive proprietary solutions.
But now a new architecture has evolved to let developers conceptualize and build applications that satisfy today’s demands. We call these Reactive Applications. This architecture allows developers to build systems that are event-driven, scalable, resilient and responsive: delivering highly responsive user experiences with a real-time feel, backed by a scalable and resilient application stack, ready to be deployed on multicore and cloud computing architectures. The Reactive Manifesto describes these critical traits which are needed for going reactive.
Complemented by the principles of:
We use a Domain Driven Design (DDD) approach to shape out the technical foundation of the platform. DDD is is an approach to the design of software, based on the two premises:
This is described in the Business Model chapter.
HTML GUI Elements (View Panes, Forms, Menu Tabs etc.) are served by the nodjs server as underscore templates, which will attached to the to HTML DOM element and cached during a user session. After arriving of new data in the browser, the relevant tempate will be fetched, compiled with the data set and rendered to the end-user.
Rather a powerful toolset which is provided in a fully open source version.
A twin programming language approach consisting of
Java was chosen.
Main development language for the Enduser Application (Frontend and Backend) is
A cornerstone for a robust and fast development process is a state of the art integrated development environment which bundles and coordinates the various activities.
Currently I’m using two flavours of IDE’s
Eclipse IDE is by far one of the most adavanced IDE for any kind of development actitivities. It provides a vast array of plugins for any kind of software lifecycle activities. Especially it provides strong support for a Model Driven Development approach which is one of the principle of the Cloudburo development work. Currenlty I use the following Eclipes setup for my work:
A drawback of Eclipse is its quite resource hungry and can consume considerable memory space. Therefore I introduced Textmate as my main development editor, which is far more agile and integrates very nicely in various programming languages and tools.
Textmate as advertised as the the missing editor for the Mac is a very powerful Editor with a huge bundle repository which allows to integrate almost any development language or activity. The philosophy of textmate is following the one of Unix tasks.
As a version control system I use the de facto standard for open source application GIT, which is complemented by Bitbucket which is a web-based hosting service for projects that use either the Mercurial or Git revision control systems. This allows me to manage a remote copy of my code which I don’t make (yet) available via my GIT open source account.
Overall build and deploy is managed by Maven. Details can be found here
Homebrew is the so-called missing package manager for OS X. Homebrew complements OS X and is based on git and ruby.
NPM is the node.js based package manager and is required for my node deployment platform as well as a package manager for certain utitilities, e.g
As Package Manager for keeping my frontend and node deployment platform under control, I use the Bower package manager.
Bower is a package manager for the web. It offers a generic, unopinionated solution to the problem of front-end package management, while exposing the package dependency model via an API that can be consumed by a more opinionated build stack. There are no system wide dependencies, no dependencies are shared between different apps, and the dependency tree is flat.
Invaluable documentation reference help is Dash. Dash is an API Documentation Browser and Code Snippet Manager. Dash stores snippets of code and instantly searches offline documentation sets for 130+ APIs.
SourceTree is my most preferred GUI for managing my GIT repositories on a Mac. It’s provided as open source application by Atlassian.
This the MVC framework used for Cloudburo Apps. Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.
The most popular front-end framework for developing responsive, mobile first projects on the web.
This powerful library allows you to create editable elements on your page. It can be used with any engine (bootstrap, jquery-ui, jquery only) and includes both popup and inline modes.
Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results and is integrated into XEdtiable.
These libraries are used for the Node.js implementation.
Express is a minimal and flexible node.js web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.