際際滷

際際滷Share a Scribd company logo
SEA Aeroporti di Milano & PHP
Case study
Ing. Gaetano Giunta  SEA (Direzione Sistemi Informativi di Gruppo)
Elena Brambilla  SIDI S.r.l.
PHP Day 2006
Canale Enterprise
Bari  20 maggio 2006
Chi 竪 SEA?
Diamo i numeri...
Nel 2005:
 Oltre 29 milioni di passeggeri
 321 mila movimenti
 Circa 6500 dipendenti
 Malpensa: secondo HUB in Europa per puntualit
 Primo hub in Europa per bagagli consegnati senza
disguidi
Ancora numeri...
Sistemi Informativi:
 115 persone (di cui 40 helpdesk)
 server: 80 a Linate, 100 a Malpensa (in 6 sale server)
 wan: 500 switch
 postazioni desktop: 2000 client, 900 postazioni di
front-end
 wi-fi: 110 access points, 120 palmari, 50 veicolari
 sistemi operativi: DOS, Windows 95, 98, NT, 2000,
2003, DOS, AIX, HP-UX, Solaris, Linux...
 database: oracle 8 e 9, Sybase, SQLServer, MySQL
PHP in SEA
 Primo deploy: nel 2001 su SCO Unix
 Oggi: su Solaris, Windows, Linux
 Utilizzato per creazione di custom web apps e come
linguaggio di scripting all-purpose
 Utilizzo di applicazioni open-source di mercato per
funzioni non business-critical (gestione biblioteca,
etc...), successivamente integrate nei sistemi di scalo
PHP ed i sistemi legacy: che colla!
 Siti basati su db sybase, oracle, mysql e sqlserver
 Autenticazione integrata con dominio windows 2000
via LDAP
 Webservices: pubblicazione e consumo di servizi
XML-RPC e SOAP
 Windows: utilizzo trasparente di oggetti COM
 Interazione con server remoti via FTP, HTTP
Case study: datamover
 ETL in a BOX
 Collega sistemi core di
scalo da vari anni
 2-phase commit
 per HA: messo in inittab
 Utilizza ADODB come
data access layer
 File di configurazione =
codice PHP!!!
sybase
oracle
php
exec procs.sp_get_dati
begin sp_in_dati(to_date('&&1&&'), &&2&&); end;
Per ogni riga
esegui
Case study: datamover evolution
 Problema: occorre un
server su cui siano
installati i driver dei 2
database da collegare
 Idea: dividere il processo
in due, utilizzando web-
services per comunicare
 Soluzione: un nuovo
driver per ADODB:
adob_xmlrpc che si
connette al db via
webservices
DB
sybase
oracle
php
Apache
php
Apache
php
J2 EE
Richiesta: creazione di report PDF da web apps esistenti
 Proposta 1: utilizzare le librerie PHP per generare
'programmaticamente' i pdf
tempi lunghi, poca flessibilit
 Proposta 2: riscrivere le applicazioni per produrre XML
e quindi trasformarlo in PDF
tempi lunghi, buona flessibilit
 Proposta 3: implementare una stampante HTML to
PDF accessibile via webservice da qualunque
applicazione intranet
tempi brevi, flessibilit massima
Case study: pdf printer server
Case study: pdf printer server
PDF server ClientWeb server
Richiesta iniziale
Richiesta al ws: URL da convertire
Richiesta della pagina
Risposta al ws: URL del pdf
Risposta al client (link)
Richiesta del pdf
Stampa html su pdf
Verifica accesso
Case study: SMS server
 Integrazione di un sistema di messaggistica SMS
preesistente
 Espone interfacce web-service in SOAP ed XMLRPC
per invio di SMS (es: allarme su fermo sistemi) e
ricezione di messaggi per applicazioni diverse (es:
editing homepage del sito in situazioni di mancanza di
connettivit web, interrogazione della rubrica
telefonica)
 Evoluzione futura: servizi al pubblico?
Case study: SMS server
Modem GSM Applicazione
SMS
Apache,
PHP
processo
PHP
schedulato
Client app.
invio + ricez.
PULL
SOAP /
xmlrpc
Client app.
con ricezione
PUSH
classi
comuni
Case study: SMS server
+rubrica+giunta
SEA Directory
Nome: Gaetano Giunta
Tel: 3595 (lin)
E-mail: giunta.gaetano
@sea-aeroportimilano.it
 Esempi di interazione
+rubrica+tel 3595
SEA Directory
Nome: Gaetano Giunta
Tel: 3595 (lin)
E-mail: giunta.gaetano
@sea-aeroportimilano.it
info arrivi mxp
SEA Info Voli
Volo:IB 03636 Previsto:15:35
Volo:KL 01627 Previsto:15:35
Volo:AZ 07721 Previsto:15:35
Volo:RJ 00103 Previsto:15:15
www.sea-aeroportimilano.it
Case study: FOX
Applicazione utilizzata
dagli agenti rampa per
coordinare tutte le
operazioni sottobordo.
60 palmari,
un centinaio di
postazioni web
attive ad ogni
momento
Case study: FOX
 DB Oracle, PHP per il front-end, applicazioni C per
l'accesso via palmare (emulazione di terminale con
librerie custom Psion-Teklogix), per flussi dati verso altri
sistemi sia script PHP (verso sybase) che applicazioni
Java (verso mainframe  librerie tcAccess)
 App design del 2000: codice php ed html mixati
liberamente, accesso a db via libreria custom
 Centralizzazione della business logic: interamente
scritta in PLSQL all'interno del db
vantaggi: si pu嘆 riutilizzare lo stesso codice per i
diversi front-end; performances; scalabilit
Case study: FOX
Meccanismi adottati per l'alta disponibilit:
 Oracle, Apache in configurazione di cluster (2 nodi,
attivo/passivo)
 I processi di gestione dei palmari e dei flussi sono
gestiti dal cluster
 Duplicazione di tutto l'hardware coinvolto (firewall,
server radius, network controller) tranne gli AP
 Sessioni PHP memorizzate nel DB
 Stabilit della piattaforma: applicazione utilizzata anche
con un segmentation fault per pagina (causato da un
acceleratore php)
Case study: sito internet
sito bilingue (italiano e inglese)
160.000 pagine al giorno (oltre 1.700.000 hits)
servizi: voli di oggi, tracking voli, meteo, contattaci,
rassegna stampa, tracking bagagli smarriti, motore di
ricerca sui contenuti, etc...
Case study: sito internet
 App. design del 2004: separazione tra business logic e
presentation logic (Smarty); accesso a DB via libreria
'di mercato' (AdoDB), accesso tra DMZ e LAN via
web-services (xmlrpc)
 Altre librerie open source: PEAR_weather per i dati
meteo, phpmailer per il tracking
 Migrazione da piattaforma Microsoft (IIS, ASP,
SqlServer su windows 2000) a mista (IIS, PHP,
SqlServer su windows 2003)
 Next steps: migrazione a PHP 5, Oracle, Apache su
Linux (Red Hat ES 4)
Case study: sito internet
Performance tuning:
 gestione del CMS offline
 utilizzo di caching di Smarty
 Una singola pagina ad altissimo traffico: pre-
generazione della versione HTML tramite batch job
 Interfaccia ISAPI o fastCGI verso IIS
 Opcode caches: ce ne sono di free precompilate per
windows?
 ADODB: utilizzo di adodb.dll
Case study: corporate intranet
 Da cosa siamo partiti
 Strumento inadeguato
 Sistema obsoleto
 Scelta strumenti
 CMS Open Source
 Base dati Mysql
 Ez-Publish
 Modulo LDAP
Case study: corporate intranet
Studio del problema
 complessit organizzativa del contesto aeroportuale
 criticit del sistema di check-in
 gestione di documentazione in formato PDF/html
 garanzia supporto tecnico
Case study: corporate intranet
Stato dell'attuale implementazione
 Primo periodo di approfondimento eZ publish
 Progettati layout e alberatura dei contenuti
 Automatismo batch per laggiornamento delle
anagrafiche utenti fuori dominio
 Sistema di feedback per il customer care del gruppo
 Una gestione di dialogo tra reparti
 Pubblicazione aggiornamenti normative voli
Case study: corporate intranet
Implementazioni future
 ogni giorno emergono nuove richieste di
personalizzazione.
 fornire uno strumento che diventi la scrivania virtuale
di ogni dipendente del gruppo SEA
Ma funziona davvero cos狸 bene?
Alcune problematiche riscontrate:
 difficolt della compilazione sotto unix
 bachi che appaiono e scompaiono nelle varie release
 alcuni driver di database godono di supporto limitato
rispetto ad altri
 non disponibilit di alcune estensioni in ambiente
windows
 difficolt nel reperire programmatori esperti
Conclusioni
Domande ?
Dov'竪 finito il mio bagaglio?
...arrivederci e grazie

More Related Content

phpday 2006 - SEA case study

  • 1. SEA Aeroporti di Milano & PHP Case study Ing. Gaetano Giunta SEA (Direzione Sistemi Informativi di Gruppo) Elena Brambilla SIDI S.r.l. PHP Day 2006 Canale Enterprise Bari 20 maggio 2006
  • 2. Chi 竪 SEA? Diamo i numeri... Nel 2005: Oltre 29 milioni di passeggeri 321 mila movimenti Circa 6500 dipendenti Malpensa: secondo HUB in Europa per puntualit Primo hub in Europa per bagagli consegnati senza disguidi
  • 3. Ancora numeri... Sistemi Informativi: 115 persone (di cui 40 helpdesk) server: 80 a Linate, 100 a Malpensa (in 6 sale server) wan: 500 switch postazioni desktop: 2000 client, 900 postazioni di front-end wi-fi: 110 access points, 120 palmari, 50 veicolari sistemi operativi: DOS, Windows 95, 98, NT, 2000, 2003, DOS, AIX, HP-UX, Solaris, Linux... database: oracle 8 e 9, Sybase, SQLServer, MySQL
  • 4. PHP in SEA Primo deploy: nel 2001 su SCO Unix Oggi: su Solaris, Windows, Linux Utilizzato per creazione di custom web apps e come linguaggio di scripting all-purpose Utilizzo di applicazioni open-source di mercato per funzioni non business-critical (gestione biblioteca, etc...), successivamente integrate nei sistemi di scalo
  • 5. PHP ed i sistemi legacy: che colla! Siti basati su db sybase, oracle, mysql e sqlserver Autenticazione integrata con dominio windows 2000 via LDAP Webservices: pubblicazione e consumo di servizi XML-RPC e SOAP Windows: utilizzo trasparente di oggetti COM Interazione con server remoti via FTP, HTTP
  • 6. Case study: datamover ETL in a BOX Collega sistemi core di scalo da vari anni 2-phase commit per HA: messo in inittab Utilizza ADODB come data access layer File di configurazione = codice PHP!!! sybase oracle php exec procs.sp_get_dati begin sp_in_dati(to_date('&&1&&'), &&2&&); end; Per ogni riga esegui
  • 7. Case study: datamover evolution Problema: occorre un server su cui siano installati i driver dei 2 database da collegare Idea: dividere il processo in due, utilizzando web- services per comunicare Soluzione: un nuovo driver per ADODB: adob_xmlrpc che si connette al db via webservices DB sybase oracle php Apache php Apache php J2 EE
  • 8. Richiesta: creazione di report PDF da web apps esistenti Proposta 1: utilizzare le librerie PHP per generare 'programmaticamente' i pdf tempi lunghi, poca flessibilit Proposta 2: riscrivere le applicazioni per produrre XML e quindi trasformarlo in PDF tempi lunghi, buona flessibilit Proposta 3: implementare una stampante HTML to PDF accessibile via webservice da qualunque applicazione intranet tempi brevi, flessibilit massima Case study: pdf printer server
  • 9. Case study: pdf printer server PDF server ClientWeb server Richiesta iniziale Richiesta al ws: URL da convertire Richiesta della pagina Risposta al ws: URL del pdf Risposta al client (link) Richiesta del pdf Stampa html su pdf Verifica accesso
  • 10. Case study: SMS server Integrazione di un sistema di messaggistica SMS preesistente Espone interfacce web-service in SOAP ed XMLRPC per invio di SMS (es: allarme su fermo sistemi) e ricezione di messaggi per applicazioni diverse (es: editing homepage del sito in situazioni di mancanza di connettivit web, interrogazione della rubrica telefonica) Evoluzione futura: servizi al pubblico?
  • 11. Case study: SMS server Modem GSM Applicazione SMS Apache, PHP processo PHP schedulato Client app. invio + ricez. PULL SOAP / xmlrpc Client app. con ricezione PUSH classi comuni
  • 12. Case study: SMS server +rubrica+giunta SEA Directory Nome: Gaetano Giunta Tel: 3595 (lin) E-mail: giunta.gaetano @sea-aeroportimilano.it Esempi di interazione +rubrica+tel 3595 SEA Directory Nome: Gaetano Giunta Tel: 3595 (lin) E-mail: giunta.gaetano @sea-aeroportimilano.it info arrivi mxp SEA Info Voli Volo:IB 03636 Previsto:15:35 Volo:KL 01627 Previsto:15:35 Volo:AZ 07721 Previsto:15:35 Volo:RJ 00103 Previsto:15:15 www.sea-aeroportimilano.it
  • 13. Case study: FOX Applicazione utilizzata dagli agenti rampa per coordinare tutte le operazioni sottobordo. 60 palmari, un centinaio di postazioni web attive ad ogni momento
  • 14. Case study: FOX DB Oracle, PHP per il front-end, applicazioni C per l'accesso via palmare (emulazione di terminale con librerie custom Psion-Teklogix), per flussi dati verso altri sistemi sia script PHP (verso sybase) che applicazioni Java (verso mainframe librerie tcAccess) App design del 2000: codice php ed html mixati liberamente, accesso a db via libreria custom Centralizzazione della business logic: interamente scritta in PLSQL all'interno del db vantaggi: si pu嘆 riutilizzare lo stesso codice per i diversi front-end; performances; scalabilit
  • 15. Case study: FOX Meccanismi adottati per l'alta disponibilit: Oracle, Apache in configurazione di cluster (2 nodi, attivo/passivo) I processi di gestione dei palmari e dei flussi sono gestiti dal cluster Duplicazione di tutto l'hardware coinvolto (firewall, server radius, network controller) tranne gli AP Sessioni PHP memorizzate nel DB Stabilit della piattaforma: applicazione utilizzata anche con un segmentation fault per pagina (causato da un acceleratore php)
  • 16. Case study: sito internet sito bilingue (italiano e inglese) 160.000 pagine al giorno (oltre 1.700.000 hits) servizi: voli di oggi, tracking voli, meteo, contattaci, rassegna stampa, tracking bagagli smarriti, motore di ricerca sui contenuti, etc...
  • 17. Case study: sito internet App. design del 2004: separazione tra business logic e presentation logic (Smarty); accesso a DB via libreria 'di mercato' (AdoDB), accesso tra DMZ e LAN via web-services (xmlrpc) Altre librerie open source: PEAR_weather per i dati meteo, phpmailer per il tracking Migrazione da piattaforma Microsoft (IIS, ASP, SqlServer su windows 2000) a mista (IIS, PHP, SqlServer su windows 2003) Next steps: migrazione a PHP 5, Oracle, Apache su Linux (Red Hat ES 4)
  • 18. Case study: sito internet Performance tuning: gestione del CMS offline utilizzo di caching di Smarty Una singola pagina ad altissimo traffico: pre- generazione della versione HTML tramite batch job Interfaccia ISAPI o fastCGI verso IIS Opcode caches: ce ne sono di free precompilate per windows? ADODB: utilizzo di adodb.dll
  • 19. Case study: corporate intranet Da cosa siamo partiti Strumento inadeguato Sistema obsoleto Scelta strumenti CMS Open Source Base dati Mysql Ez-Publish Modulo LDAP
  • 20. Case study: corporate intranet Studio del problema complessit organizzativa del contesto aeroportuale criticit del sistema di check-in gestione di documentazione in formato PDF/html garanzia supporto tecnico
  • 21. Case study: corporate intranet Stato dell'attuale implementazione Primo periodo di approfondimento eZ publish Progettati layout e alberatura dei contenuti Automatismo batch per laggiornamento delle anagrafiche utenti fuori dominio Sistema di feedback per il customer care del gruppo Una gestione di dialogo tra reparti Pubblicazione aggiornamenti normative voli
  • 22. Case study: corporate intranet Implementazioni future ogni giorno emergono nuove richieste di personalizzazione. fornire uno strumento che diventi la scrivania virtuale di ogni dipendente del gruppo SEA
  • 23. Ma funziona davvero cos狸 bene? Alcune problematiche riscontrate: difficolt della compilazione sotto unix bachi che appaiono e scompaiono nelle varie release alcuni driver di database godono di supporto limitato rispetto ad altri non disponibilit di alcune estensioni in ambiente windows difficolt nel reperire programmatori esperti
  • 24. Conclusioni Domande ? Dov'竪 finito il mio bagaglio? ...arrivederci e grazie