Convincing the boss       Claudio Cicali    Better Software 2011
Obiettivi            Claudio Cicali - Better Software 2011
Claudio CicaliFreelance Web Developer      claudio.cicali@gmail.com      @caludio      http://ccl.me                      ...
?“EVENT DRIVEN I/O FRAMEWORK”           (Wikipedia)                         Claudio Cicali - Better Software 2011
!?     Claudio Cicali - Better Software 2011
Un interprete JavaScript (Google V8)                +         Alcuni componenti                +       Codice di collegame...
JavaScript    Node standard library    C             Node bindings                    thread    event                     ...
Scopo:Una piattaforma per sviluppare     applicazioni di rete       scalabili e veloci        in JavaScript        Ruby Ev...
Creato daRyan Dahl nel 2009   Sponsorizzato da Joyvent       (San Francisco)                        Claudio Cicali - Bette...
Esecuzione di script                       Claudio Cicali - Better Software 2011
Interfaccia REPL                   Claudio Cicali - Better Software 2011
Windows?                    No.                  (fino alla 0.5)Microsoft aiuta ufficialmente - annuncio del 23/6           ...
Linee guida dello sviluppoIntegrare componenti esistentiMassima estensibilitàGuardare sempre avanti                       ...
IntegrazioneMotore JavaScript V8 (Google Chrome)LIBEV (event loop)LIBEIO (thread pool)                           Claudio C...
JavaScript    Node standard library    C             Node bindings                    thread    event                     ...
EstensibilitàModuli CommonJSPossibile utilizzo di librerie C/C++                             Claudio Cicali - Better Softw...
Guardare al futuroProgetto molto “dinamico”:nessun problema a non garantirela retrocompatibilità                          ...
Caratteristiche        tecniche peculiariArchitettura “singolo processo” con event loop     (no multiprocesso, no multi-th...
This is the node.js project:To provide a purely evented,non-blocking infrastructure toscript highly concurrent programs.  ...
Caratteristiche conseguenti  Ottime prestazioni (veloce e scalabile)  Basso impegno di risorse  Soffre l’impegno della CPU...
(grafico del 2010)                           Smaller is Better                 80                 60response time (ms)     ...
Caratteristiche indirette  Ben documentato  Community molto attiva  ~5000 utenti su google groups  ~2000+ domande su Stack...
Ambiente realeBrowser                     Server                  Socket.io        Node    Script X                       ...
Che tipi di applicazione?Servizi di rete(HTTP, proxy, gateway, messaging) Backend per API JSON   Real time (“soft”). Con S...
Non è (ancora?) adatto per... Applicazioni che fanno uso intensivo di CPU Medie applicazioni web                          ...
Moduli disponibiliDatabase: MySQL, Sqlite, PostgreSQL, OracleNoSQL: CouchDB, Mongo, RedisServizi: Static file server, cachi...
Moduli? Anche troppi!                  Claudio Cicali - Better Software 2011
Ad alto livelloExpress (web framework)    Calipso (CMS)                      Claudio Cicali - Better Software 2011
Strumenti per lo sviluppo npm: package manager node inspector: debugger supervisor / forever: script manager              ...
Claudio Cicali - Better Software 2011
Debugger           Claudio Cicali - Better Software 2011
“The guys that are getting paid the big bucks todeliver scalable solutions aren’t up at nightfeverishly rewriting their sy...
Domande?claudio.cicali@gmail.com  Follow me: @caludio                        Claudio Cicali - Better Software 2011
Upcoming SlideShare
Loading in …5
×

Node.js – Convincing the boss

3,776 views

Published on

Una panoramica non troppo tecnica delle caratteristiche di Node.js

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,776
On SlideShare
0
From Embeds
0
Number of Embeds
835
Actions
Shares
0
Downloads
27
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Node.js – Convincing the boss

    1. 1. Convincing the boss Claudio Cicali Better Software 2011
    2. 2. Obiettivi Claudio Cicali - Better Software 2011
    3. 3. Claudio CicaliFreelance Web Developer claudio.cicali@gmail.com @caludio http://ccl.me “Fighting Internet Explorer since 1999” Claudio Cicali - Better Software 2011
    4. 4. ?“EVENT DRIVEN I/O FRAMEWORK” (Wikipedia) Claudio Cicali - Better Software 2011
    5. 5. !? Claudio Cicali - Better Software 2011
    6. 6. Un interprete JavaScript (Google V8) + Alcuni componenti + Codice di collegamento =Un programma che esegue JavaScript (server side - no browser) Claudio Cicali - Better Software 2011
    7. 7. JavaScript Node standard library C Node bindings thread event pool loop V8 (libeio) (libev) Claudio Cicali - Better Software 2011
    8. 8. Scopo:Una piattaforma per sviluppare applicazioni di rete scalabili e veloci in JavaScript Ruby Event Machine Python Twisted / Tornado Claudio Cicali - Better Software 2011
    9. 9. Creato daRyan Dahl nel 2009 Sponsorizzato da Joyvent (San Francisco) Claudio Cicali - Better Software 2011
    10. 10. Esecuzione di script Claudio Cicali - Better Software 2011
    11. 11. Interfaccia REPL Claudio Cicali - Better Software 2011
    12. 12. Windows? No. (fino alla 0.5)Microsoft aiuta ufficialmente - annuncio del 23/6 Claudio Cicali - Better Software 2011
    13. 13. Linee guida dello sviluppoIntegrare componenti esistentiMassima estensibilitàGuardare sempre avanti Claudio Cicali - Better Software 2011
    14. 14. IntegrazioneMotore JavaScript V8 (Google Chrome)LIBEV (event loop)LIBEIO (thread pool) Claudio Cicali - Better Software 2011
    15. 15. JavaScript Node standard library C Node bindings thread event pool loop V8 (libeio) (libev) Claudio Cicali - Better Software 2011
    16. 16. EstensibilitàModuli CommonJSPossibile utilizzo di librerie C/C++ Claudio Cicali - Better Software 2011
    17. 17. Guardare al futuroProgetto molto “dinamico”:nessun problema a non garantirela retrocompatibilità Claudio Cicali - Better Software 2011
    18. 18. Caratteristiche tecniche peculiariArchitettura “singolo processo” con event loop (no multiprocesso, no multi-thread) Qualsiasi operazione di I/O è asincrona (file system compreso, of course) Supporto nativo per HTTP, DNS, TLS Claudio Cicali - Better Software 2011
    19. 19. This is the node.js project:To provide a purely evented,non-blocking infrastructure toscript highly concurrent programs. Claudio Cicali - Better Software 2011
    20. 20. Caratteristiche conseguenti Ottime prestazioni (veloce e scalabile) Basso impegno di risorse Soffre l’impegno della CPU (migliorerà con gli Web Workers) La programmazione a eventi non è per definizione lineare... Claudio Cicali - Better Software 2011
    21. 21. (grafico del 2010) Smaller is Better 80 60response time (ms) server 40 nginx thin tornado node 20 50 100 150 200 250 300 concurrency Claudio Cicali - Better Software 2011
    22. 22. Caratteristiche indirette Ben documentato Community molto attiva ~5000 utenti su google groups ~2000+ domande su StackOverflow ~600 persone su #freenode 832 moduli, so far Ehi, è JavaScript! Claudio Cicali - Better Software 2011
    23. 23. Ambiente realeBrowser Server Socket.io Node Script X Script Y Ambiente di testTest suite Server Node Socket.io Node Script X Script Y Claudio Cicali - Better Software 2011
    24. 24. Che tipi di applicazione?Servizi di rete(HTTP, proxy, gateway, messaging) Backend per API JSON Real time (“soft”). Con Socket.io Streaming (up & down) Siti “one page” Command line tools Bot Claudio Cicali - Better Software 2011
    25. 25. Non è (ancora?) adatto per... Applicazioni che fanno uso intensivo di CPU Medie applicazioni web Claudio Cicali - Better Software 2011
    26. 26. Moduli disponibiliDatabase: MySQL, Sqlite, PostgreSQL, OracleNoSQL: CouchDB, Mongo, RedisServizi: Static file server, cachingRete: SSH, xmpp, ftp, nntp, imap...Middleware: Cookie, Session, ConnectTemplating: HAML, EJS, jsdomJS puro: Markdown, Less.js (e YUI, jQuery)...http://bit.ly/btcc-moduleshttp://bit.ly/btcc-npm Claudio Cicali - Better Software 2011
    27. 27. Moduli? Anche troppi! Claudio Cicali - Better Software 2011
    28. 28. Ad alto livelloExpress (web framework) Calipso (CMS) Claudio Cicali - Better Software 2011
    29. 29. Strumenti per lo sviluppo npm: package manager node inspector: debugger supervisor / forever: script manager Claudio Cicali - Better Software 2011
    30. 30. Claudio Cicali - Better Software 2011
    31. 31. Debugger Claudio Cicali - Better Software 2011
    32. 32. “The guys that are getting paid the big bucks todeliver scalable solutions aren’t up at nightfeverishly rewriting their systems in Node.They’re doing what they’ve always done:measuring, testing, benchmarking, thinking hard,keeping up with the academic literature thatpertains to their problems.” -- Alex Payne http://al3x.net/2010/07/27/node.html Claudio Cicali - Better Software 2011
    33. 33. Domande?claudio.cicali@gmail.com Follow me: @caludio Claudio Cicali - Better Software 2011

    ×