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 l’aggiornamento 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