Upload
ibuildings-italia
View
1.005
Download
0
Embed Size (px)
DESCRIPTION
Eugenio Minardi @ Mean Conference - 9 giugno 2014
Citation preview
© Ibuildings 2013 - All rights reserved 1
MEAN: Il nuovo stack di sviluppo per il futuro del WEB
© 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
© 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
© Ibuildings 2013 - All rights reserved© Ibuildings 2013 - All rights reserved 5
© 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
© 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
Ma cosa è uno stack?
© Ibuildings 2013 - All rights reserved
Lo Stack LAMP
9
Sistema Operativo Linux
Web Server Apache
Database MySQL
Linguaggio Server-side PHP
© Ibuildings 2013 - All rights reserved
Lo Stack Microsoft
10
Sistema Operativo Windows
Web Server IIS
Database SQL Server
Linguaggio Server-side C# / .net
© 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
© 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
© 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
© Ibuildings 2013 - All rights reserved
Full-stack Javascript
14
© 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
© 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
© Ibuildings 2013 - All rights reserved
La storia di JavascriptDa 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
Entriamo nel dettaglio
© Ibuildings 2013 - All rights reserved
Cosa è Node.JSNode.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
© 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
© Ibuildings 2013 - All rights reserved
I simili di Node.JSAltri 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
© Ibuildings 2013 - All rights reserved 22
Performance di Node.jsI 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
© Ibuildings 2013 - All rights reserved
Cosa è expressexpress è 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
© Ibuildings 2013 - All rights reserved 24
expressDifferenze 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
© Ibuildings 2013 - All rights reserved 25
expressexpress è 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
© 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
© Ibuildings 2013 - All rights reserved
Cosa è MongoDBMongoDB 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
© 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
© Ibuildings 2013 - All rights reserved
Cosa è AngularJSAngularJS è 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
© Ibuildings 2013 - All rights reserved
AngularJSMolto 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
© 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
I vantaggi dello Stack MEAN
© 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
© 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
© 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
© Ibuildings 2013 - All rights reserved
Javascript is EverywhereJavascript è 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
© 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
© Ibuildings 2013 - All rights reserved
TestabilitৠTutto il codice prodotto è testabile § I test sono automatizzabili anche su client
38
© Ibuildings 2013 - All rights reserved 39
Per sintetizzareI 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
Ibuildings ITALIAFinalmente le tue APP Web & Mobile diventano GRANDI
Ibuildings NV Rappresentanza per l’Italia
Via Santa Maria Valle, 3 20123 Milano
[email protected] www.ibuildings.it