venerdì 2 maggio 2014

LA PROGRAMMAZIONE DICHIARATIVA E PROCEDURALE (E COME HO SBAGLIATO TUTTO)

Durante una recente NetOps-focalizzato la discussione cercando di capire dove Puppet / Chef / Ansible / ... senso nel nuovo mondo networking brave SDN orientata ho fatto questa analogia: " Puppet manifesto è come Prolog , configurazione del router è come Java o C + + . "E 'un bel morso suono. E 'anche totalmente sbagliato.
Se non avete mai incontrato Prolog, si potrebbe considerare fortunato.Oppure si potrebbe desiderare di capire di cosa si tratta (attenzione: si potrebbe fare esplodere la testa). Proprio scherzando, in realtà ho molto apprezzato nei miei giorni di programmazione.

Dichiarativa contro programmazione procedurale

In poche parole, dichiarative di programmazione linguaggi consentono di dire che cosadeve essere fatto, non come farlo (che è ciò che procedurali di programmazione linguaggi sono tutti circa).
Purtroppo nulla di buono accade solo per accadere (almeno non nel mondo IT, o potrebbe avere a che fare con la seconda legge della termodinamica), avete bisogno diqualcosa che renderà la transizione (o trovare un percorso) da dove siamo ora al stato finale (la cosa ). La cosa potrebbe essere un interprete del linguaggio (nel caso di Prolog eseguire una ricerca esaustiva dell'albero soluzione per capire se è in grado di soddisfare i requisiti specificati nel programma dichiarativo) o un agente Puppet che:
  • Confronta lo stato attuale del sistema (esempio: web server) con lo stato desiderato (Puppet manifesto);
  • Cifre fuori le differenze;
  • Applica le modifiche (modifica di configurazione, la creazione di file, l'esecuzione di comandi ...) che devono essere fatte per la transizione al sistema dallo stato attuale allo stato desiderato.
Si tratta di configurazioni del router ovvie non sono programmi procedurali - dicono un dispositivo (o software) ciò che deve essere fatto non come quel comportamento dovrebbe essere attuato. Nella maggior parte dei casi non si può influenzare i dettagli di implementazione; Applet EEM sono un'eccezione evidente, ma l'unico motivo che risiedono nella configurazione del router è la mancanza di decenti strumenti di editing di testo sui dispositivi di rete comodità di manipolare configurazione del router rispetto a qualsiasi altra cosa.

Quindi qual è la differenza?

La vera differenza tra i manifesti di marionette e configurazioni del router è il livello di astrazione. Manifesti Puppet dovrebbero concentrarsi sulle risorse (esempio: VLAN) e lo stato desiderato di risorse (esempio: 10 VLAN presenti sulla porta GigabitEthernet0 / 1), non sui dettagli di implementazione .
Ho detto dettagli di implementazione ? Non è che la programmazione procedurale? No, siamo ancora nel regno della programmazione dichiarativa (non abbiamo mai dire gli interruttori come a implementare VLAN, vero?), ma lavorando ad un livello inferiore di astrazione e si occupano di come i singoli dispositivi (o venditori) si aspettano che le cose siano dichiarata.
Confondere? Certo che lo è, ma non preoccupatevi. Non è più confuso di altre cose che dobbiamo fare con . Hai solo bisogno di un po 'di pratica ... e non dimenticare diconcentrarsi sui principi, non i dettagli di implementazione .

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.