SlideShare uma empresa Scribd logo
1 de 21
Matt Pardee, Developer Evangelist
         @matt_pardee
           http://c9.io
What is Cloud9 IDE?
• Full-blooded IDE in the browser
•   BitBucket and Github

•   FTP

•   Deploy your apps

•   Run and debug Node.js (stepper, call
    stack, watchers, live execute)

•   Basic autocomplete and JavaScript
    validation
Building production-quality apps
          with Node.js
Making the case for Node.js

        The User
“You have to start with the
customer experience and work
backwards to the technology.”

                      - Steve Jobs
The User
• Web apps aren’t the only use for Node, but...
• Web apps have the most potential to effect change
• Why? It’s about people
• The old metric was speed
• The new metric is engagement
Engagement starts with a proper foundation



          SOCKET.IO
Node.js

Node.js is a platform for easily building fast,
scalable network applications.

Node.js uses an event-driven, non-blocking
I/O model.
A match made in /dev/heaven


SOCKET.IO     & NODE.JS
Cloud9. Powered by node.js.

• What does a user look like to Cloud9?
  •   Cloning codebases

  •   Debugging node.js apps

  •   Running “pwd”, “mkdir”, “npm”, “git”, “hg” in the CLI

  •   Deploying an application
A great user experience requires:

      non-blocking execution
                  &
   bi-directional communication
Building production-quality apps
      with Node.js, part II

           Scaling
Scaling is successful when...
the container expands, and
     it’s easy to expand
What needs to scale?


1.Infrastructure
2.Codebase
What needs to scale?


1.Infrastructure (of course)
2.Codebase
Scaling your Node.js codebase
         with Architect

http://github.com/c9/architect
Architect

• A simple yet powerful plugin system for large-scale
  node apps

• A plugin may provide one or more services
• A plugin’s services is exposed via register
• Each plugin can communicate with other plugins
Architect : A Simple Example
        1. Config.js specifies plugins & options
          module.exports = [
            { packagePath: "architect-http", port: 8080 },
            { packagePath: "architect-http-static", root:
          "www" },
            "./plugins/calculator",
            "./plugins/db",
            "./plugins/auth"
          ]


 2. Application entry point (server.js) initiates architect
        var path = require('path');
        var architect = require("architect");

        var configPath = path.join(__dirname, "config.js");
        var config = architect.loadConfig(configPath);

        architect.createApp(config, function (err, app) {});
Architect : A Simple Example
    3. Auth plugin registers its interface
    module.exports = function setup(options, imports, register) {

     // "database" was a service this plugin consumes
     var db = imports.database;

      register(null, {
        // "auth" is a service this plugin provides
        auth: {
          users: function (callback) {
            db.keys(callback);
          },
          authenticate: function (username, password, callback) {
            db.get(username, function (user) {
              if (!(user && user.password === password)) {
                return callback();
              }
              callback(user);
            });
          }
        }
      });
    };
Architect : What’s so great?
•   Plugin system creates a pool of shared resources
                                            Adds to the pool

                                            Draws from the pool

•   Plugins are reusable

•   Plugins can be either in the repo or as NPM packages

•   All your existing uses for Node are still in tact
Wrap-Up

•   Node.js is brilliant for modern web apps

•   If your most important metric is user engagement, choose node for at
    least one part of your app

•   github.com/c9/architect for your next node application

•   Check out c9.io for major updates coming at the end of the month

Mais conteúdo relacionado

Mais procurados

Jax2013 PaaS-Parade - Part 1: Cloud Foundry
Jax2013 PaaS-Parade - Part 1: Cloud FoundryJax2013 PaaS-Parade - Part 1: Cloud Foundry
Jax2013 PaaS-Parade - Part 1: Cloud Foundry
martinlippert
 

Mais procurados (20)

KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES
KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETESKUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES
KUBEBOOT - SPRING BOOT DEPLOYMENT ON KUBERNETES
 
Continuous Delivery to Kubernetes Using Helm
Continuous Delivery to Kubernetes Using HelmContinuous Delivery to Kubernetes Using Helm
Continuous Delivery to Kubernetes Using Helm
 
Serverless Summit India 2017: Fission
Serverless Summit India 2017: FissionServerless Summit India 2017: Fission
Serverless Summit India 2017: Fission
 
Building CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesBuilding CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and Kubernetes
 
[D2 COMMUNITY] Open Container Seoul Meetup - Kubernetes를 이용한 서비스 구축과 openshift
[D2 COMMUNITY] Open Container Seoul Meetup - Kubernetes를 이용한 서비스 구축과 openshift[D2 COMMUNITY] Open Container Seoul Meetup - Kubernetes를 이용한 서비스 구축과 openshift
[D2 COMMUNITY] Open Container Seoul Meetup - Kubernetes를 이용한 서비스 구축과 openshift
 
Atlassian Bamboo Feature Overview
Atlassian Bamboo Feature OverviewAtlassian Bamboo Feature Overview
Atlassian Bamboo Feature Overview
 
Kubernetes and the Rise of Application-centric Computing
Kubernetes and the Rise of Application-centric ComputingKubernetes and the Rise of Application-centric Computing
Kubernetes and the Rise of Application-centric Computing
 
Node js
Node jsNode js
Node js
 
Helm at reddit: from local dev, staging, to production
Helm at reddit: from local dev, staging, to productionHelm at reddit: from local dev, staging, to production
Helm at reddit: from local dev, staging, to production
 
Power of Microsoft Graph API by Nilesh Shah SharePoint Saturday Toronto 2017
Power of Microsoft Graph API by Nilesh Shah SharePoint Saturday Toronto 2017Power of Microsoft Graph API by Nilesh Shah SharePoint Saturday Toronto 2017
Power of Microsoft Graph API by Nilesh Shah SharePoint Saturday Toronto 2017
 
Lessons Learned Building a Container App Library
Lessons Learned Building a Container App LibraryLessons Learned Building a Container App Library
Lessons Learned Building a Container App Library
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cd
 
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
 
CI/CD Development in Kubernetes - Skaffold
CI/CD Development in Kubernetes -  SkaffoldCI/CD Development in Kubernetes -  Skaffold
CI/CD Development in Kubernetes - Skaffold
 
Jax2013 PaaS-Parade - Part 1: Cloud Foundry
Jax2013 PaaS-Parade - Part 1: Cloud FoundryJax2013 PaaS-Parade - Part 1: Cloud Foundry
Jax2013 PaaS-Parade - Part 1: Cloud Foundry
 
Containerd + buildkit breakout
Containerd + buildkit breakoutContainerd + buildkit breakout
Containerd + buildkit breakout
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)
 
Fuse Online Hands-on Guide
Fuse Online Hands-on GuideFuse Online Hands-on Guide
Fuse Online Hands-on Guide
 
Fuse Online Hands-on Guide
Fuse Online Hands-on GuideFuse Online Hands-on Guide
Fuse Online Hands-on Guide
 
SharePoint Saturday Zurich 2017 - SharePoint Framework the new development way
SharePoint Saturday Zurich 2017 - SharePoint Framework the new development waySharePoint Saturday Zurich 2017 - SharePoint Framework the new development way
SharePoint Saturday Zurich 2017 - SharePoint Framework the new development way
 

Semelhante a Building production-quality apps with Node.js

Semelhante a Building production-quality apps with Node.js (20)

Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott DeegExploring Next Generation Buildpacks - Anand Rao & Scott Deeg
Exploring Next Generation Buildpacks - Anand Rao & Scott Deeg
 
Tech io nodejs_20130531_v0.6
Tech io nodejs_20130531_v0.6Tech io nodejs_20130531_v0.6
Tech io nodejs_20130531_v0.6
 
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp BerlinTech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
 
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
 
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in DominoDEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
 
.NET Core Apps: Design & Development
.NET Core Apps: Design & Development.NET Core Apps: Design & Development
.NET Core Apps: Design & Development
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
HOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDHOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLD
 
Announcing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck TalksAnnouncing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck Talks
 
Rome .NET Conference 2024 - Remote Conference
Rome .NET Conference 2024  - Remote ConferenceRome .NET Conference 2024  - Remote Conference
Rome .NET Conference 2024 - Remote Conference
 
Nodejs overview
Nodejs overviewNodejs overview
Nodejs overview
 
Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js
Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.jsAsynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js
Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js
 
DCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless WorldDCEU 18: Docker Containers in a Serverless World
DCEU 18: Docker Containers in a Serverless World
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp
 
Docker for dev
Docker for devDocker for dev
Docker for dev
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
Staying on Topic - Invoke OpenFaaS functions with Kafka
Staying on Topic - Invoke OpenFaaS functions with KafkaStaying on Topic - Invoke OpenFaaS functions with Kafka
Staying on Topic - Invoke OpenFaaS functions with Kafka
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Building production-quality apps with Node.js

  • 1. Matt Pardee, Developer Evangelist @matt_pardee http://c9.io
  • 2. What is Cloud9 IDE? • Full-blooded IDE in the browser • BitBucket and Github • FTP • Deploy your apps • Run and debug Node.js (stepper, call stack, watchers, live execute) • Basic autocomplete and JavaScript validation
  • 4. Making the case for Node.js The User
  • 5. “You have to start with the customer experience and work backwards to the technology.” - Steve Jobs
  • 6. The User • Web apps aren’t the only use for Node, but... • Web apps have the most potential to effect change • Why? It’s about people • The old metric was speed • The new metric is engagement
  • 7. Engagement starts with a proper foundation SOCKET.IO
  • 8. Node.js Node.js is a platform for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model.
  • 9. A match made in /dev/heaven SOCKET.IO & NODE.JS
  • 10. Cloud9. Powered by node.js. • What does a user look like to Cloud9? • Cloning codebases • Debugging node.js apps • Running “pwd”, “mkdir”, “npm”, “git”, “hg” in the CLI • Deploying an application
  • 11. A great user experience requires: non-blocking execution & bi-directional communication
  • 12. Building production-quality apps with Node.js, part II Scaling
  • 13. Scaling is successful when... the container expands, and it’s easy to expand
  • 14. What needs to scale? 1.Infrastructure 2.Codebase
  • 15. What needs to scale? 1.Infrastructure (of course) 2.Codebase
  • 16. Scaling your Node.js codebase with Architect http://github.com/c9/architect
  • 17. Architect • A simple yet powerful plugin system for large-scale node apps • A plugin may provide one or more services • A plugin’s services is exposed via register • Each plugin can communicate with other plugins
  • 18. Architect : A Simple Example 1. Config.js specifies plugins & options module.exports = [ { packagePath: "architect-http", port: 8080 }, { packagePath: "architect-http-static", root: "www" }, "./plugins/calculator", "./plugins/db", "./plugins/auth" ] 2. Application entry point (server.js) initiates architect var path = require('path'); var architect = require("architect"); var configPath = path.join(__dirname, "config.js"); var config = architect.loadConfig(configPath); architect.createApp(config, function (err, app) {});
  • 19. Architect : A Simple Example 3. Auth plugin registers its interface module.exports = function setup(options, imports, register) { // "database" was a service this plugin consumes var db = imports.database; register(null, { // "auth" is a service this plugin provides auth: { users: function (callback) { db.keys(callback); }, authenticate: function (username, password, callback) { db.get(username, function (user) { if (!(user && user.password === password)) { return callback(); } callback(user); }); } } }); };
  • 20. Architect : What’s so great? • Plugin system creates a pool of shared resources Adds to the pool Draws from the pool • Plugins are reusable • Plugins can be either in the repo or as NPM packages • All your existing uses for Node are still in tact
  • 21. Wrap-Up • Node.js is brilliant for modern web apps • If your most important metric is user engagement, choose node for at least one part of your app • github.com/c9/architect for your next node application • Check out c9.io for major updates coming at the end of the month

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n