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 Jonathan Allen on Aug 30, 2011
The iisnode project is a module that adds Node support to Internet Information Server 7.0 and later. The primary role of IIS is to act as an application server for Node, much in the same way that it does for classic ASP and ASP.NET. Developers familiar with these technologies will find the feature list to be quite familiar.
Node is informally known as node.js. It is a JavaScript-based server-side framework with a heavy emphasis on asynchronous programming techniques. Back in June it was announced that Microsoft would be partnering with Joynet to port Node to the Windows platform. While a naive port would be quite trivial, in order to get the desired performance this project has an emphasis on using native features such as I/O completion ports.
Back to the IIS module, where process management takes the center stage. Just like ASP.NET, IIS handles starting and stopping instances of the Node runtime. Since Node is single-threaded, IIS will also handle monitoring and load-balancing across multiple instances of Node. There are no details yet, but one would assume that we are looking at the traditional ratio of one process/thread per logical core.
Like ASP.NET, iisnode will support in-place updating. One merely has to drop a new version of a script file and IIS will recycle the Node processes as they complete their currently executing requests.
Node can be used as a standalone web server, but that requires the developer to handle a lot of things that they really have no business messing with. For example, who wants to spend weeks fine-tuning caching and compression code for static files? Instead developers can leverage IIS capabilities for this and focus on the areas where Node shines.
In addition to caching and compression, Node also inherits the port sharing, security, URL rewriting, and logging capabilities of IIS. Some of these features will require changes to your Node code, for example one needs to read the address and port numbers from the process.env.PORT environmental variable.
Since we are talking about IIS, there will of course be some XML configuration to deal with. At the very least one needs to register the server-side JavaScript files in the web.config file. Failure to do so will cause those files to be served by IIS as if they were client-side JavaScript.
Taming HTML5 and JS: High Performance Mobile, WebKit, FireFox Dev Tools @QCon New York
Building HTML5 Apps in Hours, Not Days
Tools to unit test your JavaScript
Troubleshoot Java/.NET performance while getting full visibility in production
The rising popularity of Node.Js has been the fact that it offers a light-weight http(s), tcp, ftp server with literally 10 lines of code devoid of the bloat typically found in other "main stream" application servers and frameworks. And in this case, on Windows! Scale your app without system and AS memory consumption and just read the damn docs. Its pretty straight forward, plus you'll save on licensing fees. I'm not knocking Joyent's "port popularity" hustle but this announcement seems absolutely ridiculous.
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.
1 comment
Watch Thread Reply