How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

16
How we architected Cloud9 IDE for scale on NodeJS Rik Arends, CTO and Co-founder Cloud9 IDE Inc YaC, Moscow, September 19 2011 Tuesday, September 27, 11

description

Rik Arends, Cloud9 IDECo-founder and CTO of Cloud9 IDE, Inc (previously Ajax.org). He was quick to recognize the shift between compiled and dynamic languages, he has worked on language transcompilers, in-browser graphics, optimized API designs, NoSQL database architecture and high performance web service driven applications. As an early believer in the browser as the winning application runtime, he focused his career on making the web a better place for developers. He now oversees the technical vision and development of Cloud9 IDE.Presentation topic:How we Architected Cloud9 IDE for scale on NodeJS.Key points:Building and scaling a web based IDE is a big challenge, however doing this on Node.JS presented us with a lot of unique challenges. Cloud9 is built using a full Ajax client, and besides Node.JS, it utilizes a full set of new HTML5 features and offline support. In this talk I want to go through the unique architecture and design decisions that we made when building Cloud9 IDE. This will be of interest to medium to advanced level programmers, who want to know more about Node.JS and scalable app development.

Transcript of How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Page 1: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

How we architected Cloud9 IDE for scale on

NodeJS

Rik Arends, CTO and Co-founderCloud9 IDE Inc

YaC, Moscow, September 19 2011

Tuesday, September 27, 11

Page 2: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Today

• What is what

• Cloud9 IDE Demo

• Architecture of Cloud9 on Node.JS

• Future

Tuesday, September 27, 11

Page 3: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

What is Cloud9 IDE?

• Office : Google docs -> Eclipse : Cloud9

• The easiest way to create Node.JS apps

• Office in Ams and SF

• Recently funded by Accel / Atlassian $5.5M

• Why....?

Tuesday, September 27, 11

Page 4: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

What is Node.JS

• Evented IO for JavaScript

• V8 Engine from google chrome

• Everything asynchronous

Tuesday, September 27, 11

Page 5: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Tuesday, September 27, 11

Page 6: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Demo Cloud9

Tuesday, September 27, 11

Page 7: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Whats next?• Full collaboration

• Autocomplete and docs for Node.JS

• Git UI

• iPad version

• SSH / SFTP support

• Support for Ruby, Python, PHP, (Java)

Tuesday, September 27, 11

Page 8: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Behind Cloud9 IDE

• Entire backend is written in Node.JS / Redis

• IDE and libraries opensourced

• Based on connect, socket.io, ACE, JSDav

• Run and debug your Node.JS code

• Cloud9 is written with Cloud9

Tuesday, September 27, 11

Page 9: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Its not working! We have to go deeper

Tuesday, September 27, 11

Page 10: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Server

IdeServer

reverse proxy NGINX

project.user.c9.io

*.c9.io

run VMcontrol

node process control

Client

static.c9.io

Tuesday, September 27, 11

Page 11: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Client

IdeServer

reverse proxy

Socket IOV8 Debugger

run VMJSON TCP

node process V8 Sock

Debug

Tuesday, September 27, 11

Page 12: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Client

Connect JSDav Socket IO

IDE Server

Tuesday, September 27, 11

Page 13: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Node.JS continuity

• Single process, single exception crashes everything: NEVER THROW

• Thick client, design stateless

• Front proxy

Tuesday, September 27, 11

Page 14: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Foundations

• APF - Ajax.org Platform (ui.ajax.org)

• ACE - Ajax.org Cloud9 Editor (ace.ajax.org)

• Cloud9 IDE (github.com/ajaxorg/cloud9)

• JSDav, WebFS, Async.JS, Node-Github, etc...

Tuesday, September 27, 11

Page 15: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Thank you

• email: [email protected]

• twitter: @Cloud9IDE / @rikarends

• github: github.com/ajaxorg/cloud9

• c9.io or cloud9ide.com

• www.ajax.org

Tuesday, September 27, 11

Page 16: How we Architected Cloud9 IDE for scale on NodeJS. Rik Arends, Cloud9 IDE

Tuesday, September 27, 11