Definizione di job scheduling

Transcript

Definizione di job scheduling
Solutions for Automating
IT Job Scheduling
Soluzioni per l'automazione
del job scheduling
ORSYP Italia
Sommario
Capitolo 1: Perché dotarsi di una soluzione di job scheduling - Dieci domande da porsi
Cosa comporta avere infrastrutture IT eterogenee
Criticità di un sistema complicato
Definizione di job scheduling
Dieci domande da porsi
Capitolo 2: Sette casi d'uso di job scheduling
Sette storie di job scheduling
Sette storie, sette esempi di valore aggiunto del job scheduling
Capitolo 3: Analizziamo nel dettaglio un flusso di processi IT
Un flusso di lavoro è un'attività IT
Flussi di job e pianificazione dei processi
Librerie di job e valore aggiunto dei trigger
Capitolo 4: Enterprise job scheduling: una lista di requisiti da controllare
Creazione dei requisiti specifici per il job scheduling
Vincere nel mercato globale: il job scheduling alla base del successo
© ORSYP 2012 ▪
2 / 40
Capitolo 1: Perché dotarsi di una
soluzione di job scheduling - Dieci
domande da porsi
Ricordo ancora il giorno in cui il mio capo mi chiamò nel suo ufficio e mi convinse ad
intraprendere un nuovo progetto, il progetto che cambia ogni cosa. Disse: "Tu sei il mago
degli script, saprai farlo funzionare ". Accettai la sfida e il resto è storia.
La maggior parte dei grandi progetti nel settore IT inizia in questo modo, per cui forse
conoscete già storie simili. Si tratta di progetti che sembrano validi sulla carta, ma poi
diventano difficili e complessi quando si cerca di realizzarli, a causa della presenza di
diverse applicazioni e piattaforme che richiedono tempo e risorse per integrarsi tra loro.
Questa storia però non riguarda solo ciò che mi fu affidato quel giorno. Parla anche di
tutte le piccole automazioni che vanno a comporre nel corso del tempo ogni infrastruttura
informatica, come gli script per Windows, Oracle, Active Directory (AD), SQL, processi di
sistema e così via. Sono automazioni in grado di risolvere esigenze immediate di
business, ma che senza una gestione centralizzata rappresentano anche un centro di
costo; un costo che aumenta quando la tecnologia diventa ormai obsoleta o gli
sviluppatori lasciano l'azienda e si trasferiscono altrove.
Allora ero stato riconosciuto come il “mago degli script”. Se aveste avuto bisogno di
elaborare velocemente i dati, o di trasferire i file da un sistema all'altro, sarei stato la
persona giusta da contattare. Avevo una perfetta padronanza del linguaggio di
programmazione più importante del momento, e di tanti altri componenti aggiuntivi.
Questo mi rendeva appunto il “mago” cui si era rivolto il mio capo. Avevo acquisito
esperienza e abilità nel corso degli anni, ampliando la mia sfera di competenza fino ad
includere tecnologie specifiche per piattaforme e applicazioni come WMI, ADSI, SQL, poi
Oracle, Linux e IBM AIX.
Per realizzare il progetto che mi era stato chiesto, ho messo in campo tutta la
conoscenza del mestiere di cui disponevo. Nel corso degli anni avevo automatizzato gran
parte delle mie attività. Certo, non sempre ogni cosa funzionava alla perfezione. A volte
le automazioni venivano accidentalmente cancellate durante l'aggiornamento del
datacenter, o non erano più necessarie e andavano riconfigurate.
In altre parole, il meccanismo dell'automazione poteva essere migliorato. Infine, è venuto
il giorno in cui ho cambiato lavoro, e quello è stato il problema maggiore per il sistema di
automazione. Infatti, avevo sviluppato diversi script distribuiti in tutta l'azienda, senza
alcun sistema centrale che li gestisse in modo unitario. Potevano perfino verificarsi
criticità nei processi, senza che nessuno se ne accorgesse e potesse intervenire...
© ORSYP 2012 ▪
3 / 40
Mancava qualcosa, questo era certo, e precisamente ciò che chiamiamo “job
scheduling”, o meglio l'automazione del job scheduling. Lo scopo di questo documento è
spiegare il significato della schedulazione delle elaborazioni e restituire il valore che essa
può offrire in un contesto aziendale. Nelle pagine che seguono intendo illustrare più in
dettaglio il grande progetto che il mio capo decise di affidarmi quel giorno di cui ho
parlato all'inizio, fornendo alcuni esempi che chiariscono ulteriormente perché il “job
scheduling” e l'automazione sono davvero centrali per il business di un'azienda.
Cosa comporta avere infrastrutture IT eterogenee
Questo documento non esisterebbe se ogni tecnologia IT comunicasse perfettamente
con le altre, se il trasferimento dei dati, il controllo degli eventi e i comandi su piattaforme
e applicazioni fossero perfettamente integrati tra loro o con sistemi diversi.
La schedulazione delle elaborazioni aziendali (o “job scheduling”) è un'esigenza comune
a tutte le imprese, trasversale ai settori di business e alle dimensioni delle imprese. I “job”
del job scheduling sono gli script di automazione. Alcuni funzionano con una sola
applicazione, altri invece integrano servizi su più sistemi per creare un workload “misto”,
in grado di soddisfare quelle che normalmente sono le esigenze aziendali immediate in
un contesto cross-platform e cross-application.
Tra i casi più comuni di job vi sono:
 Report sulle attività di utilizzo della posta elettronica, che devono essere resi
disponibili a chi si occupa di sicurezza
 File trasferiti dai client in ingresso, per esempio ad un server FTP Linux, e che
devono essere inseriti immediatamente in un database SQL
 Applicazioni di posta elettronica e database per semplificare l'utilizzo di sistemi
specifici
 Nuovi record, ad esempio in un database Microsoft SQL o Oracle che innescano
azioni in uno o più sistemi middleware
Queste elaborazioni potrebbero essere più semplici e sicure se vi fosse un solo sistema o
una sola applicazione di riferimento, in grado di gestire le diverse fasi di monitoraggio e
verifica dei job.
La complessità degli ambienti IT è dovuta anche al proliferare di differenti tecnologie che
vi risiedono. Tali differenze rappresentano un problema all'interno dei datacenter di oggi.
La vostra infrastruttura IT ha sicuramente sistemi Windows, ma forse anche Oracle, HPUX, Solaris e altri.
È probabile che sia necessario trasferire documenti XML, file DOCX, XLSX e fogli di
calcolo su protocolli multipli come SMB, FTP e SSH. Anche i vostri sistemi di controllo e
monitoraggio sono probabilmente disponibili su diverse tecnologie: SNMP per switch e
router, WMI per i sistemi Windows, e tutti i vari widget UNIX e Linux per tenere sotto
controllo le attività.
© ORSYP 2012 ▪
4 / 40
Si possono immaginare alcune criticità che potrebbero sorgere in seguito alle differenze
tra applicazioni e piattaforme negli ambienti ibridi di oggi:
 Ogni sistema operativo (OS) possiede un linguaggio diverso dagli altri, e lo stesso
vale per le applicazioni
 Ciascuno di questi elementi utilizza il proprio modello di sicurezza, che non si
integra con quello degli altri
 Il trasferimento dei dati o le pianificazioni all'interno e tra i vari ambienti a volte
risulta difficile, se non impossibile con gli strumenti nativi
 Soprattutto, con gli strumenti nativi non è possibile gestire in modo centralizzato
tutti i job
La funzione principale di una soluzione di job scheduling è risolvere questi cinque
problemi. Un unico pannello di controllo centrale permette di avere visibilità su tutte le
elaborazioni del sistema, creando una singola piattaforma per l'automazione. Questo
evita che singoli script per eseguire i job vengano distribuiti su sistemi differenti.
Utilizzando una soluzione centralizzata è possibile controllare e armonizzare, ad
esempio, le elaborazioni su database con job di sistema UNIX/Linux e job FTP.
Le esecuzioni sono avviate dallo stesso punto, e tutti i sistemi sono gestiti e monitorati da
un’unica postazione.
Job scheduling per centralizzare job su qualsiasi piattaforma e applicazione
Una soluzione di automazione di job scheduling deve essere eccezionalmente completa.
Non basta che supporti la gestione, il monitoraggio e il flusso delle elaborazioni. Deve
anche implementare le integrazioni con i diversi sistemi operativi, le piattaforme e le
tecnologie incorporate dai processi aziendali. Per questo, trovare la giusta soluzione è
importante e al tempo stesso impegnativo.
Si può considerare questo documento come una “fabbrica di idee per l'automazione”. Nel
prosieguo di questo lavoro verranno proposte alcune domande di auto-valutazione, che vi
aiuteranno a capire meglio le esigenze a cui una soluzione di job scheduling risponde.
Vedremo una serie di casi reali di utilizzo e potremo analizzare il meccanismo di un job
informatico, in modo da comprendere appieno la potenza di una soluzione centralizzata.
Questo documento si conclude con una lista di requisiti da prendere in considerazione
nella scelta del software adatto a soddisfare le necessità aziendali.
Cercherò di essere la vostra guida, e durante il viaggio che stiamo per iniziare
condividerò alcune delle mie storie per dimostrare con esperienze reali la validità di
quello che sosterrò.
Nota:
© ORSYP 2012 ▪
5 / 40
Nel presente documento utilizzerò il termine “job scheduling”. Un altro termine
comunemente impiegato per indicare la pianificazione dei processi è “automazione del
carico di job”. Ai fini di questo lavoro, si possono intendere i due come equivalenti.
Criticità di un sistema complicato
Torniamo ora alla mia storia di tanto tempo fa. Ogni applicazione e ogni sistema
operativo sono in grado di eseguire le rispettive funzioni in diversi modi; ad esempio, un
sistema operativo può includere uno o più linguaggi per scrivere e leggere i dati, così
come ogni database moderno è dotato di funzioni di automazione e pianificazione per
l'inserimento o la selezione dei dati. Anche le tecnologie middleware e varie applicazioni
sono dotate di API proprietarie, che possono essere utilizzate come interfaccia all'esterno
dell'applicazione.
Tuttavia, queste funzionalità, insieme alle automazioni già presenti nei prodotti,
raramente sono in grado di gestire le interazioni al di fuori dei prodotti stessi. Avete mai
provato ad utilizzare un documento XML per indicare ad un server SQL che deve
aggiornare una riga di database Oracle, in modo che un'applicazione SAP possa
eseguire il controllo di un processo su un server AIX? Tutto questo assomiglia alla
situazione in cui mi sono trovato all'inizio del progetto che mi aveva affidato il mio capo.
Il motivo per il quale quel progetto era necessario, in fondo non conta molto. L'importante
è invece sapere che il nostro sistema era costituito da una miriade di elementi disparati,
con diverse applicazioni in esecuzione all'interno del sistema operativo, e con database
anch'essi diversi, alimentati da dati provenienti sia dall'interno che dall'esterno della
compagnia. E tutto questo era solo l'inizio...
Per cominciare, ho cercato lo schema dei componenti del sistema. Ad un livello alto, esso
era stato costruito per aggregare dati esterni all'azienda con dati provenienti dall'interno.
Il nostro problema era che i dati dovevano essere trasferiti in molti luoghi diversi...
Com'era gestito il flusso di dati nel sistema dell'azienda dove lavoravo
Il flusso di dati nel sistema della mia azienda veniva gestito tramite FTP da una sorgente
esterna. Questi dati e tutti i metadati relativi dovevano essere depositati in un unico
database centralizzato SQL. Alcuni erano disponibili in base ai profili di utenza, mentre
non si poteva avere accesso ad altri. Le informazioni contenute all'interno del flusso di
dati FTP erano utili ad identificare chi poteva avere accesso a cosa.
Gli utenti erano in grado di interagire con i dati tramite un server Microsoft IIS che
eseguiva un'applicazione Web realizzata internamente. Tale applicazione utilizzava il
formato XML per trasferire dati da e verso il database SQL. A volte, i dati venivano
elaborati da un server UNIX, che effettuava il consolidamento con le informazioni
provenienti da altre sorgenti o da aree aziendali diverse. Un server di posta garantiva
© ORSYP 2012 ▪
6 / 40
l'inoltro di notifiche agli utenti sugli aggiornamenti, lo stato dei set di nuovi dati o altri
eventi.
Vi erano quindi di numerose correlazioni, con le relative integrazioni che andavano
gestite in modo adeguato per garantire il funzionamento di tutto il sistema. I processi
dovevano essere avviati in sequenza, armonizzando per esempio le elaborazioni sui
server e sui database. In una situazione del genere, risultava complesso e impegnativo
anche solo pianificare le integrazioni di ogni correlazione di job.
Vi sembra per caso di vedere qualcosa di simile anche nel vostro datacenter?
Potrebbero esserci situazioni analoghe se si elaborano o si trasferiscono grandi volumi di
dati all'interno dell'azienda. È bene quindi valutare i seguenti quattro punti critici:




Sistemi interconnessi come questo esistono ovunque, in qualsiasi compagnia.
Altri hanno quindi già avuto a che fare con gli stessi problemi d'integrazione in
diversi contesti, ed è consigliabile trarre vantaggio dalla loro esperienza.
Costruire e gestire un sistema simile non è necessariamente un'attività per soli
sviluppatori. Io stesso non lo sono. Il mio ruolo è quello di amministratore di
sistema, cui è capitato di essere considerato “Il mago del computer”, e perciò il
candidato ideale cui affidare questo progetto. Gli amministratori devono costruire
sistemi composti da molte parti, in grado di “parlarsi” tra loro. Programmare le
attività è solo il primo passo di questo cammino.
È possibile realizzare un sistema completo e funzionale utilizzando gli strumenti di
automazione specifici di ogni singolo componente, ma questa non è una buona
idea. Le mie elaborazioni producevano VBScript e cron job, file SSIS-SQL e ciò
non è mai stato utile ai fini della gestione complessiva; al contrario, ha solo creato
confusione e problemi. La programmazione delle attività è efficace a lungo
termine solo se centralizzata, e la manutenzione delle automazioni è più semplice
e sicura se le attività sono ridotte di numero.
Azioni semplici all'interno di sistemi semplici possono funzionare bene con
null'altro che ora e data di pianificazione. Ma sistemi più complessi o che
presentano più dipendenze hanno bisogno di mezzi potenti per determinare
quando fare qualcosa. Queste decisioni possono essere prese in base alla
ricezione di dati o a modifiche nel database, alla lettura di file log o ad un altro
evento che può verificarsi nel sistema. Una buona soluzione di job scheduling
offrirà diverse condizioni personalizzabili per definire quando un'azione dev'essere
eseguita.
L'insieme di questi quattro elementi mi suggerì di guardare a soluzioni per la
pianificazione delle attività attraverso tutte le piattaforme e tutte le applicazioni. È stato
allora che ho iniziato a cercare soluzioni di pianificazione dei processi IT.
© ORSYP 2012 ▪
7 / 40
Definizione di job scheduling
Facciamo ora un passo indietro, e riflettiamo sul significato di “job scheduling”. Ho
cercato di spiegare che un “job” è una sorta di automazione, che si verifica all'interno di
un'infrastruttura IT. Una definizione più tecnica è che esso rappresenta l'azione da
compiere: potrebbe essere l'esecuzione di un file batch o di uno script, di un comando
“shell”, di un processo su un database, o l'elaborazione di una serie di dati. In sostanza,
tutto ciò che produce un cambiamento in un sistema è collegato a un'entità che
chiameremo “job”.
Nell'utilizzare un approccio informatico orientato agli oggetti, è opportuno consolidare le
singole azioni in job separati. Questo approccio singola-azione-per-job garantisce che i
processi siano riutilizzabili altrove e per altri scopi. In sostanza, che sia possibile creare
un processo chiamato ad esempio "Connessione al database Oracle", ed utilizzare quel
job ogni volta che si ha bisogno di fare una connessione al database Oracle.
Se ogni job compie una semplice azione, è possibile unire più job per completare un
processo. Chiameremo questo processo “IT plan”, ovvero una pianificazione che
rappresenta una serie di job correlati, i quali possono essere eseguiti per raggiungere
l'obiettivo voluto: l'effettuazione di modifiche strutturali all'interno di un sistema.
Creare dei buoni job è quasi un'arte, perché essi non devono necessariamente contenere
informazioni specifiche memorizzate all'interno dello script, come il nome del server o la
cartella a cui si fa riferimento. Un approccio migliore è quello di utilizzare una variabile.
Gli sviluppatori utilizzano la parametrizzazione per generalizzare gli oggetti contenuti nei
job, e questi parametri vengono successivamente applicati in fase di esecuzione.
Scegliere i parametri giusti rende possibile collegare diversi job generici. Nel momento in
cui viene eseguito l'“IT plan” frutto di tale collegamento, vengono inoltrate ai job le
informazioni sulle variabili di cui hanno bisogno, ad esempio per la connessione al
database, al fine di estrarre da esso i dati corretti e trasferire altrove i file in formato FTP.
Riutilizzazione e pianificazione dei job
Tramite la parametrizzazione dinamica della pianificazione, si rendono riusabili tutti i
processi. Ad esempio: occorre cambiare il database a cui connettersi, o estrarre un
gruppo di dati diverso, o ancora inviare questi dati ad un altro server FTP? È possibile
fare tutto ciò semplicemente modificando le informazioni contenute nelle variabili. Questo
è quanto si definisce riusabilità.
Si potrebbe parlare molto più a lungo di job e pianificazioni. Nel Capitolo 3, cercheremo di
capire meglio le varie caratteristiche che può avere un job, e approfondiremo la
conoscenza degli altri oggetti che vengono impiegati in una tipica soluzione di “job
scheduling”.
© ORSYP 2012 ▪
8 / 40
Prima di proseguire, vi è però un aspetto che merita maggiore attenzione: quello della
schedulazione. Essa definisce quando un job deve essere eseguito. La schedulazione
dei sistemi richiede una certa flessibilità. Non può essere legata strettamente ad un
tempo determinato in cui avviare l'elaborazione. Piuttosto, i job sono legati ad eventi o
cambiamenti di stato che si verificano all'interno dell’infrastruttura informatica.
Supponiamo di dover trasferire dati da SQL Server ad un server UNIX. Potrebbero
essere definite tre diverse schedulazioni dell'IT plan che abbiamo elaborato per realizzare
il processo:
 Eseguire il trasferimento alle 3:00 PM
 Eseguire il trasferimento quando arrivano nuovi dati
 Eseguire il trasferimento quando l’utilizzo del processore è inferiore al 30%
Uno qualsiasi di questi tre tipi di schedulazione può essere adeguato, dipende dalle
esigenze. Il primo soddisferebbe le richieste di una “raccolta dati giornaliera”. In questo
caso, la schedulazione con data/ora sarebbe adatta allo scopo e molto semplice.
Nel secondo caso, il processo si attiva solo quando vengono ricevuti nuovi dati. Questa
soluzione è interessante quando si vogliono mantenere i database sincronizzati tra loro,
in particolare se si considera la difficoltà di ottenere un risultato simile nel caso venissero
utilizzati unicamente il SQL nativo e gli strumenti del sistema UNIX.
La terza soluzione è ingegnosa perché potrebbe venire impiegata sia da sola, sia in
combinazione con il secondo caso appena visto. Le elaborazioni si attivano solo se il
server non è molto utilizzato. Combinato con la seconda modalità, ciò permette di
mantenere la sincronizzazione tra i componenti del sistema senza però sovraccaricare il
server. Una buona soluzione di job scheduling include una vasta gamma di condizioni
applicabili alle pianificazioni dei job, in modo che le elaborazioni vengano avviate quando
e come previsto, in base alle necessità aziendali.
Dieci domande da porsi
Avremo nuovamente occasione di immergerci nel funzionamento dei componenti di un
flusso di job nel capitolo 3.
Ma prima di poter veramente apprezzare la potenza di questo approccio modulare, forse
è il caso di rispondere ad alcune domande che vi starete probabilmente ponendo. E se
non lo state facendo, lasciate che io stesso vi aiuti con un elenco di dieci quesiti che
ognuno dovrebbe porsi sulla propria infrastruttura IT.
I. Quanto tempo
manualmente?
© ORSYP 2012 ▪
avete
perso
per
completare
i
processi
9 / 40
Non molti anni fa, tra i miei compiti vi era l'aggiornamento di una serie di server. Questa
attività era mensile e obbligatoria, e richiedeva di essere svolta in modo sempre più
rapido. Ogni aggiornamento andava eseguito in una finestra temporale molto breve. Il
problema era che questi aggiornamenti richiedevano un riavvio del server per diventare
effettivi.
All'epoca la nostra finestra di riavvio era configurata nelle prime ore del mattino.
Effettuare un giro di aggiornamenti una volta al mese comportava alcuni disagi. Per
questo avevo creato uno script di automazione che includesse l'installazione degli
aggiornamenti. La soluzione prevedeva che essi fossero implementati a partire dalla data
valida successiva. Nel caso si fossero verificati problemi, avrei ricevuto notifiche tramite
messaggi sul cellulare.
In tal modo, gli aggiornamenti erano diventati più semplici da gestire. L'unica cosa a cui
dovevo stare attento era di avere sempre il cellulare a portata di mano per essere
informato su eventuali criticità. A volta capitava che qualcosa andasse storto, ma spesso
era risolvibile con un sessione di controllo remoto. Gli aggiornamenti eseguiti con
successo mi permettevano di non perdere tempo - né sonno durante la notte.
A prescindere dal mio caso specifico, ciò che conta è il risparmio di tempo e denaro. I
computer sono stati progettati per essere macchine automatiche, e ogni attività manuale
andrebbe essa stessa ottimizzata attraverso l'automazione. Ci si può permettere il lusso
di errori umani nelle attività critiche di un'azienda? Se la risposta è negativa, allora la
soluzione può davvero risiedere nella creazione di flussi di job flessibili e riutilizzabili,
attraverso un sistema di job scheduling adatto alle esigenze specifiche di un'impresa.
II. Qual è il costo degli errori che si commettono durante un
processo manuale?
Questa domanda introduce alle principali categorie di rischio presenti in qualsiasi sistema
manuale.
La prima categoria è quella delle esecuzioni inappropriate. Ogni compito che richieda un
intervento manuale implica il rischio che potrebbe venire eseguito in un momento
inopportuno. O peggio, che tale compito possa essere ri-parametrizzato inviando i dati
dove non devono essere inviati, o eseguito in modo improprio. Simili errori comportano
un costo.
Ricordo ad esempio una situazione in cui era stato creato uno script che si applicava ad
una serie di dati all'interno di un server specifico al momento dell'esecuzione. Lo script
aveva come parametro un elenco di server a cui inviare i dati. Un giorno, un
amministratore non molto esperto eseguì accidentalmente lo script con il carattere jolly "*"
al posto di un elenco specifico di server. Come risultato, i dati furono distribuiti a tutti i
server dell'azienda. Quella singola operazione ha creato un danno economico alla
società, comportando alcuni costi per cancellare i dati inviati.
© ORSYP 2012 ▪
10 / 40
Oltre alle esecuzioni inappropriate, tra gli altri rischi che possono essere indirizzati da una
soluzione di job scheduling vi sono ad esempio dimenticanze ed errori umani di vario
tipo. Ma grazie a questa soluzione, i job ed i flussi di elaborazione vengono eseguiti
correttamente entro i confini del sistema e del suo perimetro di sicurezza, garantendo il
controllo sulle operazioni rischiose, per esempio rendendo impossibile l'esecuzione a
determinati profili di utenza.
Centralizzare la sicurezza delle esecuzioni dei job assicura la protezione dell'ambiente
elaborativo contro queste categorie di errori manuali.
III. In che modo è possibile visualizzare le attività di un server?
Probabilmente avrete già uno strumento di monitoraggio dei server, così come un
sistema di controllo dei componenti di rete. Ma nel vostro datacenter esiste anche una
vista centralizzata per il controllo dei processi? Un errore legato ai job può causare
interruzioni o problemi di servizio, analogamente ad un guasto della rete o dei server. Se i
vostri sistemi aziendali utilizzano programmi di pianificazione attraverso più prodotti e
piattaforme, non state centralizzando tutte le attività in un'unica schermata.
Centralizzare è possibile, e diventa semplice e funzionale se viene fatto con gli strumenti
giusti. Ogni attività in qualunque sistema e applicazione può essere centralizzata in un
unico schermo. In questo modo si può verificare lo stato di ogni job gestendo tutto da un
unico punto.
IV. Come si può migliorare la comunicazione tra i server?
I moderni datacenter sono già dotati di strumenti di pianificazione, e molti tool aziendali
possiedono sistemi di scheduling delle proprie attività. Il problema è che ognuno di questi
strumenti e sistemi utilizza linguaggi diversi, per cui in pratica è molto difficile che
possano efficacemente comunicare e scambiarsi dati tra loro. SQL, per esempio, è
dotato di una vasta gamma di strumenti per modificare i dati del proprio sistema e di SQL
Server, ma questo basta per l'inoltro di dati ad un server UNIX?
Spesso, gli strumenti nativi non sono sufficienti e c'è bisogno di una soluzione diversa per
ottenere le performance desiderate. Questa soluzione può essere sia un singolo "script di
automazione" - come gli script di cui abbiamo parlato all'inizio di questo capitolo - oppure
una pianificazione olistica, globale dei job. Nel capitolo 4 vedremo più da vicino le
funzionalità che dovrebbe offrire la soluzione migliore per ogni esigenza aziendale.
V. È possibile gestire meglio i tempi di inattività del sistema?
Piattaforme e applicazioni di norma utilizzano specifici strumenti di pianificazione, cosa
che tuttavia non le mette in grado di eseguire elaborazioni sulla base di azioni o
© ORSYP 2012 ▪
11 / 40
cambiamenti di stato. In particolare, la verifica del tempo impiegato per effettuare le
elaborazioni è un elemento difficile da misurare per tutte le piattaforme.
Flussi di dati che non vengono processati come dovrebbero, o che risultano difficili da
trasferire all'interno di un sistema, possono causare criticità all'intera pianificazione
aziendale. Quando i processi non vengono completati nel modo corretto, allora si
producono effetti a catena sulle attività a valle: questi effetti possono includere tempi di
attesa nelle elaborazioni o altre conseguenze nel sistema della pianificazione.
La durata di un processo non costituisce un problema se è prevista all'interno delle
attività, o se non è ancora stato definito quando una persona dovrà inviare file o quando i
dati saranno pronti per la fase successiva nel processo di elaborazione.
Tuttavia, gli stati di inattività sono difficili da gestire al meglio in assenza di uno strumento
di schedulazione adeguato, che comprenda la pianificazione degli eventi.
Con una schedulazione solamente temporale, i job vengono definiti senza possibilità di
gestire i cambiamenti che possono verificarsi all'interno del sistema. Semplicemente, le
elaborazioni verranno eseguite quando era stato pianificato. Una soluzione completa di
job scheduling, invece, soddisfa veramente le esigenze aziendali perché include la
gestione degli eventi (“on event scheduling”), le variazioni di stato o la possibilità di
schedulare a richiesta le elaborazioni (“trigger-based scheduling”). Il sistema “on event”,
per esempio, riconosce quando un cambiamento è stato effettuato e avvia la fase
successiva di elaborazione.
VI. Quante attività sono in corso nel vostro datacenter?
Se non avete ancora implementato o standardizzato la schedulazione dei vostri processi,
siete in grado di conoscere quante attività sono in corso nel vostro datacenter?
Io sapevo dove si trovavano i processi che avevo creato, ma un giorno ho cambiato
lavoro, e quella conoscenza è venuta via con me. Come ho già accennato, quei job sono
stati ritrovati anni dopo, spesso in seguito a criticità nelle elaborazioni o a tempi di fermo
del servizio. Inoltre, mi sono riferito solo ai miei script, ma vi erano anche altre persone
che avevano creato i loro script. Così, alla fine, ulteriori informazioni sono andate
probabilmente perse.
Una soluzione centralizzata di job scheduling permette di definire un unico punto di
controllo per tutta l'automazione. Mette in grado i team IT e il personale specializzato di
sapere dove sono state apportate modifiche ai processi, e chi lo ha fatto. In questo modo
tutto è più chiaro e i flussi elaborativi scorrono meglio all'interno del sistema.
VII. Si possono monitorare i flussi di lavoro suddividendoli per
tipologia, piattaforma e applicazione?
Se non è possibile implementare una soluzione di questo tipo, si corre il rischio di creare
solo confusione. E nella confusione, ognuno tende a scaricare la responsabilità sugli altri.
© ORSYP 2012 ▪
12 / 40
Una volta mi hanno raccontato la storia di una società che aveva bisogno del job
scheduling. Il loro sistema assomigliava al progetto che il mio capo mi aveva affidato, in
quanto includeva tecnologie e piattaforme diverse tra loro. La gestione del sistema non
era unificata nemmeno in quel caso, bensì distribuita: un team era dedicato a SQL
Server, un altro alla piattaforma SAP e così via. Anche l'AD aveva il suo proprio gruppo di
addetti. Il problema in quel caso non risiedeva nell'applicazione di strumenti specifici di
pianificazione, ma nel personale.
I vari team nutrivano una certa diffidenza verso la centralizzazione su cui si fonda una
soluzione di job scheduling. Vi era il timore di dover ricreare i job SQL, SAP, AD e altri su
un sistema nuovo, diverso da quello cui si era abituati, e fuori dal controllo dei vari gruppi.
Per essere davvero efficiente e semplice da utilizzare, in una parola funzionale, una
soluzione di job scheduling non deve richiedere la completa ri-creazione di job esistenti
su ogni piattaforma o applicazione.
Il job stesso rappresenta infatti il cambiamento che dev'essere fatto, o lo script individuale
che dev'essere eseguito. Una soluzione di job scheduling rappresenta il wrapper
centralizzato che permette di richiamare tutte le elaborazioni.
Questa storia si conclude con la scoperta, da parte dell'azienda, che la centralizzazione è
proprio ciò che serve. Un problema apparentemente minuscolo in un sistema si era infatti
trasformato in qualcosa di ben più grande, perché l'azienda non era ancora in grado di
gestire le elaborazioni in modo unitario. L'esperienza è servita per abbracciare la logica
del controllo globale d'impresa nella schedulazione dei job.
VIII. Costruire o acquistare?
Avevo scritto il mio sistema di schedulazione nell'ormai datato linguaggio di VBScript,
ampiamente utilizzato in molti sistemi ma noto per non avere strumenti di pianificazione
ad alto livello. Lo schedulatore ha funzionato bene per il compito che gli era stato
assegnato. Tuttavia, la volta dopo mi serviva esattamente quel tipo di schedulazione
complessiva che il mio strumento non poteva offrire. Dovetti perciò riscrivere il
programma, ma anche con la modularizzazione del codice VBScript la riusabilità del mio
scheduler era molto limitata.
Immaginate di dover replicare la pianificazione su tutte le applicazioni e le piattaforme
aziendali, che utilizzano linguaggi diversi. Gli script creati dal team IT possono gestire le
esigenze di attivazione dei singoli job, ma ad un livello più alto solo uno scheduler è in
grado di lavorare bene in tutti gli ambienti e con tutte le applicazioni.
Inoltre, per realizzare uno scheduler sono necessarie molte più risorse di quello che si
potrebbe immaginare. È infatti necessario controllare gli script che devono essere
eseguiti, anche in base a dove li si vuole eseguire. Vi sono poi una serie di costi
aggiuntivi, inclusi il tempo che implica la scrittura del programma. Tutto questo viene
ovviamente sottratto ad altre attività a maggior valore aggiunto, cui le risorse potrebbero
invece essere destinate.
© ORSYP 2012 ▪
13 / 40
IX. Come si possono collegare i ri sultati di un job alle elaborazioni
di quello successivo?
In ogni sistema distribuito, i job dipendono l'uno dall'altro. Un job elabora una serie di dati
che poi saranno necessari per l'attività successiva.
La condivisione di dati può essere gestita da file scambiati tra job, oppure da meccanismi
più complessi come Microsoft Message Queue o da trigger del database. Analogamente
a quanto avviene per il problema di più linguaggi diversi tra i sistemi e le piattaforme, i
metodi basilari per condividere i dati possono risolvere criticità contingenti, ma
normalmente non sono adeguati a gestire la comunicazione tra piattaforme differenti.
Diventa ad esempio difficile quando si utilizza un trigger di database richiamare un'azione
in AD. Al contrario, una soluzione centralizzata per la pianificazione delle elaborazioni
diventerà il punto centrale di controllo di tutte le interazioni e le dipendenze tra processi.
X. Come si gestiscono gli errori in un processo personalizzato?
La gestione dei messaggi di errore degli script è un processo delicato, che richiede
tempo in fase di sviluppo e design dello stesso script. Gli errori sono difficili da
individuare, soprattutto quando gli script sono distribuiti su piattaforme e applicazioni
diverse.
Gestire gli errori richiede competenze specifiche nell'intercettazione e verifica delle
variabili, oltre alla determinazione dei loro valori presunti e reali. Il quadro si complica
ulteriormente quando gli script vengono eseguiti in modalità automatica, perché spesso le
criticità non vengono rilevate. Nel capitolo 2 cercheremo di illustrare meglio la gestione di
errori e funzionalità all'interno di un job scheduler. Per ora, limitiamoci a rilevare che
questo ambito è fondamentale per la risoluzione dei problemi che possono verificarsi
durante l'esecuzione di uno script.
È bene quindi dotarsi di soluzioni IT per indirizzare tali necessità. Con le nozioni di base
esposte in precedenza e le risposte alle domande iniziali, il prossimo capitolo introdurrà
sette casi d'usi reali di automazione IT e di pianificazione dei processi. Questo dovrebbe
fornirvi spunti interessanti, in quanto i casi d'uso che verranno descritti sono
probabilmente simili alla vostra situazione attuale.
© ORSYP 2012 ▪
14 / 40
Capitolo 2: Sette casi d'uso di job
scheduling
L'unico business che non ha bisogno di automazione dei processi IT è quello che utilizza
una sola applicazione. Tutte le altre aziende ne hanno bisogno. La maggior parte dei
datacenter usa molto più di una singola applicazione su un'unica istanza.
Un datacenter di medie dimensioni esegue applicazioni per la gestione dei propri
database, e si avvale di sistemi middleware per l'elaborazione dei dati. In una simile
struttura le elaborazioni vengono eseguite su sistemi operativi (OS), mainframe e pc: tutti
elementi che hanno bisogno di comunicare tra loro, pur non condividendo lo stesso
sistema operativo e utilizzando set di strumenti specifici.
Oggi, alcune tecnologie si automatizzano da sole, ma è raro che due o più applicazioni
siano in grado di comunicare tra loro. Ancora più raro è che il singolo prodotto possa
definire e pianificare automaticamente i flussi di lavoro che soddisfano le esigenze di
business. È perciò necessario integrare tra loro le diverse tecnologie, e si può fare questo
solo attraverso una soluzione centrale che armonizzi tutte le applicazioni.
Quello di cui abbiamo bisogno è una soluzione di job scheduling che faccia da “Rosetta
Stone” - Stele di Rosetta - tra diverse piattaforme, sistemi operativi e applicazioni: una
soluzione per il datacenter finalizzata a convertire i dati grezzi nei processi aziendali, in
modo da estrarre reale valore per il business consegnando le informazioni giuste alle
persone giuste. In questo documento, tenterò di mostrare come sia possibile integrare
una soluzione simile nella propria azienda.
Abbiamo visto in precedenza come potrebbe funzionare una schedulazione IT, per
dimostrare come tali soluzioni siano necessarie alla vostra infrastruttura informatica.
Tuttavia, non abbiamo ancora esaminato approfonditamente caratteristiche e potenzialità
del job scheduling per qualsiasi tipo di azienda.
Non ne tratteremo in questo capitolo, perché il modo migliore per illustrare il meccanismo
della schedulazione dei job è di far luce sulle criticità che può risolvere. Una volta
compreso come è possibile utilizzarlo per migliorare i processi aziendali, si può davvero
apprezzare la logica in base alla quale funziona la soluzione. Mi auguro che possiate
comprendere come il progetto che mi affidò il mio capo possa essere utile anche a voi, e
che vi stiate convincendo della necessità di adottare una soluzione di automazione nel
vostro datacenter.
© ORSYP 2012 ▪
15 / 40
Sette storie di job scheduling
Quello che voglio fare ora è tentare di fornire alcune idee per aiutarvi a capire meglio
cosa può essere più adatto alle vostre esigenze. Presenterò queste idee nella forma di
sette casi d'uso, in sostanza sette piccole “storie” sulle criticità che sono state risolte
grazie ad una soluzione di job scheduling.
Queste storie sono in parte fittizie, tuttavia si basano su necessità reali e offrono soluzioni
anch'esse reali ai problemi che affrontano. Per mantenere la narrazione interessante,
utilizzerò nomi falsi.
Caso 1: Cinque
differenziate
amministratori
di
sistema
-
cinque
gestioni
La prima storia illustra la situazione amministrativa dell'Azienda A, una società matura e
affermata sul mercato, che però non possiede un'organizzazione IT altrettanto solida.
Manca infatti un controllo centralizzato dei processi, e le configurazioni del sistema sono
gestite da cinque diversi amministratori. Il datacenter stesso è composto da differenti
aree e silos, che però hanno bisogno di comunicare tra loro. I cinque amministratori IT
sono John, Bob, Jane, Sara, e Jim . Ognuno di loro gestisce una parte dell'infrastruttura
del datacenter, e le responsabilità di ciascuno si sovrappongono in qualche modo a
quelle degli altri. I cinque addetti hanno creato script e applicativi per i flussi di lavoro
della propria area di competenza, ma queste automazioni non sono connesse tra loro.
Automazioni non connesse
Manca in sostanza un contesto generale che organizzi le varie automazioni. Per
esempio, se John crea un processo, i suoi dati non possono essere basati su quelli di un
altro processo creato da Sara. Come risultato, non c'è modo di orchestrare le attività di
tutti gli amministratori, né di pianificare le elaborazioni in modo che non siano in conflitto,
né di definire un processo a conclusione dei risultati di un processo precedente eseguito
da un amministratore diverso.
Soluzione: un sistema unico per consolidare le automazioni
La soluzione risiede nel consolidamento delle automazioni di queste cinque persone in
un sistema unico e centralizzato. Solo così i job di ognuno possono essere visti anche
dagli altri. Le elaborazioni di ciascun singolo amministratore possono inoltre venire
allineate alle esigenze di tutti, per garantire una gestione più equilibrata ed efficiente delle
risorse. Infine, grazie al fatto che tutti i processi risiedono in un unico luogo, è semplice
riutilizzare i dati e gli strumenti di ogni automazione anche nelle pianificazioni future per
effettuare altre elaborazioni.
Una soluzione di job scheduling è quindi adatta a pianificazioni di natura amministrativa
oltre a quelle legate ad altri aspetti del business.
© ORSYP 2012 ▪
16 / 40
Caso 2: Conflitto tra le attività dei sistemi
Una soluzione di schedulazione informatica non si basa esclusivamente sugli operatori,
anzi ha più a che fare con i dati di un datacenter. È per questo che la seconda storia si
riferisce alle diverse applicazioni utilizzate dall'Azienda B.
In particolare, il caso d'uso riguarda la linea di business di un'organizzazione (Line-ofBusiness, LOB), intesa come le applicazioni essenziali che compongono il sistema
dell'azienda. La LOB è formata da diversi componenti, la comunicazione tra i quali viene
regolata attraverso un'attenta orchestrazione a livello di attività, processi e flussi di lavoro.
Il sistema nel suo complesso comprende sistemi operativi differenti, Windows e UNIX, e
diverse tipologie di database, middleware e altri componenti.
Sistemi e applicazioni differenti
Tutti questi elementi attivano funzionalità messe a disposizione dalla LOB. Oltre a ciò,
utilizzano il proprio set di strumenti per svolgere le attività pianificate: il server SQL
esegue i pacchetti SSIS, il server Linux SAP esegue i propri processi ed i job di tipo
Crontab, e anche il server “Informatica” esegue i suoi flussi di lavoro.
In questa configurazione, uno schedulatore per componente può funzionare per la
maggioranza delle LOB. I dati e le elaborazioni relative ad Informatica possono essere
definiti in base al tempo e ad altre caratteristiche di pianificazione, il database SQL può
eseguire i suoi pacchetti SSIS grazie alle proprie impostazioni personalizzate, e così via.
Ma, analogamente a quanto abbiamo visto nel primo racconto, in questo ambiente è
probabile che si verifichino problemi di conflitto delle attività individuali con quelle di altri
sistemi.
Soluzione: un unico pannello per pianificare i job
Una soluzione centralizzata di schedulazione delle elaborazioni è la risposta a questi
problemi, perché sostituisce con un unico pannello la pianificazione individuale di
ciascuna applicazione, e armonizza lo scambio di dati tra le piattaforme all'interno del
sistema.
Grazie alla centralizzazione dei dati e delle elaborazioni, viene migliorata la pianificazione
delle attività e le varie fasi di acquisizione e trasformazione dei dati si collegano meglio
tra loro. Il sesto caso che verrà presentato in questo capitolo illustrerà più in dettaglio
come i processi innescati in modalità automatica migliorino sensibilmente le prestazioni
del servizio. Per ora evidenziamo invece come la scelta di centralizzare la pianificazione
porti a gestire meglio tutti i job all'interno dell'infrastruttura.
© ORSYP 2012 ▪
17 / 40
Caso 3: Riutilizzo dei job per nuove attività di business
John è un DBA Oracle che ha sempre lavorato presso l'Azienda C, dove si trova
attualmente. Nella sua veste di amministratore di database, ha costruito per la società
l'infrastruttura IT quasi da zero. Conosce quindi molto bene l'intero sistema, e col tempo
ha apportato miglioramenti per aumentare le prestazioni ed eliminare i colli di bottiglia.
Ha realizzato numerosi script e diverse automazioni per raccogliere ed elaborare i dati
delle varie applicazioni, presentando poi i risultati nella forma di report destinati ai
manager. Il sistema che John ha costruito è fondamentale per la società, e l'importanza
del suo lavoro è stata ampiamente riconosciuta da tutti.
L'azienda adesso è cresciuta. Ha acquisito un business nuovo, e come risultato i suoi
sistemi informatici non sono più adeguati.
Semplice replica di un sistema precedente?
John è stato contattato dai vertici della compagnia per costruire un altro sistema. Gliene
avevano chiesto uno “...proprio come il primo, ma questa volta per la vendita di ruote
dentate invece che di ingranaggi". John ha accettato l'incarico, ma si è reso subito conto
che replicare semplicemente il sistema originale non sarebbe stato un compito così
semplice. I suoi script erano infatti Hardcoded, contenevano cioè componenti specifici
non modificabili di quel sistema. L'architettura del database che aveva realizzato era
specificamente progettata per trattare ingranaggi. I nomi dei server e degli script erano
codificati in ogni singolo script, attività e processo, e vi erano moltissime automazioni
basate sul business degli ingranaggi diffuse in tutta l'infrastruttura aziendale. Tradurre
anche un job semplice del database da ingranaggi a ruote dentate, avrebbe richiesto
mesi di investigazione, ricodifica e test di regressione. John aveva di fronte un gran
numero di applicazioni, e il risultato finale del suo lavoro avrebbe potuto non essere
all'altezza del suo sistema precedente.
Soluzione: centralizzare la gestione dei job
La soluzione ideale sarebbe stato disporre di un sistema centrale di gestione dei job,
all'interno del quale controllare tutti gli script, le attività e i processi aziendali. Questo
avrebbe potuto diminuire molto i rischi dell'attività di John, fino ad annullarli.
Si è già rilevato come un buon job sia ri-utilizzabile. In esso, le variabili vengono
impiegate per astrarre elementi come i nomi dei server o degli script richiamati (nel nostro
esempio, ruote dentate o ingranaggi), in modo che le pianificazioni possano venire
ridefinite sulla base di eventuali nuove richieste, con il minimo di lavoro investigativo,
ricodifica e test. Una buona soluzione di job scheduling prevede la possibilità di
espansione del business, e di conseguenza l'aumento di servizi per soddisfare le
esigenze dell'azienda.
© ORSYP 2012 ▪
18 / 40
Caso 4: La raccolta dati è più di una semplice
La Società D vende un prodotto di successo. Aveva iniziato in origine come una piccola
azienda, ma nel corso degli anni si è ampliata ed ha incrementato il giro d'affari.
La crescita ha posto alcuni problemi, tra cui una proliferazione di applicazioni che in
realtà solo pochi utilizzano all'interno dell'azienda, e situazioni di disordine nella gestione
delle soluzioni informatiche, alcune delle quali erano state create per risolvere problemi
specifici o rispondere a determinate esigenze.
Crescita del business e applicazioni differenti
La Società D è costituita da tante piccole realtà, con una moltitudine di applicazioni che
non sono omogenee. Per esempio, un'applicazione che si occupa del budget potrebbe
archiviare i propri dati in SQL, un'altra in Oracle, una terza invece in qualche linguaggio
ormai obsoleto o conosciuto soltanto da pochi specialisti. Armonizzare tra loro queste
applicazioni e integrare i dati è un'attività fondamentale per la Società.
Molte aziende utilizzano differenti database e applicazioni di Business Intelligence (BI),
come i Crystal Report. Queste soluzioni aggregano dati provenienti da diverse
architetture, trasformandoli per esempio da un formato Oracle ad uno SQL. Gli strumenti
di BI sono in grado di realizzare integrazioni di dati collegando diversi database. La
Società D utilizza Crystal Report proprio per raccogliere i dati di bilancio delle varie unità
di business.
Soluzione: creare un flusso di lavoro automatizzato
Una struttura aziendale complessa, come nel caso della Società del nostro esempio, è
costituita normalmente da diverse unità di business, e ciò comporta la necessità di
orchestrare i processi e sincronizzare i database per disporre di informazioni
costantemente aggiornate sulla base delle quali prendere le decisioni.
Le soluzioni di Business Intelligence sono spesso dotate di una vista unificata su
piattaforme diverse, ma non offrono strumenti per unificare le operazioni tra i sistemi. Ciò
di cui la Società D ha realmente bisogno è una pianificazione del sistema informatico
aziendale per gestire al meglio i job e creare un flusso di lavoro automatizzato. Le
operazioni per la raccolta dei dati possono essere più complesse di quanto si pensi, ma
anche in questo caso un sistema di pianificazione delle elaborazioni costituisce la
soluzione giusta per soddisfare le esigenze del business.
Caso 5: Controllo del trasferimento dati nell'e -commerce
Da quando ha iniziato l'attività di e-commerce, la Società E si è resa conto che le
transazioni e la comunicazione on-line con i clienti generano grandi volumi di dati, ed è
© ORSYP 2012 ▪
19 / 40
tutt'altro che semplice creare un sistema complessivo in grado di gestirli, ottenendo
informazioni strategiche per guidare lo sviluppo dell'azienda.
I dati grezzi si presentano in vari formati. La Società mette infatti a disposizione dei clienti
servizi web per informazioni sui prodotti, con la possibilità di effettuare acquisti on-line.
Formati diversi in contesti non strutturati
La varietà dei formati di dati crea problemi quando si lavora in contesti non strutturati, in
quanto spesso non è possibile integrare le informazioni tra sistemi diversi o all'interno dei
flussi di elaborazione aziendali.
La Società E aveva bisogno di un sistema informatico in grado di svolgere le operazioni
richieste nel commercio elettronico, per esempio registrare gli ordini effettuati dai clienti,
garantire la sicurezza dei dati e notificare agli utenti quando la transazione è andata a
buon fine.
Soluzione: piattaforma comune e automazione del flusso di lavoro
Queste operazioni presuppongono una piattaforma comune per gestire i differenti formati
di file. Una soluzione di job scheduling comprende il trasferimento dei file in un flusso di
lavoro aziendale complessivo, in cui possono essere presenti, ad esempio, formati XML,
SMTP, FTP e SFTP. Nelle soluzioni di e-commerce in particolare, deve inoltre essere
garantita la sicurezza delle transazioni. Da qui l'ulteriore complessità di gestire anche
protocolli come SSH, o di scambiare informazioni strutturate attraverso l'implementazione
di Web Service tramite il protocollo SOAP.
La risposta più funzionale e sicura a questo insieme di esigenze è rappresentata, ancora
una volta, dall'automazione delle elaborazioni, che costituisce un sistema di alto livello
per gestire ed integrare i flussi di dati.
Caso 6: Flussi di lavoro complessi e trigger per le elaborazioni
Il sesto esempio ci riporta alla storia iniziale del progetto per la mia azienda. Ho cercato
di spiegare come un processo di pianificazione fosse l'unico sistema per conseguire in
modo rapido ed efficiente gli obiettivi di quel progetto. Lasciate che vi racconti ora, un po'
più in dettaglio, come si è sviluppata quella storia.
Avevamo bisogno che i dati aziendali esterni, dopo essere stati ricevuti dal server FTP,
fossero trasferiti al server SQL il più velocemente possibile, quasi in tempo reale.
© ORSYP 2012 ▪
20 / 40
Difficoltà nell'integrazione dei dati
L'ipotesi di realizzare ciò con il solo FTP aveva dato luogo ad un lavoro incredibilmente
complicato, perché si doveva costruire una sessione di trasferimento dati sempre attiva.
Questa idea è stata subito scartata in quanto, tra l'altro, non garantiva la sicurezza dei
dati. Abbiamo quindi pensato di installare un tipo di agente, o meglio ancora di
implementare una soluzione che in realtà non prevedesse alcun tipo di agente, la quale
semplicemente rilevasse l'arrivo dei dati. Le informazioni potevano poi essere trasferite
dal server FTP al database SQL.
Questo era solo uno dei problemi, ma ne esistevano anche altri. I nostri sistemi SQL e
Oracle dovevano infatti rimanere sincronizzati. Modifiche a valori specifici in uno
dovevano essere replicati sull'altro praticamente in tempo reale. Tale sincronizzazione
comportava il trasferimento di metadati con SAP.
Anche una sola di queste esigenze poteva essere difficile da soddisfare per gli
sviluppatori. Cercando di ottenere il massimo dalle risorse a disposizione, avevamo
scelto di implementare un sistema che indirizzasse le necessità restando ad un livello di
pianificazione alto.
Soluzione: pianificazione e trigger per qualsiasi esigenza
Ciò di cui avevamo bisogno erano i trigger (letteralmente “grilletti”). I trigger sono la base
di una soluzione di pianificazione dei processi informatici, e ne esistono di diversi tipi.
Il nostro progetto richiese una vasta gamma di essi. Ad esempio, il job FTP per gestire il
flusso di dati verso SQL ha bisogno di un sistema basato su file, in grado di gestire le
elaborazioni sul server FTP. Inoltre, erano necessari trigger innescati da un messaggio
per integrare SQL con Oracle, consentendo alle due applicazioni di comunicare tra loro
per effettuare la sincronizzazione dei dati. Trigger a evento sono invece necessari per
gestire la comunicazione tra sistemi Oracle e SAP. Analogamente, servono trigger per il
corretto funzionamento dell’Active Directory e dei sistemi che permettono l'accesso ai
dati. Infine, il nostro progetto prevedeva “grilletti” a tempo per trasferire dati dal database
SQL al mainframe UNIX.
Avevamo poi bisogno di collegare gli eventi in un unico processo. Esistono trigger di
concatenamento proprio per queste esigenze, i quali permettono di accelerare i processi
e di mantenere una vista unica su tutto il sistema. Vedremo meglio questo tipo di
meccanismo nel prossimo capitolo.
Ai fini della scelta da parte vostra della migliore soluzione di pianificazione dei processi
informatici, in base all'esperienza personale e ai risultati di quell'importante progetto che
avevo realizzato per la mia azienda, posso consigliare di orientarsi verso il sistema che
offre la più ricca suite di trigger, per soddisfare il maggior numero di esigenze che la
vostra azienda potrebbe avere.
© ORSYP 2012 ▪
21 / 40
Caso 7: Protezione del datacenter da esecuzioni improprie
La Società F è un'azienda di medie dimensioni, con un dipartimento IT ben organizzato e
che offre servizi di buona qualità. Tuttavia, come vedremo in questo esempio, nemmeno
l'infrastruttura informatica meglio strutturata è completamente al riparo da errori. I quali, a
volte possono avere conseguenze significative sul business.
In questo esempio il problema si presenta quando due amministratori di sistema
condividono una varietà di script, attività e processi.
Protezione degli script e sicurezza del sistema
Abbiamo già visto che uno dei principali vantaggi dell'automazione basata su script è la
coerenza nel riutilizzo. Per gestire una serie di attività attraverso uno script, questo può
essere eseguito più volte e produrre un risultato noto. Parametrizzare gli script migliora
ulteriormente il loro utilizzo. Una volta creato, è possibile impiegare più volte lo stesso
codice per soddisfare esigenze diverse. Tuttavia, a volte questa stessa riusabilità può
trasformarsi in un rischio. Ciò capita quando è sufficiente che una persona clicchi su uno
script per attivarlo, iniziando un processo per errore, o se ne utilizza uno pur non essendo
autorizzata a farlo.
La Società F ne sa qualcosa. Un giorno Sara ha “preso in prestito" uno degli script di
Jane utilizzati in un altro sistema. Gli script di Jane sono brillantemente progettati e
parametrizzati. Ogni cosa è ben documentata in modo che siano presenti tutte le
informazioni necessarie ad un altro amministratore per riutilizzare lo script altrove. E poi,
in questo esempio lo script di Jane è esattamente ciò che serve a Sara.
Sara non è però autorizzata a eseguire i codici degli altri amministratori, in quanto
nessuno può lavorare negli ambienti altrui.
Perciò, quando Sara ha eseguito lo script di Jane, il sistema si è paralizzato.
Soluzione: controllo e automazione centralizzata
La Società F ha fatto tesoro di quest'esperienza, implementando poco dopo una
soluzione di schedulazione delle elaborazioni per concentrare le sue automazioni in un
unico punto. Il nuovo sistema ha permesso all'azienda di definire una serie di privilegi
d'accesso per gestire meglio i propri script, le variabili ad essi associate, i job e le
pianificazioni. Centralizzare gli accessi al sistema riduce drasticamente il rischio che
qualcuno possa eseguire impropriamente delle elaborazioni, o che possa collegare le
variabili errate allo script giusto, o viceversa, le variabili giuste allo script sbagliato.
La pianificazione dei job permette di avere una vista completa degli script all'interno
dell'azienda, gestendo in modo più efficiente tutte le automazioni. Come l'esempio
dimostra, questo produce vantaggi anche in termini di sicurezza perché l'ecosistema IT
viene protetto meglio.
© ORSYP 2012 ▪
22 / 40
Sette storie, sette esempi di valore aggiunto del job scheduling
Queste sette storie dovrebbero aiutare ad apprezzare il valore aggiunto che una
soluzione di pianificazione dei processi informatici offre. Il job scheduling è ideale per
organizzare e controllare processi aziendali complessi, orchestrandoli ad alto livello.
La pianificazione dei processi supporta inoltre la gestione della sicurezza, permettendo
all'azienda di avere il quadro complessivo e di dettaglio delle elaborazioni in esecuzione,
con ovvi vantaggi anche in sede di audit.
© ORSYP 2012 ▪
23 / 40
Capitolo 3: Analizziamo nel dettaglio un
flusso di processi IT
È giunto il momento di analizzare più in profondità il meccanismo interno dei job.
Abbiamo parlato poco sopra di alcuni casi d'uso e delle esigenze che spingono ad
adottare soluzioni di pianificazione dei processi IT; ora proveremo a vedere da vicino
come funziona un flusso di job. Alla fine di questo capitolo sarà possibile apprezzare
ancora di più la logica dell'automazione e comprendere come essa si adatti
perfettamente alle esigenze del business.
Uno dei motivi per cui è comodo e utile impiegare un computer per eseguire un'attività un
numero indefinito di volte, risiede nel fatto che basta “dire” alla macchina esattamente
cosa fare.
Mi auguro che il capitolo 2 sia stato piacevole da leggere così come lo è stato da
scrivere. Anche se mi sono concesso alcune licenze letterarie, ho comunque cercato di
evidenziare quali possono essere alcune esigenze reali di business che spesso si
riscontrano nelle aziende, portando esempi di utilizzo in cui la pianificazione dei processi
informatici si traduce in vantaggi concreti e misurabili. Nell'amministrazione di un
datacenter, elementi come il coordinamento delle attività amministrative, il
consolidamento dei processi e la creazione di trigger, insieme agli aspetti relativi alla
sicurezza, svolgono una funzione fondamentale.
Tuttavia, troppo spesso le aziende adottano approcci non scalabili, con la conseguenza
di aumentare il rischio di errori o di non garantire il collegamento con altre attività. Le
diverse storie raccontate nel capitolo 2 hanno un elemento in comune: la necessità di
creare un flusso di lavoro che coinvolga tutti gli attori e tutti i dati che vengono elaborati.
In fondo, sia questi flussi, sia i job e le pianificazioni sono aspetti diversi della stessa
esigenza: “dire” ad un computer cosa deve fare.
Nei primi due capitoli di questo documento abbiamo visto perché gli script di automazione
rappresentano una buona soluzione per il vostro datacenter.
Ora tenterò di chiarire come queste soluzioni possano essere implementate e gestite.
Osserveremo quindi come un flusso di lavoro realizza un'attività IT, anche attraverso
alcuni esempi di schedulazione. In questo modo cercheremo di capire meglio come una
soluzione di job scheduling può essere implementata nel modo corretto.
Analizziamo ora i flussi di lavoro che danno luogo ad un'attività informatica.
© ORSYP 2012 ▪
24 / 40
Un flusso di lavoro è un'attività IT
Un flusso di lavoro è descritto come una sequenza di passi collegati e rappresenta
un'astrazione del job vero e proprio. Si tratta di un modello che definisce in che modo
vengono elaborati i dati, e specifica il loro ciclo di vita all'interno dell'azienda.
Si trovano flussi di lavoro in tutte le tipologie di business, e non sono necessariamente di
natura tecnica. Per esempio, l'ultima volta che avete preso un giorno di riposo avrete
dovuto presentare una richiesta. Tale richiesta richiede l'approvazione, che una volta
ottenuta dev'essere comunicata ai colleghi.
Questo processo è fondamentale, soprattutto se sono previsti giorni di permesso con
retribuzione. Ci sono poi casi in cui le persone sono impossibilitate ad avvertire l'azienda,
a causa di malori improvvisi, incidenti o perché gli strumenti di comunicazione
semplicemente sono fuori uso.
In questi casi il flusso di lavoro viene interrotto perché il processo non è seguito
correttamente, e ciò comporta confusione sul “dove” si trovasse la persona quando non
ha potuto raggiungere l'ufficio, e quali attività avrebbe dovuto svolgere.
In qualche modo, l'esempio relativo alle persone può essere applicato anche ai dati. In un
sistema informatico, i dati devono essere gestiti in modo efficiente, e le attività di
elaborazione vanno definite con precisione. Il trasferimento tra sistemi diversi va
effettuato in modo tempestivo, e occorre prevedere possibili errori. Il risultato di questo
procedimento è la creazione di un flusso di dati in cui le azioni sono pianificate e viene
virtualmente annullata la possibilità di imprevisti.
Le caratteristiche che qualificano un job sono: integrabilità, monitoraggio, misurabilità,
ripetibilità e riusabilità, infine affidabilità.
Cerchiamo ora di approfondire ognuno di questi singoli aspetti.
Integrabilità
Riteniamo che i computer siano macchine “deterministiche”: dati un input e un insieme di
istruzioni di elaborazione, il risultato sarà sempre identico. Purtroppo invece, a volte non
succede quello che ci aspettavamo. Perché?
La soluzione al problema risiede nell'implementazione di un sistema in grado di utilizzare
le porzioni manuali delle attività IT in un job. Tale acquisizione di dati è possibile solo
grazie ad una soluzione di job scheduling in grado di integrarsi perfettamente con i
sistemi di backup, i database e gli script già in uso all'interno dell'azienda. La vista
complessiva sul sistema, abilitata dall'automazione dei processi, deve tradursi in
informazioni precise e dettagliate su tempi e modalità di esecuzione dei vari job.
© ORSYP 2012 ▪
25 / 40
Monitoraggio e misurabilità
Un buon processo IT dovrebbe essere monitorabile e misurabile. Una soluzione di job
scheduling deve inoltre automatizzare le attività di recovery in caso di errore. Una volta
creato, testato e attivato, un job IT dovrebbe svolgere i suoi compiti senza ulteriore
assistenza.
Questa autonomia implica che, se progettati in modo corretto, i job devono appunto
includere componenti di monitoraggio e misurazione, per garantire la qualità del risultato
finale.
La misurazione può avvenire in più punti del flusso di lavoro. Ad esempio, è possibile
verificare se la connessione dei sistemi al database per l'estrazione e l'elaborazione dei
dati avviene nel modo corretto, o se questo non accade, e in tal caso quali sono i rischi
per il funzionamento del sistema. Monitorare e misurare gli effetti dell'attività è essenziale
per la vita dell'azienda, e solo con un sistema di automatizzazione dei job si può ottenere
questo risultato.
Ripetibilità e riusabilità
Misurabilità e parametrizzazione danno luogo ad un processo riutilizzabile. Il lavoro per
creare uno script continua a creare valore anche quando il codice è già stato utilizzato,
appunto perché lo stesso script può essere reimpiegato altrove.
La riusabilità non si applica solo ai job, ma è valida anche all'interno di ogni
schedulazione. Nel capitolo 1, abbiamo definito un job come “un'azione da compiere”. Il
limite di un job deve dunque rimanere l'esecuzione dell'azione stessa.
Ogni job può essere assegnato ad un flusso di lavoro al fine di portare a termine un
processo. Una volta creati, job e schedulazioni risiedono in una libreria dei processi IT,
dove i codici possono essere riutilizzati più volte. Quindi, se per esempio due nuovi
database devono essere sincronizzati, nel caso si disponga già di una schedulazione per
eseguire questa operazione, il riutilizzo può consistere semplicemente in un drag-anddrop con la creazione di una nuova istanza del piano. A questo punto, non si dovrà fare
altro che modificare i parametri con le caratteristiche dei nuovi server per rendere
effettivo il riutilizzo dello script.
Affidabilità
Abbiamo introdotto sopra la nozione di sicurezza dei job. Nella settima storia, abbiamo
visto come sia possibile implementare misure di sicurezza sia per job singoli che per
intere schedulazioni, al fine di evitare utilizzi impropri dei dati e altre criticità.
© ORSYP 2012 ▪
26 / 40
La sicurezza è un aspetto essenziale di qualsiasi sistema informatico.
Può verificarsi infatti il caso in cui una schedulazione esegua elaborazioni sui dati, ma la
parametrizzazione consente che qualcuno possa avere accesso al sistema per interventi
o modifiche.
Per questo bisogna porre la massima attenzione al problema della sicurezza, sia al fine
di verificare che non venga effettuato nulla di improprio, sia per proteggere istanze o
trigger che quella stessa pianificazione deve attivare.
Ogni piattaforma e applicazione è di solito dotata di un proprio sistema di sicurezza,
come naturalmente lo sono tutte le soluzioni di automatizzazione dei job. Applicare
entrambi questi strati di sicurezza è una buona scelta. L'Active Directory (AD) con il suo
livello di protezione può essere utile per gestire diritti e privilegi di accesso alle
applicazioni.
Flussi di job e pianificazione dei processi
Un flusso di job è una stringa di codice. L'insieme di questi codici rappresenta la libreria
di job della vostra soluzione di job scheduling. Dovrà poi essere creato altro codice per
personalizzare il sistema, dal momento che nessun fornitore può creare oggetti per ogni
situazione.
Esaminiamo ora un ipotetico esempio di costruzione di flusso di lavoro. Il nostro flusso è
composto da una serie di blocchi, ognuno dei quali rappresenta un'attività. I dati del
sistema devono essere monitorati, in modo che i cambiamenti o gli aggiornamenti siano
subito rilevati e venga eseguito l'upgrade dei componenti.
Ammettiamo che in questo esempio sia stata implementata una soluzione di job
scheduling per gestire il flusso dei job.
Non appena si verificano modifiche allo stato del sistema, deve essere invocato un
processo per collezionare tali variazioni, quindi va eseguito uno script con i dati nuovi
rilevati, in modo da poterli trasferire tramite FTP alle altre componenti.
La pianificazione è un elemento essenziale di ogni flusso di lavoro. Essa non va tuttavia
basata – o almeno non esclusivamente - sull'ora in cui in teoria le elaborazioni
dovrebbero iniziare, bensì sul monitoraggio degli stati del sistema, come la presenza di
file, query, modifiche del file di log e altro. Tali eventi attivano le azioni successive.
Questo workflow ad attivazione è il fondamento della pianificazione dei processi IT. In
assenza di un sistema così strutturato, la pianificazione dei processi è poco più di una
funzione di controllo di data e ora. Il requisito per il successo sono i tempi di risposta
rapidi dell'infrastruttura informatica: appena si conclude una fase nel flusso di
elaborazione dati, i risultati danno avvio alla fase che segue.
© ORSYP 2012 ▪
27 / 40
Nel nostro esempio ipotetico, il flusso di lavoro elabora un oggetto Oracle. Questo job è
necessario per eseguire una query sul database.
Le specifiche circa l'uso di questo oggetto saranno aggiunte alla schermata delle
proprietà del blocco SQL. Verranno poi realizzati gli strumenti per connettersi al database
e mantenere la riusabilità dell'oggetto.
Costruire l'oggetto Oracle è il primo passo. Per realizzarlo, occorre creare una o più
istruzioni condizionali. In questo caso, attivando un comando specifico il sistema può
utilizzare le funzionalità dei Web Service per rilevare le modifiche dei dati. Queste
istruzioni sono la base per creare la logica condizionale necessaria al corretto
funzionamento del sistema.
Connessione a Web Service e job di copia file
Approfondiamo ora la logica condizionale per il monitoraggio dei Web Service grazie a
cui è possibile verificare le modifiche dei dati, includendo anche la logica di connessione
per la raccolta di dati da un database Oracle. Il passo successivo nel flusso di lavoro è
l’elaborazione di questi dati attraverso uno script, che può essere inserito nella nostra
soluzione di job scheduling.
Ammettiamo che il codice del nostro esempio sia VBScript, sebbene qualsiasi codice
supportato possa essere usato dallo script. Una volta creato, esso diventa un job del tutto
analogo agli altri compresi nel flusso di lavoro.
Il passo successivo nella costruzione del workflow è duplice. Occorre infatti trasferire i
risultati dell'elaborazione dello script in due sedi differenti del sistema, tramite due diversi
meccanismi. Il primo potrebbe avvenire attraverso un job di copia dei file, contenuto
all’interno di una libreria di processi IT. Una volta aggiunto il job, occorrerà modificare i
parametri associati al trasferimento dei file.
I job di copia dei file in genere effettuano trasferimenti di file tra sistemi operativi. Ma
trasferire i dati, per esempio da un sistema Windows ad uno Linux o UNIX, richiede
protocolli specifici, come job FTP. Nel nostro esempio, possiamo immaginare di creare
un job SFTP, cui vanno aggiunti i nomi dei server e le credenziali richieste.
Il monitoraggio e la misurazione sono componenti essenziali di una buona soluzione di
schedulazione. Un modo per realizzare questo monitoraggio può consistere nell'utilizzo di
un trigger (“grilletto”, come abbiamo visto sopra).
Utilizzo dei trigger e vincoli di file
I trigger scattano quando si verifica un determinato evento all'interno del sistema. In
questo esempio, supponendo che il flusso di lavoro richieda l'utilizzo di un servizio in
particolari condizioni, l'azione associata sarà quella di riavviare il servizio se per qualsiasi
© ORSYP 2012 ▪
28 / 40
motivo questo non dovesse essere disponibile, o di concatenare i processi mantenendo
una vista unica su tutto il sistema.
Una soluzione di job scheduling è quindi in grado di eseguire automaticamente
determinate azioni correttive. L'esecuzione di tali azioni garantisce il funzionamento
continuo del sistema.
Nel flusso di lavoro dell'esempio occorre eseguire due script per manipolare i dati. Non
vedremo nel dettaglio il primo script. Illustreremo invece ora un vincolo che potrebbe
essere applicato per definire quando lo script debba essere eseguito.
La schedulazione non può essere basata semplicemente sul tempo e l’ora. Queste
tipologie di pianificazione sono insufficienti, in quanto soggette a ritardi nell'elaborazione
dei dati. Quello che serve è invece un flusso di lavoro in cui le varie fasi procedono non
appena vengono conclusi i passaggi precedenti.
Vincolare l'esecuzione di un job alla presenza di un file, permette di eseguire
l'elaborazione solo al momento opportuno. Nell'esempio considerato, occorre elaborare il
secondo script dopo che un file viene copiato, quindi si può considerare come vincolo il
fatto che il file debba essere presente sul sistema di destinazione. L'elaborazione viene
pertanto eseguita solo quando si verifica questa condizione, in seguito al completamento
della fase precedente.
Librerie di job e valore aggiunto dei trigger
Qualunque soluzione di job scheduling si scelga, dovrebbe offrire una serie di trigger per
innescare azioni o svolgere funzioni di controllo, semplificare la gestione degli eventi su
sistemi esterni e creare o configurare cambiamenti di stato all'interno delle applicazioni.
I fattori che attivano i trigger dovrebbero includere:








Eventi specifici WMI (utilizzando la sintassi WQL)
Eventi su file (su più piattaforme)
Eventi basati su email (su più sistemi di posta elettronica)
Eventi Microsoft Message Queue
Eventi basati su Web Service
Eventi di avvio dei processi
Eventi SQL, Oracle e relativi ad altri database
Eventi legati all’ambiente virtuale
In questo capitolo si è cercato di illustrare le caratteristiche dei job e come una libreria di
essi crei una serie di azioni potenziali che è possibile aggiungere alla pianificazione del
flusso di lavoro. L'esigenza di “dire” ad un computer cosa fare è davvero un'arte, legata
alla scienza della logica, e l'implementazione di una soluzione di job scheduling crea la
struttura all'interno della quale sviluppare le proprie automazioni.
© ORSYP 2012 ▪
29 / 40
Siamo così giunti quasi alla fine del nostro viaggio verso una più ampia comprensione dei
vantaggi offerti dall'automazione dei sistemi informatici aziendali. Rimane ancora
un'ultima storia da raccontare, ed è quello che vorrei fare nel prossimo capitolo. Cercherò
di mettere in luce le principali funzionalità di una soluzione di automazione, facendo
emergere le caratteristiche fondamentali che dovrebbe avere – ed i vantaggi che può
offrire per vincere le sfide della competizione globale.
© ORSYP 2012 ▪
30 / 40
Capitolo 4: Enterprise job scheduling:
una lista di requisiti da controllare
Una soluzione di IT job scheduling è l'intelaiatura che contiene e ottimizza i sistemi di
automazione aziendale.
Una volta che la soluzione migliore è stata scelta e implementata, essa costituirà la
struttura entro cui collocare job, schedulazioni e script.
Al suo interno si trovano quindi tutte le automazioni di un'azienda, che spetta alla
compagnia stessa ideare e realizzare. In assenza di tali automazioni, la soluzione di job
scheduling non può dare risultati.
La scelta migliore è quella che include tutte le integrazioni per collegarsi al datacenter
della compagnia. Essa consente di realizzare e armonizzare le automazioni in modo
semplice, e comprende gli strumenti per orchestrare i processi. Le tre aree fondamentali
che dovrebbero orientare nella scelta di una soluzione di job scheduling sono
l'integrazione, i trigger e l'amministrazione.
Creazione dei requisiti specifici per il job scheduling
Tre cose solamente, potreste chiedervi? Il mondo reale è ben più complesso, e non si
presta a riduzioni troppo semplicistiche o schematiche. Spesso, i professionisti IT sanno
quasi per “istinto” (un istinto che hanno sviluppato nel corso degli anni) che hanno
bisogno di qualcosa di più, che ancora non hanno, per risolvere i loro problemi. La parte
difficile è formalizzare questa sensazione in una serie di requisiti che descrivano
esattamente ciò di cui hanno bisogno.
E arriviamo all'obiettivo di questo capitolo finale: aiutare i professionisti IT a definire una
specifica formale di tali requisiti. Il metodo seguito è analogo a quello del progetto per la
mia azienda di cui abbiamo parlato all'inizio di questo lavoro, e che ha ispirato la stesura
delle pagine che state leggendo.
Nei prossimi paragrafi cercherò di mettere in luce i requisiti che hanno descritto quel
progetto. Per ogni punto trattato aggiungerò alcuni commenti e tenterò di illustrare una
possibile soluzione ai problemi incontrati.
Requisito 1: Integrazione con tutte le piattaforme e le applicazioni
È bene ricordarlo nuovamente: una buona soluzione di job scheduling dev'essere in
grado di lavorare con qualsiasi tecnologia. Ciò significa che database, query e linguaggi
© ORSYP 2012 ▪
31 / 40
di gestione devono integrarsi con le applicazioni, direttamente o tramite i Web Service
esposti. Si richiede inoltre l'integrazione con tutti i sistemi di trasferimento dei file e la
gestione delle tecnologie per elaborare o convertire i dati in vari formati.
La soluzione di job scheduling deve supportare tutti i prodotti e le tecnologie presenti in
azienda. Se non vi sono garanzie su questo punto cruciale, la soluzione in esame va
esclusa dalla lista delle possibile candidate.
Requisito 2: Documentazione completa dei sistemi aziendali
Piattaforme, applicazioni e tecnologie costituiscono solo il primo livello di integrazione,
ma una soluzione informatica di pianificazione dev'essere in grado di gestire tutti i dettagli
delle applicazioni e delle elaborazioni dei dati.
Altro aspetto importante è la documentazione completa e aggiornata dei vari sistemi
aziendali e delle funzioni che svolgono, in modo anche da individuare eventuali
inefficienze o applicazioni non più indispensabili.
Requisito 3: Indipendenza e flessibilità della soluzione
La soluzione di pianificazione IT che si sceglie dev'essere in grado di organizzare e
gestire le elaborazioni in modalità cross-platform e cross-application, comprendendo
diverse tecnologie e linguaggi di scripting. In questo senso si parla di indipendenza degli
script, se il linguaggio in cui il codice è realizzato è valido per qualsiasi job, applicazione o
piattaforma, senza essere limitato ad un solo sistema.
Questa flessibilità è necessaria per rendere efficace la comunicazione tra la soluzione
adottata da un lato, e tecnologie differenti cui il sistema può connettersi, senza dover
richiedere ulteriori componenti per l'interazione.
Requisito 4: Utilizzo di code per gestire la priorità dei job
Le code in una soluzione di job scheduling rappresentano un meccanismo per la gestione
delle priorità dei job e la pianificazione delle attività. Un'infrastruttura IT efficiente utilizza
una soluzione di schedulazione strutturata su più code con priorità diverse al fine di
garantire le massime prestazioni.
Lavorare con una serie di code di priorità consente una sorta di failover, ovvero se le
risorse necessarie per i job non sono disponibili, i job in ogni caso passano in coda per
l'elaborazione successiva. Tale meccanismo garantisce che il flusso di lavoro non si
interrompa, anche nel caso in cui dovessero verificarsi criticità nel sistema.
© ORSYP 2012 ▪
32 / 40
Requisito 5: Supporto dei trigger basati su file
La soluzione di job scheduling deve comprendere un ampio ventaglio di trigger, per
garantire da un lato la flessibilità a seconda delle esigenze aziendali, e dall'altro il
controllo completo sugli eventi del sistema, grazie ad azioni automatiche attivabili in caso
di eventi specifici.
I trigger file-based “innescano” l'esecuzione di un'attività in base alla presenza o a
specifiche caratteristiche di un file in un sistema. Si tratta di trigger particolarmente utili
per gestire tutto il ciclo di elaborazione o modifica dei dati contenuti in un file, soprattutto
in contesti distribuiti, in cui è necessario avviare fasi di esecuzione immediata al
verificarsi di un cambiamento ed evitare ritardi nelle elaborazioni.
Requisito 6: Supporto dei trigger basati su messaggi
I trigger message-based consentono invece di orchestrare le attività di tutte le
applicazioni e piattaforme anche a livello basso, offrendo agli sviluppatori un quadro
semplice dove la segnalazione degli eventi è centralizzata.
Trigger basati su messaggi sono simili a quelli basati su file, nel senso che migliorano
l'esecuzione di prestazioni di lavoro mediante l'esecuzione di azioni nel momento in cui
queste sono necessarie. La soluzione scelta dovrebbe essere integrata con eventuali
sistemi di messaggistica già in uso all'interno dell’infrastruttura informatica, in modo da
includere in un'unica soluzione i vari sistemi di segnalazione presenti nell'ambiente
aziendale distribuito.
Requisito 7: Supporto dei trigger basati su eventi
La soluzione giusta per la vostra azienda deve supportare anche i trigger event-based,
per orchestrare gli eventi e consentire un controllo più completo sul sistema.
Deve inoltre garantire la possibilità di personalizzare gli eventi, in modo da innescare
azioni automatiche al verificarsi di condizioni che possono essere definite per rispondere
a specifiche esigenze del business.
Requisito 8: Supporto dei trigger basati sulle tempistiche
Anche se abbiamo sostenuto che il solo parametro temporale non è adeguato per gestire
in modo ottimale la maggior parte dei sistemi aziendali, dobbiamo però riconoscere che il
fattore tempo è un elemento che entra a definire l'organizzazione delle attività aziendali.
Occorre perciò che la schedulazione in base alla data o all'orario garantisca affidabilità ed
elasticità.
© ORSYP 2012 ▪
33 / 40
Una soluzione di automazione di job scheduling che non includa il supporto per
pianificazioni ad orario o non sia altamente personalizzabile, probabilmente non si
rivelerà adeguata a soddisfare le esigenze aziendali, soprattutto nel contesto lavorativo di
oggi, che può essere ampiamente distribuito in geografie differenti, ove le elaborazioni
vengono eseguite in diversi fusi orari.
Requisito 9: Supporto di variabili e dati dinamici per il riutilizzo
della soluzione
Abbiamo introdotto sopra il concetto di parametrizzazione dei job e delle schedulazioni.
La parametrizzazione astrae ogni tipo di informazione in variabili che possono essere
utilizzate e richiamate ovunque. Le variabili e altri tipi di dati dinamici sono fondamentali
per il riutilizzo di una soluzione di pianificazione dei processi IT. La soluzione aziendale
che si sceglie dovrebbe includere variabili di supporto all'interno dei job e delle
schedulazioni.
Spesso, il riutilizzo di variabili ed altri dati dinamici attraverso gli oggetti si riferisce alla
"profilazione" dei dati stessi, che costituisce un modo semplice per richiamare specifiche
informazioni indipendentemente dalla loro posizione nei sistemi aziendali.
Requisito 10: Garantire la comunicazione all’interno del flusso di
lavoro
Una volta che il nuovo sistema è stato scelto e installato, sarà possibile velocizzare
l'esecuzione dei job e implementare progetti per automatizzare l'infrastruttura. Come si è
visto nel capitolo 3, i job e le schedulazioni sono azioni che si collegano per creare un
flusso di lavoro. Una soluzione efficiente di job scheduling permetterà di riutilizzare le
variabili all’interno dei flussi di lavoro, in modo che altre automazioni possano essere
realizzate in futuro molto più facilmente.
Abbiamo visto alcuni esempi circa l'utilità della comunicazione all'interno e tra i workflow.
Uno dei compiti del job scheduling consiste proprio nella semplificazione dei processi per
coordinare meglio le attività di elaborazione dei dati aziendali, con il fine ultimo di
migliorare le prestazioni contenendo i costi.
Requisito 11: Pianificare i job attraverso i calendari aziendali
Si potrebbe pensare che una soluzione, il cui obiettivo sia l'esecuzione dei processi,
dovrebbe essere svincolata dal calendario aziendale. Al contrario, è opportuno tenere in
considerazione la concentrazione delle attività nel corso della giornata o in periodi di
tempo più estesi, al fine di individuare eventuali momenti di scarso utilizzo delle risorse
del sistema. Questi possono rivelarsi difficile da rilevare, particolarmente se vi sono utenti
aziendali che lavorano con fusi orari diversi.
© ORSYP 2012 ▪
34 / 40
La complessità derivante da una gestione ottimale del sistema può quindi rendere
necessario un tipo di pianificazione basato sui calendari delle attività. Grazie alla
definizione di un calendario aziendale, è possibile pianificare l'esecuzione di tutta la serie
dei job in modo da utilizzare nel modo più vantaggioso la potenza computazionale
disponibile. I calendari aziendali vengono naturalmente utilizzati anche per programmare
il lavoro in base alla disponibilità dei dati. Sapendo che un insieme di dati sarà disponibile
alla fine di ogni giornata, con questi strumenti è possibile orchestrarne la raccolta anche
attraverso fusi orari diversi e nel pieno rispetto delle norme aziendali.
Requisito 12: Visualizzare le dipendenze e redigere report
Il riutilizzo dei job crea una rete di interdipendenze tra gli oggetti. La soluzione che si
adotta dev'essere in grado di gestire tali oggetti, offrendo anche strumenti di
visualizzazione delle dipendenze tra essi. In questo modo verrà reso più semplice agli
amministratori di sistema l'intervento o la manipolazione dei processi, avendo un quadro
preciso degli effetti che si producono sul resto del sistema.
In ambienti complessi, caratterizzati dalla presenza di numerosi job e flussi di lavoro,
gestire correttamente i processi comporta solitamente la redazione di report per
raccogliere e presentare informazioni essenziali come le dipendenze di un job, la sua
classe di appartenenza, il nome ed altri dati. I report rappresentano un potente strumento
per ottenere il massimo in termini di servizio da sistemi complessi, e per organizzare le
attività in base alle risorse disponibili garantendo le migliori prestazioni.
Requisito 13: Supporto di browser e interfacce per vari dispositivi
È facile prevedere che i team IT si troveranno a gestire sempre più in futuro un numero di
attività informatiche in aumento, data la tendenza in ogni campo del business a fare un
uso sempre maggiore di sistemi computerizzati. È chiaro quindi che una stessa soluzione
dev'essere in grado di supportare più interfacce per gestire e amministrare i job. Gli ultimi
trend che si stanno affermando ora nel mondo dell'informatica favoriscono la diffusione di
browser e interfacce web per i mobile device, i quali abilitano l'utente ad accedere ai dati
anche quando si trova all'esterno del perimetro aziendale.
Per questo motivo, sarebbe bene optare per una soluzione di job scheduling che includa
diverse possibili interfacce, in modo da garantire l'elasticità di accesso alle informazioni,
necessaria a operare negli ambienti dinamici e distribuiti di oggi, insieme alla qualità
dell'esperienza utente, ugualmente essenziale.
Requisito 14: Concatenazione e bilanciamento del carico di job
Abbiamo parlato sopra del tema della modularizzazione degli elementi in un flusso di
lavoro. Ognuno degli elementi che compone un workflow va incluso nel piano di
schedulazione e armonizzato con gli altri. Ad esempio, è possibile strutturare una
© ORSYP 2012 ▪
35 / 40
pianificazione dei lavori in modo estensibile attraverso il meccanismo della nidificazione,
in cui una procedura o una funzione è contenuta in un'altra. Il concatenamento di input e
output rappresenta una delle proposte di valore di base in una soluzione di pianificazione
dei processi IT.
Grazie al bilanciamento del carico di lavoro, anche in base alle regolazioni legate ai
calendari aziendali già visti al Requisito 11, è poi possibile utilizzare sistemi che
consentono di modificare o aggiornare in modo più semplice molti componenti del
sistema, applicando i cambiamenti una volta sola in tutto l'ambiente elaborativo invece di
modificare di volta in volta i singoli job. Il risultato di un flusso di lavoro strutturato in
questo modo è la semplificazione dei processi, che producono maggior valore per
l'azienda e sono gestibili con minori risorse.
Requisito 15: Supporto di un'interfaccia di gestion e object-oriented
La soluzione migliore per la vostra azienda dovrà realizzare un'automazione completa,
che sia al tempo stesso semplice e funzionale. Per ottenere questo occorre un sistema
adeguato di visualizzazione dei job e delle dipendenze tra essi, che purtroppo manca in
molte applicazioni e piattaforme. Invece, una buona soluzione di job scheduling deve
comprendere un'interfaccia per monitorare l'esecuzione delle elaborazioni ed esplorare o
modificare la connessione dei job.
L'approccio visivo per creare e gestire i job assume tanta più rilevanza all'aumentare
della complessità dei progetti o dei flussi di lavoro. Finché il numero di job è limitato, non
ci sono problemi. Ma quando aumenta, e occorre creare legami di sincronia o definire
vincoli sui singoli job, allora diventa fondamentale poter contare sulla visualizzazione
grafica per meglio progettare le attività. Un'interfaccia di gestione orientata agli oggetti e
che comprende tool grafici comporta vantaggi per il business, anche grazie alla riduzione
della probabilità che si verifichino imprevisti, con perdite di tempo e risorse.
Requisito 16:
l'automazione
Predisposizione
di
una
libreria
di
script
per
Gli script sono la colonna portante di qualsiasi soluzione di job scheduling, e in un
ambiente IT sono molte le azioni che si ripetono con regolarità o che possono essere
comprese in un oggetto riutilizzabile. All'inizio di questo capitolo abbiamo sostenuto che
una soluzione di job scheduling è paragonabile ad una cornice, del cui contenuto è
responsabile chi si occupa dei processi informatici aziendali.
In realtà, è possibile popolare il quadro in modo automatico, inserendovi azioni
immediatamente utilizzabili. Disporre di una collezione di job già pronti offre ovvi
vantaggi, ma può anche accelerare la creazione di nuove automazioni o facilitare il
collegamento tra job differenti a seconda delle necessità. Per esempio, se c'è bisogno di
inviare un documento, basterà includere il passaggio nel job del progetto. Vi sono inoltre
numerose attività comuni che si estendono sulle piattaforme di datacenter e applicazioni.
© ORSYP 2012 ▪
36 / 40
Anche se questo metodo da solo non può garantire il soddisfacimento di tutte le vostre
esigenze, una soluzione efficace deve prevedere l'utilizzo di variabili e altri dati dinamici
per personalizzare le fasi di lavoro e le esigenze dell'automazione. Ancora più
importante, i passaggi di processo sono garantiti e testati dal venditore, cosa che riduce il
rischio di errori e le difficoltà in fase di test.
Requisito 17: Supporto ai messag gi di notifica dell’output
Una delle attività più difficili nella creazione di automazioni è costituita dal riconoscimento
dell'output, che si tratti di dati, notifiche o altri tipi di messaggi.
La maggior parte delle automazioni non viene infatti eseguita in modalità interattiva, ma
piuttosto come processi in background, che operano su piattaforme ed applicazioni senza
esporre all'utente connesso le attività in corso. Questo rende difficile rilevare i risultati di
un processo utilizzando unicamente gli strumenti nativi di applicazioni e piattaforme.
Una soluzione di job scheduling efficace esegue gli script nel suo ambiente di runtime, o
all'interno di un ambiente in cui i messaggi di output o relativi ad eventuali errori possono
essere rilevati immediatamente. La stessa soluzione deve inoltre rendere disponibili le
informazioni nella console di un amministratore, per la revisione e l'analisi.
Requisito 18: Realizzazione di un modello centralizzato di sicurezza
L'uso improprio degli script, sia accidentale che intenzionale, è una delle criticità principali
che le aziende si trovano a fronteggiare. È quindi necessario scegliere una soluzione di
job scheduling che comprenda un sistema in grado di bloccare job, schedulazioni e
attività non autorizzate, e che consenta solo a specifici profili di utenti la modifica delle
variabili di elaborazione.
Dotarsi di un modello centralizzato di sicurezza riduce molto il rischio di esecuzioni o usi
impropri degli script. Fornisce inoltre un unico punto di controllo per la gestione e il
monitoraggio delle attività. Centralizzare la struttura delle autorizzazioni è particolarmente
utile quando i datacenter sotto soggetti a specifiche regolamentazioni o a rigidi controlli di
sicurezza.
Requisito 19: Gestione e controllo unico dei cambiamenti
Tra i requisiti fondamentali di una soluzione di job scheduling vi è anche il controllo delle
modifiche apportate al sistema, unitamente allo storico delle automazioni – e relative
revisioni – che sono state implementate. Anche per motivi legati di nuovo alla sicurezza,
quando vengono effettuate modiche è necessario sapere chi ha cambiato cosa, e in che
circostanze questo è avvenuto.
© ORSYP 2012 ▪
37 / 40
La giusta soluzione di job scheduling deve quindi tenere traccia di eventuali revisioni
degli script e automatizzare i processi di controllo.
Una soluzione ottimale dovrà inoltre fornire sistemi per analizzare ogni modifica o
revisione, consentendo di risalire a chi l'ha effettuata.
Requisito 20: Database centralizzato che includa metriche e avvisi
L'ultimo requisito è la presenza di un database centralizzato per il monitoraggio del
sistema e i meccanismi di alert. Abbiamo evidenziato più volte in questo lavoro
l'importanza del concetto stesso di centralizzazione, per garantire un'esecuzione più
rapida ed efficiente delle elaborazioni.
Monitorare lo stato del sistema attraverso una soluzione di job scheduling significa tra
l'altro essere in grado di sincronizzare la comunicazione tra i componenti e gestire
l'elaborazione dei dati tra piattaforme o applicazioni diverse.
I sistemi di allarme possono invece essere attivati anche tramite la posta elettronica, i
programmi di messaggistica istantanea o piattaforme di social media, in modo da
notificare agli utenti se si verificano specifiche condizioni d'interesse.
© ORSYP 2012 ▪
38 / 40
Vincere nel mercato globale: il job scheduling alla base del
successo
Abbiamo illustrato 20 requisiti di alto livello per definire le principali funzionalità richieste
ad una soluzione di pianificazione dei processi informatici aziendali. Questi requisiti
mettono in luce gli elementi critici che tipicamente si trovano in ogni sistema distribuito, e
a cui gli amministratori dovrebbero prestare particolare attenzione. L'obiettivo è il
miglioramento dei flussi di lavoro, pur mantenendo la coerenza tra gli elementi che
compongono il sistema.
Al tempo stesso, esponendo questi principi vi ho raccontato la mia storia. Il progetto di cui
ho parlato all'inizio è stato infatti portato a termine seguendo il metodo sviluppato in
queste pagine. Creare e collegare tra loro le automazioni ha richiesto tempo, lo ammetto,
ma i risultati hanno dato ragione delle risorse impiegate. Un unico sistema centralizzato e
automatizzato si è dimostrato la risposta migliore alle esigenze dell'azienda per cui
lavoravo. Ci ha permesso di “fare di più, con meno”: abbiamo ottenuto grandi vantaggi in
termini di qualità del lavoro, soddisfazione delle persone e riduzione degli errori.
Se dovessi fare di nuovo un lavoro simile, seguirei gli stessi principi cui mi sono ispirato
quella prima volta. Mi auguro che quanto ho appreso possa essere utile anche a voi, per
proseguire sulla strada dell'eccellenza aziendale e perseguire il miglioramento continuo,
che ritengo essere la base del successo nell'era della competizione globale.
© ORSYP 2012 ▪
39 / 40
EMEA Headquarters
Tour Franklin
92042 Paris La Défense
Cedex
France
+33 [0]1 47 73 12 12
www.orsyp.com
–––
Americas Headquarters
300 TradeCenter 128
Suite 5690
Woburn, MA 01801
USA
+1 781 569 5730
–––
APAC Headquarters
Honest Motors Building
9-11 Leighton Road
Causeway Bay
Hong Kong, China
+852 2575 5966
© Copyright 2012. All rights reserved. ORSYP and its logo are trademarks of ORSYP S.A.S. All other trademarks in this
document are the property of their respective owners. Specifications are subject to change without notice.