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