diff --git a/atom.xml b/atom.xml index 67fac3a..8754e5d 100644 --- a/atom.xml +++ b/atom.xml @@ -2,10 +2,10 @@ <![CDATA[Cloudnode Blog]]> - - - 2013-04-14T14:50:06+02:00 - http://cloudnode.github.com/ + + + 2013-04-14T14:32:39+02:00 + http://cloudnode.github.com/cloudnode/ @@ -15,9 +15,9 @@ <![CDATA[Our Blog Now Powered By Octopress]]> - + 2013-04-08T21:32:00+02:00 - http://cloudnode.github.com/blog/2013/04/08/our-blog-now-powered-by-octopress + http://cloudnode.github.com/cloudnode/blog/2013/04/08/our-blog-now-powered-by-octopress Welcome to the relaunch of our Cloudnode blog. From the beginning it has been hosted on Posterous. After the acquisition of Posterous by Twitter, their new owners have decided to close Posterous down on April 30th, 2013. Its time now to find a new home for our blog.

@@ -43,15 +43,15 @@ create a static blog.

-

+

]]>
<![CDATA[Uptime To The Max]]> - + 2012-12-29T00:00:00+01:00 - http://cloudnode.github.com/blog/2012/12/29/uptime-to-the-max + http://cloudnode.github.com/cloudnode/blog/2012/12/29/uptime-to-the-max Our web site cloudno.de runs as a Node.js app among all the other apps hosted on Cloudnode. Our top goal is to provide excellent performance and maximum uptime for all apps including our own. 

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.

  • proxy02 has been restarted 2 times with a combined downtime of 03:53 minutes
  • 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.

    ]]>
    <![CDATA[Monitor CPU & Memory Usage Of Your Hosted Apps]]> - + 2012-07-31T00:00:00+02:00 - http://cloudnode.github.com/blog/2012/07/31/monitor-cpu-memory-usage-of-your-hosted-apps + http://cloudnode.github.com/cloudnode/blog/2012/07/31/monitor-cpu-memory-usage-of-your-hosted-apps Our new monitoring helps you to watch the CPU and memory usage of your apps and to identify problems early. If an app is breaking the govenor limits for an extended period, if will be automatically shut down to ensure the best overall performance of all apps. In a later version we will also support switching to a higher level making your app truely elastic and only consuming as much resources as needed.

    -

    +

    The new app management page shows each of your apps with its current resource usage values:

    • RAM Usage - The permanently and exclusively allocated RAM
    • @@ -88,9 +88,9 @@ create a static blog.

      <![CDATA[Managing package dependencies is now a lot easier thanks to NPM]]> - + 2012-07-03T00:00:00+02:00 - http://cloudnode.github.com/blog/2012/07/03/managing-package-dependencies-is-now-a-lot-easier-thanks-to-npm + http://cloudnode.github.com/cloudnode/blog/2012/07/03/managing-package-dependencies-is-now-a-lot-easier-thanks-to-npm There has always been the “cloudnode npm install <package>” command to add packages to your hosted node.js application. These steps were manual and could easily miss a dependency. 

      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.

      <![CDATA[We now support multiple Node.js versions]]> - + 2012-03-17T00:00:00+01:00 - http://cloudnode.github.com/blog/2012/03/17/we-now-support-multiple-node-js-versions + http://cloudnode.github.com/cloudnode/blog/2012/03/17/we-now-support-multiple-node-js-versions We have great news for those of you waiting to host Node.js version 0.6.x apps. You can now choose which version to use during application creation or by specifying a ‘node_version’ environment variable for existing apps. You can easily switch by setting the variable to 0.4 or 0.6 and restarting your application. 

      -

      +

      The Log file will show which version is in use:

      Application Log


      11 Mar 19:45:22 - Inside Node Virtual Machine
      11 Mar 19:45:22 - Version: v0.6.12
      11 Mar 19:45:22 - Owning user: 501
      11 Mar 19:45:22 - User Changed: 501
      11 Mar 19:45:22 - Checking for /etc
      11 Mar 19:45:22 - Update /etc/resolve.conf with Googles DNS servers..
      @@ -114,48 +114,48 @@ create a static blog.

      <![CDATA[Our New Redis Hosting Service]]> - + 2012-02-12T00:00:00+01:00 - http://cloudnode.github.com/blog/2012/02/12/our-new-redis-hosting-service + http://cloudnode.github.com/cloudnode/blog/2012/02/12/our-new-redis-hosting-service There are lots of apps that work with Redis. It works out-of-the-box with Express and many other modules. As Redis is such an essential resource for Node developers, we are now offering a Redis hosting option, free with every Cloudnode account. You can boot up a Redis instance in seconds. Being on the same local network and with its in-memory design, it is lightning fast especially on writes. With our new option you can choose the right database type depending on your use case: 

      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!

      ]]>
      <![CDATA[Website Statistics Using Node.js And Redis]]> - + 2012-02-05T00:00:00+01:00 - http://cloudnode.github.com/blog/2012/02/05/website-statistics-using-node-js-and-redis + http://cloudnode.github.com/cloudnode/blog/2012/02/05/website-statistics-using-node-js-and-redis While looking for a statistics server for Cloudno.de I found several references to Redis, which matches perfectly the use case. When Salvatore Sanfilippo, aka antirez, designed Redis, he was working on a real-time stats package. So many Redis features support this kind of activity. A particual good fit are the fast, atomically incremented counters which can be used in multiple dimensions like: hits-by-app, hits-by-url, hits-by-day, plus combinations. The following gist gives a good idea:

      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.

      -

      ]]>
      +

      ]]>
      <![CDATA[It's All About You]]> - + 2012-01-08T00:00:00+01:00 - http://cloudnode.github.com/blog/2012/01/08/it-s-all-about-you + http://cloudnode.github.com/cloudnode/blog/2012/01/08/it-s-all-about-you There is a lot to come to make Cloudnode not just a simple Node.js hosting platform. The new profile section puts you and your apps in the foreground. Your public profile is an opportunity to let others know about what you are working on. You can network with fellow developers, exchange ideas and take part in each others work.

      -

      +

      The new Message Center allows you to receive notifications and to quickly exchange short messages, in Twitter style.

      ]]>
      <![CDATA[Dillinger - Another fine Node.js app for our gallery]]> - + 2011-12-11T00:00:00+01:00 - http://cloudnode.github.com/blog/2011/12/11/dillinger-another-fine-node-js-app-for-our-gallery + http://cloudnode.github.com/cloudnode/blog/2011/12/11/dillinger-another-fine-node-js-app-for-our-gallery When discussing node clusters in the Nodejs group someone mentioned Dillinger, a cloud-enabled Markdown editor designed and developed by @joemccann. We immediately wanted this running on Cloudnode and now, here it is is:

      -

      +

      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.

      ]]>
      @@ -163,30 +163,30 @@ create a static blog.

      <![CDATA[Improving the speed of the Cloudnode site]]> - + 2011-11-27T00:00:00+01:00 - http://cloudnode.github.com/blog/2011/11/27/improving-the-speed-of-the-cloudnode-site + http://cloudnode.github.com/cloudnode/blog/2011/11/27/improving-the-speed-of-the-cloudnode-site When using the Cloudnode frontend in the past there was a noticeable lag. Two seconds for an average page didn’t seem normal. A quick analysis using Chrome’s inspector showed that over a second elapsed before the server started to stream content. This was clearly a server-side problem. Normally the server responds in half the time and testing several pages showed that some pages were served normally and some had delays. After some comparisons it was clear that the closure library used the extra time compiling the templates on each page view.

      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

      ]]>
      <![CDATA[GitWeb Access To Your Node.js App Repositories]]> - + 2011-10-19T00:00:00+02:00 - http://cloudnode.github.com/blog/2011/10/19/gitweb-access-to-your-node-js-app-repositories + http://cloudnode.github.com/cloudnode/blog/2011/10/19/gitweb-access-to-your-node-js-app-repositories Cloudnode uses git to push your apps live and as a version control system. You can now access the repositories of your hosted apps using your browser thanks to GitWeb. Go to: http://gitweb.cloudno.de

      GitWeb supports common actions such as:

        @@ -196,19 +196,19 @@ create a static blog.

      • Easily accessing tagged versions of file content.

      To access GitWeb use your apps management console: -

      -

      +

      +

      ]]>
      <![CDATA[Free Node.js And CouchDB Hosting at Cloudnode]]> - + 2011-10-01T00:00:00+02:00 - http://cloudnode.github.com/blog/2011/10/01/free-node-js-and-couchdb-hosting-at-cloudnode + http://cloudnode.github.com/cloudnode/blog/2011/10/01/free-node-js-and-couchdb-hosting-at-cloudnode Our newest feature lets you host your Node apps together with a CouchDB on the same net segment. The new dynamic duo lets you create awesome database backed Node apps.

      And the good news is, every Cloudnode account comes with CouchDB support. Let us know when you have created something interesting.

      -

      +

      To manage your databases select “My Databases” from the main menu.

      https://cloudno.de/database

      ]]>
      @@ -216,20 +216,20 @@ To manage your databases select “My Databases” from the main menu. <![CDATA[Running Nice IDE (nide) On Our Node.js Platform ]]> - + 2011-09-27T00:00:00+02:00 - http://cloudnode.github.com/blog/2011/09/27/running-nice-ide-nide-on-our-node-js-platform- + http://cloudnode.github.com/cloudnode/blog/2011/09/27/running-nice-ide-nide-on-our-node-js-platform- Node Knockout is over and brought awesome results. NIDE, a web-based IDE for Node.js,  especially caught our attention. It runs npm and has a built-in time machine like in OS X. It is now deployed to Cloudnode and might later be an option for every app to allow real cloud-based Node.js development.

      -

      +

      http://nide.cloudno.de

      ]]>
      <![CDATA[Building And Hosting A Hello World Node.js App]]> - + 2011-08-28T00:00:00+02:00 - http://cloudnode.github.com/blog/2011/08/28/building-and-hosting-a-hello-world-node-js-app + http://cloudnode.github.com/cloudnode/blog/2011/08/28/building-and-hosting-a-hello-world-node-js-app A new application on Cloudnode requires a git repository, a sub domain and a VM to host the code. All these prerequisites are created by filling out the “New Application” form. When everything is created a result page is displayed with technical details like the git repo address or the port number of your new node server.

      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. <![CDATA[Running Etherpad Lite On Our Node.js Platform ]]> - + 2011-08-27T00:00:00+02:00 - http://cloudnode.github.com/blog/2011/08/27/running-etherpad-lite-on-our-node-js-platform- + http://cloudnode.github.com/cloudnode/blog/2011/08/27/running-etherpad-lite-on-our-node-js-platform- One of our design goals when planning the platform was to fully support socket.io, because this is where node.js really shines: real-time applications like chat, messaging and other collaboration tools. Having followed the original Etherpad from the beginning, we knew about the challenges and complexity of the two-way communication needed for such tools. 

      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.

      -

      +

      ]]>
      <![CDATA[A Big Update For Cloudnode]]> - + 2011-08-07T00:00:00+02:00 - http://cloudnode.github.com/blog/2011/08/07/a-big-update-for-cloudnode + http://cloudnode.github.com/cloudnode/blog/2011/08/07/a-big-update-for-cloudnode All main components of Cloudnode are currently under heavy development. Today we have updated everything:

      • Cloudnode Frontend
      • @@ -338,47 +338,47 @@ To manage your databases select “My Databases” from the main menu. <![CDATA[Run Your Own Map Server Using Leaflet]]> - + 2011-05-22T00:00:00+02:00 - http://cloudnode.github.com/blog/2011/05/22/run-your-own-map-server-using-leaflet + http://cloudnode.github.com/cloudnode/blog/2011/05/22/run-your-own-map-server-using-leaflet To demonstrate the use of OpenStreetMaps on an own map server, we built a presentation using the brand-new Leaflet library from CloudMade. It is backed by a huge server-side tile cache and has been optimized for the fast display of maps on the Web.

        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.

        -

        +

        ]]>
        <![CDATA[The New Cloudnode Document Site is Now Online]]> - + 2011-04-07T00:00:00+02:00 - http://cloudnode.github.com/blog/2011/04/07/the-new-cloudnode-document-site-is-now-online + http://cloudnode.github.com/cloudnode/blog/2011/04/07/the-new-cloudnode-document-site-is-now-online We know, when working with a new platform, it is all about good documentation. So we have established a new documentation site to have all information at one place. Naturally we didn’t use a pre-made wiki, but used 300 lines of JavaScript hosted on our sister site JGate.

        The documents are public now. So, even if you havn’t joined the beta yet, you can start studying the docs.

        -

        +

        See: http://docs.cloudno.de

        ]]>
        <![CDATA[We are now running Node.JS v0.4.0]]> - + 2011-02-12T00:00:00+01:00 - http://cloudnode.github.com/blog/2011/02/12/we-are-now-running-node-js-v0-4-0 + http://cloudnode.github.com/cloudnode/blog/2011/02/12/we-are-now-running-node-js-v0-4-0 Our platform is now running the shiny new node v0.4.0. As we started on v0.3.8, no recompilation of binary extensions is required. For the changelog on v0.4.0 see the the Node.JS site.

        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/

        ]]>
        <![CDATA[Welcome To The Cloudnode Blog]]> - + 2011-01-26T00:00:00+01:00 - http://cloudnode.github.com/blog/2011/01/26/welcome-to-the-cloudnode-blog + http://cloudnode.github.com/cloudnode/blog/2011/01/26/welcome-to-the-cloudnode-blog This blog is about interesting product or technical stories regarding cloudnode.

        You may also follow us at Twitter.

        ]]>
        diff --git a/blog/2011/01/26/welcome-to-the-cloudnode-blog/index.html b/blog/2011/01/26/welcome-to-the-cloudnode-blog/index.html index c5e2050..924065d 100644 --- a/blog/2011/01/26/welcome-to-the-cloudnode-blog/index.html +++ b/blog/2011/01/26/welcome-to-the-cloudnode-blog/index.html @@ -19,7 +19,7 @@ - + @@ -56,7 +56,7 @@
        - +
        @@ -129,7 +129,7 @@

        Welcome to the Cloudnode Blog