diff --git a/atom.xml b/atom.xml
index 67fac3a..8754e5d 100644
--- a/atom.xml
+++ b/atom.xml
@@ -2,10 +2,10 @@
When a Node.js application is running at Cloudnode it is started as a dedicated server process using its own port. A reverse proxy routes requests targeted at the app to its corresponding port. Thus many apps share a single proxy instance making it a critical component and a single point of failure.
We are using Nodejitsu’s node-http-proxy which normally runs stable. But some apps can give it a hard time, because they are experimental or contain resource leaks. When our monitoring detects such a situation, it takes care by restarting the proxy. Everything is fine after that, but the restart causes a short downtime for all apps which are served by that proxy. Until now…
@@ -63,18 +63,18 @@ create a static blog.The overall downtime is zero over the period of 33 days 22 hours.
-This combination works fantastic, supports websockets, keeps away bad traffic and scales to as many proxies and servers as are needed to handle Cloudnode’s future traffic.
]]>The new app management page shows each of your apps with its current resource usage values:
NPM has this great feature npm install, that reads a meta file called package.json which describes all required packages and versions.
This command is now part of the git workflow. During git push operations the platform code looks for a package.json file in the main app directory and executes “npm install” on it. All dependencies are now resolved by the package manager.
@@ -100,11 +100,11 @@ create a static blog.The Log file will show which version is in use:
CouchDB - If you need mobile support, multi-master synchronization, document versions
Redis - If you need many data updates, counters or session stores, master-slave synchronization
Just choose the desired type when you create a database using the web frontend. See our updated docs for details.
-Enjoy!
]]>A simple hosted node.js application adds a RESTful webservice interface. This statistics server can be queried by the platform which displays the data and charts. So you have always a view on how your apps are doing.
-The new Message Center allows you to receive notifications and to quickly exchange short messages, in Twitter style.
]]>Fig1: Dillinger Markdown Editor
Visit http://dillinger.cloudno.de from your Mac, PC or iPad. The built-in connection to Github allows it to browse and edit the markdown files from all your repositories.
]]>Optimizing Closure Templates
The pages are built in two steps. In the first step the template is compiled and in the second step it is rendered. Compiling the templates every time isn’t exactly necessary, but was done. The templates used for Cloudnode are rather complex with several levels of blocks, sections and widgets. The first optimization was done by precompiling all templates at startup resulting in half the rending times.
-Fig 1: Server response time before precompilation
-Fig 2: Server response time after precompilation
Optimizing the page speed
This step optimizes the transfer between the server and the client. There are several tools, including browser plugins and online services, that analyse your pages and give hints for optimization. The speedup tricks they recommend, are all similar: minimize and compress scripts and style sheets, cache static content and reorder scripts to minimize dependencies.
Page Speed - Nomen est omen
Google’s Page Speed gave us 63 out of 100 points before optimization. Following the hints to minimize and combine the scripts using the Closure tools resulted in some dramatic performance boost. Most static content is served by a Node.js 0.4.12 server using Express which does not offer compression. Fortunately there is a middleware called gzippo which jumps in and caches the compressed content in memory for fast delivery. Page Speed gives us now a 94 out of 100 and the pages are served in 500ms average time.
-Fig 3: Google Page Speed
]]>GitWeb supports common actions such as:
To access GitWeb use your apps management console: -
And the good news is, every Cloudnode account comes with CouchDB support. Let us know when you have created something interesting.
-Initial Commit
In the next step the newly created remote repository is cloned to your local development machine. This is done by executing the cloudnode command line “cloudnode app init <appname>. During this step a sample server.js file is also created. Afterwards the newly created server.js file is commited and the repo is pushed to the remote origin.
@@ -263,9 +263,9 @@ To manage your databases select “My Databases” from the main menu.Etherpad Lite
When we heard about Etherpad Lite and its dramatic slim-down, we knew that this is an ideal candidate to test our platform. With Etherpad Lite it should be possible to run an application on a shared hosted platform, which normally needs at least a medium VM just to start up.
@@ -300,15 +300,15 @@ To manage your databases select “My Databases” from the main menu.Installation Steps
The installation is straight forward. The only difficulty I encountered, was the dependency on SQLite 3, a database we don’t support out of the box (for now). So, I got SQLite 3.7.7.1, compiled it and added the compiled library to the repository at /usr/lib. That did the job and the app is now live at http://etherpad.cloudno.de.
-The server is not yet fully ported to Node.js. Some parts currently rely on NGinx which has also a superb performance on static content like the map tiles, but that will also be a perfect job for Node.js. Stay tuned.
The maps can be embedded in HTML pages and additional layers can display markers, popups, polylines, polygons, circles and images. See the Leaflet documentation for full details.
-The documents are public now. So, even if you havn’t joined the beta yet, you can start studying the docs.
-There are currently a lot of changes coming from Chris and Dan working hard on the Nodester Open Source hosting software which is also the foundation of our cloudnode platform. There is a lot to come. Stay tuned.
We have also started to collect some sample Node.JS apps which we want to feature in the application directory. This should also help testing the compatibility of the platform. If you have some insteresting stuff, you would like to see there, let us know in the comments. Cool projects will get an immediate invite.
We started our collection with the node-chat classic written by scottgonzalez.
-Live Demo: http://chat.cloudno.de/
]]>You may also follow us at Twitter.
]]>