40
© Ibuildings 2013 - All rights reserved 1

MEAN: il nuovo stack di sviluppo per il futuro del web

Embed Size (px)

DESCRIPTION

Eugenio Minardi @ Mean Conference - 9 giugno 2014

Citation preview

Page 1: MEAN: il nuovo stack di sviluppo per il futuro del web

© Ibuildings 2013 - All rights reserved 1

Page 2: MEAN: il nuovo stack di sviluppo per il futuro del web

MEAN: Il nuovo stack di sviluppo per il futuro del WEB

Page 3: 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

[email protected]

Page 4: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 5: MEAN: il nuovo stack di sviluppo per il futuro del web

© Ibuildings 2013 - All rights reserved© Ibuildings 2013 - All rights reserved 5

Page 6: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 7: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 8: MEAN: il nuovo stack di sviluppo per il futuro del web

Ma cosa è uno stack?

Page 9: MEAN: il nuovo stack di sviluppo per il futuro del web

© Ibuildings 2013 - All rights reserved

Lo Stack LAMP

9

Sistema Operativo Linux

Web Server Apache

Database MySQL

Linguaggio Server-side PHP

Page 10: MEAN: il nuovo stack di sviluppo per il futuro del web

© Ibuildings 2013 - All rights reserved

Lo Stack Microsoft

10

Sistema Operativo Windows

Web Server IIS

Database SQL Server

Linguaggio Server-side C# / .net

Page 11: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 12: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 13: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 14: MEAN: il nuovo stack di sviluppo per il futuro del web

© Ibuildings 2013 - All rights reserved

Full-stack Javascript

14

Page 15: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 16: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 17: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 18: MEAN: il nuovo stack di sviluppo per il futuro del web

Entriamo nel dettaglio

Page 19: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 20: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 21: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 22: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 23: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 24: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 25: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 26: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 27: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 28: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 29: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 30: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 31: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 32: MEAN: il nuovo stack di sviluppo per il futuro del web

I vantaggi dello Stack MEAN

Page 33: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 34: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 35: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 36: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 37: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 38: MEAN: il nuovo stack di sviluppo per il futuro del web

© Ibuildings 2013 - All rights reserved

TestabilitৠTutto il codice prodotto è testabile § I test sono automatizzabili anche su client

38

Page 39: MEAN: il nuovo stack di sviluppo per il futuro del web

© 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

Page 40: MEAN: il nuovo stack di sviluppo per il futuro del web

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