Contenu connexe Similaire à MEAN: il nuovo stack di sviluppo per il futuro del web (20) Plus de Eugenio Minardi (20) MEAN: il nuovo stack di sviluppo per il futuro del web3. © Ibuildings 2013 - All rights reserved© Ibuildings 2013 - All rights reserved
Chi sono io?
▪ Software Architect e sviluppatore per il web da più di 10 anni
▪ Sempre attento alle nuove tecnologie
▪ Partecipe alle community e alla vita open source
3
Eugenio Minardi
@kmox83
eugeniominardi
eugenio@ibuildings.it
4. © Ibuildings 2013 - All rights reserved© Ibuildings 2013 - All rights reserved
Chi è ibuildings?
▪ I professionisti per lo sviluppo di applicazioni enterprise,
mission-critical per il web e il mobile
▪ Innovativa, Aperta, sempre orientata alla conoscenza
▪ Fondata nel 1999
▪ Uffici nei Paesi Bassi, Gran Bretagna, Italia
▪ Più di 80 esperti, specialisti software riconosciuti a livello
europeo
▪ Partnership tecnologiche con le realtà più innovative del
Web e del Mobile: PHP, Drupal, Aquia, Sencha
▪ Open Source come modello per dare più valore ai risultati
4
6. © Ibuildings 2013 - All rights reserved© Ibuildings 2013 - All rights reserved
I nostri servizi
Sviluppo
Applicazioni WEB
2.0
Sviluppo
Applicazioni
Mobile
Supporto 24x7
Project - Process
Management
Advisor
Tecnologico:
Analisi Tecnica
Rigorous(
Process(
Excep/onal(
Talent(
Technology(
Exper/se(
!
Assured!
Delivery!
6
7. © Ibuildings 2013 - All rights reserved
Lo Stack MEAN
7
{ name: “MongoDB”, type: “Document Database”}
Framework per Node.js
Framework di Frontend per i Supereroi
Ambiente event-driven per l’esecuzione di
operazioni concorrenti
9. © Ibuildings 2013 - All rights reserved
Lo Stack LAMP
9
Sistema Operativo Linux
Web Server Apache
Database MySQL
Linguaggio Server-side PHP
10. © Ibuildings 2013 - All rights reserved
Lo Stack Microsoft
10
Sistema Operativo Windows
Web Server IIS
Database SQL Server
Linguaggio Server-side C# / .net
11. © Ibuildings 2013 - All rights reserved
Paragone con MEAN
11
STACK LAMP Microsoft MEAN
Sistema
Operativo
Linux Windows
Web Server Apache IIS Node.js
Database MySQL SQL Server MongoDB
Linguaggio
Server-side
PHP C# / .net
Framework
Server-Side
express
Framework
Client-Side
AngularJS
12. © Ibuildings 2013 - All rights reserved
Paragone con MEAN
12
STACK LAMP Microsoft MEAN
Sistema
Operativo
Linux Windows Linux/Windows
Web Server Apache IIS Node.js
Database MySQL SQL Server MongoDB
Linguaggio
Server-side
PHP C# / .net Javascript
Framework
Server-Side
express
Framework
Client-Side
AngularJS
13. © Ibuildings 2013 - All rights reserved
MEAN S.P.A.
MEAN è uno stack che permette di sviluppare ciò che viene
definito Single Page Application
§ Parte della complessità del codice viene lasciata al client
§ Il codice applicativo è strutturato sia su client che su server
§ Il ciclo di sviluppo del client si uniforma a quello del server
13
15. © Ibuildings 2013 - All rights reserved
La storia di Javascript
§ Creato nel maggio del 1995 in 10 giorni
§ Nome originale Mocha, dato dal fondatore di Netscape Marc
Andreessen
§ Cambiato nel settembre 1995 in LiveScript
§ Tornato ad essere chiamato JavaScript su licenza della Sun per
sfruttare l’onda positiva di Java
§ Tra il 1996 e 97 è stato preso in carico da ECMA, società di
standardizzazione
§ I grandi competitor hanno preso strade diverse (Es: Microsoft
con Jscript in IE)
§ Riunificazione nello standard ECMA dovuta al conio del
termine AJAX da parte di Jesse James Garrett nel 2005
15
16. © Ibuildings 2013 - All rights reserved
La storia di Javascript
§ Javascript è frainteso
§ La sintassi lo fa sembrare C-like, come Java
§ Il paradigma è molto più simile a LISP, tanto che in una delle
implementazioni iniziali erano utilizzate le parentesi
§ L’uso del linguaggio in modo simile a Java porta a gravi errori
di programmazione
16
17. © Ibuildings 2013 - All rights reserved
La storia di Javascript
Da Wikipedia:
!
JavaScript is a prototype-based scripting language with dynamic typing
and has first-class functions. Its syntax was influenced by C. JavaScript
copies many names and naming conventions from Java, but the two
languages are otherwise unrelated and have very different semantics.
The key design principles within JavaScript are taken from the Self and
Scheme programming languages.[6] It is a multi-paradigm language,
supporting object-oriented,[7] imperative, and functional[1][8]
programming styles.
17
19. © Ibuildings 2013 - All rights reserved
Cosa è Node.JS
Node.JS è una piattaforma software
utilizzata
§ per costruire applicazioni scalabili
§ particolarmente per il lato server-side
§ per gestire un elevato throughput
§ implementa un server http
19
20. © Ibuildings 2013 - All rights reserved
La storia di Node.JS
§ Node.JS è stato creato da Ryan Dahl
§ Il progetto ha avuto inizio nel 2009
§ Nasce dall’idea ottenuta osservando una progress-bar evoluta
su Flickr (Il client non sa quanto manca)
§ Necessità di eventi in push
§ Preceduto da una serie di fallimenti in C, Lua, and Haskell
§ Basato sul motore Javascript di Chrome chiamato V8
§ Il progetto si è spostato dalla semplice idea iniziale fino a
diventare l’oggetto che è ora
20
21. © Ibuildings 2013 - All rights reserved
I simili di Node.JS
Altri linguaggi offrono piattaforme simili a Node.JS
§ Tornado e Twisted in Python
§ libevent in C
§ Vert.X in Java, JavaScript, Groovy, Python and Ruby (Su JVM)
§ Akka in Scala
§ EventMachine in Ruby
§ e molti altri…
21
22. © Ibuildings 2013 - All rights reserved 22
Performance di Node.js
I punti di forza che rendono Node.JS performante sono
§ I grandi del settore competono sui motori Javascript (Mozilla,
Google, Apple, Microsoft, Opera)
§ V8 di Google è diventato estremamente performante
§ Modello non bloccante di Node.JS
§ Software leggero
§ Possibilità di gestire migliaia di connessioni contemporanee su
una dotazione hardware nella media
§ Nativamente asincrono
23. © Ibuildings 2013 - All rights reserved
Cosa è express
express è un framework per Node.js che
§ semplifica l’implementazione di servizi
REST
§ fornisce strumenti utili per la gestione
request/response
§ aiuta a dare una struttura
all’applicazione
23
24. © Ibuildings 2013 - All rights reserved 24
express
Differenze tra middleware e framework
§ Il middleware è una funzione che interviene sui dati che
passano o che effettua operazioni tra il ciclo di richiesta HTTP
ed il ciclo di risposta
§ Il framework implementa le funzioni di utilità e stabilisce
delle linee guida per il proprio utilizzo.
§ Connect è un framework che raccoglie diverse funzioni di
middleware
§ Express estende connect e ne riespone i middleware
appoggiandosi all’http.Server di node.js
25. © Ibuildings 2013 - All rights reserved 25
express
express è il framework più utilizzato per lo sviluppo di
applicazioni Node.JS
§ si ispira a Sinatra (Ruby)
§ è diventato ormai di uso standard
§ express è un’estensione del middleware framework chiamato
connect
26. © Ibuildings 2013 - All rights reserved
Cosa è MongoDB
è un database non relazionale orientato ai
documenti
§ per costruire basi di dati documentali
scalabili
§ dal nome derivato da “humongous”
cioè enorme, permette la gestione di
grandi documenti e grandi basi di dati
§ permette in modo semplice di replicare
i dati
§ garantisce la consistenza e tolleranza
di partizione a scapito della
disponibilità (CP - CAP Theorem)
26
27. © Ibuildings 2013 - All rights reserved
Cosa è MongoDB
MongoDB dispone di uno schema dinamico
§ nell’evoluzione di un’applicazione la modifica dello schema
non comporta una modifica al database con conseguente
migrazione dei dati
§ i dati dei documenti vengono salvati come serviranno
all’applicazione, in tal modo si riducono i tempi di calcolo/
elaborazione del dato
§ Posso ottenere un documento con diversi livelli di
annidamento senza alcuna Join (pre join)
§ MongoDB dispone di funzioni per l’interrogazione molto simili
a ciò che l’SQL permette di esprimere
27
28. © Ibuildings 2013 - All rights reserved
Cosa è MongoDB
§ MongoDB dispone di un supporto efficiente per gli indici
§ Supporta le transazioni a livello di documento
§ Salva e scambia i documenti in formato JSON (su disco in BSON
che è una rappresentazione binaria dei JSON)
28
29. © Ibuildings 2013 - All rights reserved
Cosa è AngularJS
AngularJS è un framework client-side che
implementa l’MVVM
MVVM (Model View ViewModel) -
Specializzazione dell’MVC per lo sviluppo
di componenti legati alla UI.
Framework sviluppato e supportato da
Google
29
30. © Ibuildings 2013 - All rights reserved
AngularJS
Molto utilizzato in ambienti di sviluppo event-driven
§ per costruire applicazioni complesse
§ espressione della UI in modo dichiarativo (formalità)
§ abilita al testing in modo più semplice
§ Ciclo design-sviluppo più semplice, chi fa markup può
intervenire senza “fare danni” alla logica
30
31. © Ibuildings 2013 - All rights reserved
AngularJS
§ In AngularJS si estende il vocabolario HTML
dell’applicazione
§ AngularJS formalizza la UI ma non fornisce componenti
grafici.
§ AngularJS è tuttavia estensibile ed esistono diversi moduli
che permettono l’integrazione dei framework più comuni
(come per esempio bootstrap)
§ Anche AngularJS ha una community molto attiva con molti
moduli pronti all’uso
31
33. © Ibuildings 2013 - All rights reserved
Nessuna preferenza di OS
§ Node.JS e MongoDB sono disponibili su diversi sistemi
operativi
§ Non si è legati ad uno specifico ambiente ma si può cambiare
anche durante il ciclo di vita dell’applicazione
§ Non c’è bisogno di cambiare hardware e software già
esistenti
33
34. © Ibuildings 2013 - All rights reserved
Supporto delle community
§ Tutti i software ed i framework utilizzati hanno grandi
community alle spalle
§ esistono forum, canali IRC, newsletter e molti altri posti dove
trovare informazioni
34
35. © Ibuildings 2013 - All rights reserved
Supporto delle corporate
§ Node.JS, MongoDB e AngularJS hanno alle spalle delle società
solide che ne portano avanti lo sviluppo
§ Questo fa si che i prodotti derivati siano all’altezza di
applicazioni enterprise
§ Anche il supporto al prodotto è a lungo termine
35
36. © Ibuildings 2013 - All rights reserved
Javascript is Everywhere
Javascript è il linguaggio di tutte le componenti dello stack, il che
offre svariati vantaggi:
§ maggiore interoperabilità degli sviluppatori
§ standardizzazione dei metodi di sviluppo
§ consistenza dei dati nel corso dello sviluppo
§ rendere i propri sviluppatori full-stack dà un vantaggio sugli
sviluppi
36
37. © Ibuildings 2013 - All rights reserved
Ciclo di sviluppo
§ Essendo AngularJS un framework MVVM porta ad avere una
logica sul client strutturalmente equivalente a quella del server
§ Si possono usare le stesse metodologie di sviluppo anche sulla
parte client
37
38. © Ibuildings 2013 - All rights reserved
Testabilità
§ Tutto il codice prodotto è testabile
§ I test sono automatizzabili anche su client
38
39. © Ibuildings 2013 - All rights reserved 39
Per sintetizzare
I motivi che rendono forte MEAN sono
§ Abbattimento dei costi dell’infrastruttura
§ Diminuzione dei tempi di sviluppo
§ Reperibilità di sviluppatori
§ Aumento delle performance
§ Unificazione delle competenze su tutto lo stack
§ Natura asincrona
40. Ibuildings ITALIA
Finalmente le tue APP Web & Mobile diventano GRANDI
Ibuildings NV
Rappresentanza per l’Italia
Via Santa Maria Valle, 3
20123 Milano
info@ibuildings.it
www.ibuildings.it