Ovunque io abbia lavorato mi è capitato di dover sviluppare un’applicazione per gestire determinate situazioni. Progetti, gestione supporto tecnico, IT governance, e via discorrendo. Ultimamente ho molto a cuore la parte di gestione del supporto tecnico che cerco di plasmare secondo quella che è la realtà corporativa in cui mi trovo (vedi Visioni IT: continuiamo ad integrare il Help Desk). Uno degli argomenti di cui invece non ho mai avuto modo di parlare sono sicuramente gli aspetti sistemistici.
In passato ho lavorato molto con Apache e RedHat Linux e continuo a farlo con una discreta soddisfazione tuttavia la mia scelta nell’ambito aziendale è caduta su Microsoft Windows 2003 Server come piattaforma server per l’applicazione, pur mantenendo una componente Open per la sua implementazione (PHP, MySQL, OpenLDAP, ecc). Le motivazioni sono svariate, ma in linea di massima devo ammettere che Windows 2003 Server è uno dei prodotti che mi piacciono maggiormente. Secondo me è uno dei prodotti migliori rilasciati da Microsoft negli ultimi anni (credo che se avessi dovuto scegliere tra RedHat Linux e Windows 2000 Server ci avrei pensato con molta più attenzione a cosa scegliere). Avendo sempre un consistente numero di utenti da gestire (> 50) e un dominio Active Directory in cui sono gestiti tutti gli utenti, mettersi a duplicare un database utenti è più o meno equivalente ad un suicidio amministrativo (da un punto di vista di gestione sistemi naturalmente). Per questa ragione (praticamente ovvia), IIS6 con autenticazione Integrata (o base) è la scelta naturale per risolvere il mio problema. L’obiettivo è tipicamente quello di dare agli utenti il minor numero possibile di cose da ricordare e semplificare il più possibile la loro vita (autenticazione trasparente di IE). Per quanto riguarda la sicurezza, il supporto HTTPS di IIS6 risponde totalmente ai miei requisiti. In altri termini, con un costo in licensing relativamente ridotto ho la possibilità di mettere in piedi un frontend di produzione (anche virtuale) con un elevato livello funzionale e in grado di darmi le funzionalità di Alta Affidabilità mediante il servizio Load Balancing (disponibile anche su Windows 2003 Web Edition).
Il backend applicativo (normalmente installato sulla stessa macchina) invece basa la sua struttura su un database MySQL 5 e come linguaggio di programmazione l’intramontabile PHP. Sono due applicativi che conosco ormai molto bene e staccarmene a favore di piattaforme superiori (come .NET ed MSSQL) non mi intriga un gran che (sebbene io usi anche le altre due piattaforme, anche in un contesto web – vedi più avanti). MySQL 5 è un database robusto, veloce e capace di gestire volumi di informazioni consistenti senza nessun problema. Lo uso dalla lontana 3.23, rigorosamente con supporto relazionale. Oggi penso di saperlo usare con una grande capacità, sfruttando tutti i benefici che mi può portare, dal supporto per le transazioni alle stored procedure, fino ad arrivare alla gestione dei trigger (con l’avvento della versione 5). Anche PHP è una scelta derivata dagli anni di esperienza: è veloce, ha un set di funzioni molto vasto e un framework che mi sono creato nel corso degli anni facilita molto le cose. La conoscenza del linguaggio è stata sicuramente la scelta determinante.
Ora torniamo agli aspetti sistemistici. Ho accennato al problema dell’autenticazione utenti e indubbiamente questa è una tra le ragioni più importanti per cui ho optato per Windows come web server. Un’altra ragione è senza dubbio l’archiviazione documentale e il sistema di indicizzazione integrato in Windows. E come non apprezzare l’accesso alle risorse di sistema di Windows se non attraverso le librerie di PHP e gli oggetti COM? Questi ultimi (gli oggetti COM appunto) richiamati da PHP aprono frontiere che su Linux non sono attraversabili. Pensiamo solo alla generazione dei report. Molti subito diranno “ma come, possiamo generarli in PDF!”. E il problema si risolve. Il problema è che questa è una risposta da tecnico/programmatore e la mia opinione a riguardo è che il PDF non è un formato pratico. È un formato in sola lettura, poco gestibile e soprattutto difficilmente riutilizzabile. Ricordiamoci che stiamo parlando di applicazioni corporative, non siti Internet (nel qual caso i PDF sono senz’altro un’ottima soluzione).
Installando Microsoft Office sul server è possibile richiamare documenti Office veri e propri, generati in modalità nativa che di certo non causeranno problemi di compatibilità con i pacchetti Office diffusi in azienda. Generare quindi report in formato Excel o Word diventa un gioco da ragazzi. Allo stesso modo, le stampe dei report non sono più da gestire via pagine HTML bensì in formati più “apprezzati” dalle stampanti: inviare i documenti in stampa direttamente alle code di stampa sulla rete diventa altresì semplice. Un altro vantaggio di questo sistema integrato è quello di poter delegare ad un utente non programmatore l’autonomia per generare nuovi formati elettronici. Supponiamo di dover stampare un report su carta intestata o con una formattazione particolare. L’utente che genera il formato del report deve solo costruire lo scheletro del documento, formattarlo in modo che l’applicativo sostituisca determinate zone (o campi) con i valori generati dall’applicazione (ovviamente un breve corso di formazione è indispensabile). Nessun intervento sul codice dell’applicativo è necessaria, management e dipartimento IT non hanno necessità di cooperare per un’operazione tipica della prima divisione.
Vogliamo andare avanti? Questa è più una delle mie “Visioni” di come le cose potrebbero andare, ma qualche tempo fa ci avevo provato a giocare. Prendiamo le librerie di oggetti COM di Skype e facciamo in modo che il nostro applicativo possa anche parlare con gli operatori, sfondando la barriera delle email e sfruttando in modo senza dubbio proficuo anche i sistemi di messaggistica immediata.
Non dimentichiamo .NET e le sue funzionalità di sistema che possono essere molto comode. Prendiamo per esempio un banale applicativo sviluppato in ambiente di prova per la mia Intranet. L’esigenza era quella di riuscire a creare un ambiente di spool in cui una fotocopiatrice possa “parcheggiare” un file PDF acquisito. La fotocopiatrice carica il file sul server usando un accesso SMB diretto. Una volta che il file viene “sganciato” sul disco del server (ergo, vengono tolti i lock in lettura) il server deve modificare il nome del file e catalogarlo sul filesystem in una certa maniera. Qui .NET torna utilissimo, soprattutto se ciò che mettiamo in piedi è un semplice servizio di sistema con poche righe di C# che intercetta il file appena creato (con FilesystemWatcher) e lo sposta in una posizione altrimenti non accessibile agli utenti.
Sicuramente la gamma di prodotti disponibili per gli ambienti Microsoft Windows sono più ampi rispetto ai prodotti Open Source che, spesso e volentieri, richiedono diverse ore di studio, adattamento tecnico e inevitabilmente anche grafico prima di essere implementate negli ambienti di produzione. Il supporto tecnico, poi, è una cosa che ci tocca sperare di avere in tempi brevi e comunque sempre da supporto comunitario.
Insomma, secondo il mio personale punto di vista, integrare soluzioni vendor specific ha i suoi vantaggi (tempi di risposta, implementazione, supporto tecnico, documentazione) e svantaggi (costi) rispetto al mondo delle soluzioni Open Source, tuttavia una scelta bilanciata delle due dimensioni per trarre i vantaggi di entrambe le fazioni può portare vantaggi tangibili ed efficienti all’ambiente corporativo in cui ci troviamo a lavorare tutti i giorni, dando ottimi strumenti di lavoro all’utenza che – senza di noi – non avrebbe modo di lavorare come si deve. Molti mondi diversi possono finalmente lavorare insieme senza dover impazzire a trovare software che svolga ogni singola azione da fornitori esterni, dandoci la possibilità di creare un unico sistema integrato e cooperante.
Filed by En3pY at June 25th, 2007 under
opinion |
No comments