Sviluppo Code-driven e riusabilità del codice: CMI e Features per D8

Post on 13-Apr-2017

112 views 0 download

Transcript of Sviluppo Code-driven e riusabilità del codice: CMI e Features per D8

CMI e Features per D8SVILUPPO CODE-DRIVEN E RIUSABILITÀ DEL CODICE:

Speaker: Adriano Cori @bmeme

Di cosa parleremo

CONFIGURATION MANAGEMENT INITIATIVE1PRESENTAZIONE

GESTIONE DELLE CONFIGURAZIONI

WORKFLOW DI SVILUPPO IN DRUPAL

IL RUOLO DI FEATURES IN DRUPAL 8

ESEMPI DI UTILIZZO DEL CMI

Le novità di Drupal 8

ALCUNI DEI CAMBIAMENTI PIÙ IMPORTANTI:2INTRODUZIONE

• Symfony2 • YAML • Twig • Entity • hook_skywalker• Nuovi moduli Core

Le novità di Drupal 8

IL CALCIOMERCATO DELLA “DRUPAL CORE F.C.”2INTRODUZIONE • Entity reference

• Entity translation • Migrate • UUID • Views • VBO • …

• Nuovi moduli Core

• Features ?

Configur

ation

Manageme

nt Initi

ative

Keep calm and

Drupal ottoottoosho

CONFIGURATION MANAGEMENT INITIATIVE

IN COSA CONSISTE PRATICAMENTE?3CMI

E’ lo strumento che ci consente di gestire le configurazioni della nostra istanza Drupal, dandoci la possibilità di tracciarne i cambiamenti e di rilasciarle nei vari ambienti dell’applicazione.

configurazioni

CONFIGURAZIONI IN DRUPAL 7

VARIABLES

3CMI

Drupal 7 consente di memorizzare dati più o meno complessi all’interno della tabella variable sotto forma di valori serializzati (value) identificabili da una chiave (name).

Le operazioni di CRUD delle variabili sono rese disponibili da queste tre funzioni:

• variable_set($name, $value);• variable_get($name, $default_value);• variable_del($name);

configurazioni

CONFIGURAZIONI IN DRUPAL 7

3CMIconfigurazioni

CONFIGURAZIONI IN DRUPAL 7

VARIABLES

3CMI

In Drupal 7 le configurazioni possono essere gestite nei seguenti modi: - manualmente - hook_install() / hook_update_N() - settings.php - Features

configurazioni

CONFIGURAZIONI IN DRUPAL 7

GESTIONE MANUALE

3CMI

Consiste nel riportare nei vari ambienti dell’applicazione ogni configurazione che è stata fatta nel proprio ambiente di sviluppo locale.configurazioni

“Ma piuttosto cambio lavoro!”

• Error-prone • Impossibilità di tener

traccia dei cambiamenti

• All’aumentare delle configurazioni da apportare, aumenta l’effort

CONFIGURAZIONI IN DRUPAL 7

HOOK_INSTALL() / HOOK_UPDATE_N()

3CMI

Consiste nel settare il valore di una o più variabili in fase di installazione del proprio modulo oppure quando si esegue lo script di aggiornamento update.php

configurazioni

“Vabbè ma famme un esempio pratico su”

3CMIconfigurazioni

“Ma piuttosto cambio lavoro!”

CONFIGURAZIONI IN DRUPAL 7

GRANDI POTENZIALITÀ MA CI SONO DEI CONTRO:

3CMI

- per le variabili più complesse (views, fields, ecc..) l’export potrebbe risultare non così semplice.

- necessità di un developer per poter esportare le configurazioni sul codice.

- rischio di avere una serie infinita di hook_update_N() all’interno del mio file *.install per gestire eventuali aggiornamenti delle configurazioni.

- impossibilità di tracciare eventuali modifiche apportate dagli utenti del sito rispetto alle configurazioni riportate sul codice.

configurazioni

CONFIGURAZIONI IN DRUPAL 7

SETTINGS.PHP

3CMI

E’ possibile settare il valore di qualsiasi variabile all’interno del file settings.php, utilizzando l’array $conf, andando così a sovrascrivere i valori precedentemente salvati sul database.

configurazioni

CONFIGURAZIONI IN DRUPAL 7

SETTINGS.PHP

3CMI

- utile quando si vuol configurare un set di variabili in base all’ambiente in cui ci si trova.

- necessità di un developer per poter esportare le configurazioni all’interno del file.

configurazioni

“Ma mo’ che è sta zozzeria?”

“Ma piuttosto cambio lavoro!”

CONFIGURAZIONI IN DRUPAL 7

CONFIGURAZIONI IN DRUPAL 7

FEATURES

3CMIconfigurazioni

CONFIGURAZIONI IN DRUPAL 7

FEATURES

3CMI

Features è un modulo contrib che nasce con l’intento iniziale di racchiudere, all’interno di unità funzionali, un set di configurazioni da poter riutilizzare su istanze diverse di Drupal.

E’ diventato, in realtà, un modulo che genera moduli, all’interno dei quali vengono messe le configurazioni del nostro sito e che ci offre la possibilità di tener traccia dei cambiamenti avvenuti su tali configurazioni.

E’ il sistema di gestione delle configurazioni più utilizzato su Drupal 7 (per mancanza di alternative).

configurazioni

CONFIGURAZIONI IN DRUPAL 8

CONFIGURATIONS

3CMI

Drupal 8 consente di memorizzare dati più o meno complessi all’interno della tabella config sotto forma di valori serializzati (data) identificabili da una chiave (name) ed un raggruppamento (collection).

COSA CAMBIA • Le configurazioni in Drupal 8 possono essere

memorizzate su files invece che sul DB • I file di configurazione sono scritti in formato

YAML (.yml) • Possibilità di tener traccia dei cambiamenti

utilizzando sistemi di versioning del codice

configurazioni

CONFIGURAZIONI IN DRUPAL 8

3CMIconfigurazioni

CONFIGURAZIONI IN DRUPAL 8

3CMIconfigurazioni

CONFIGURATION STORAGE MECHANISMS

DatabaseStorage

FilesystemStorage

Active config config/active

Sync config/sync config/sync

Staging config/staging

active: contiene le configurazioni attualisync: contiene le configurazioni che devono essere sincronizzate con active

3CMIconfigurazioni

“Ma piuttosto cambio lavoro!”

CONFIGURAZIONI IN DRUPAL 8

DATABASE STORAGE MECHANISM

FILESYSTEM STORAGE MECHANISM

STORAGE MECHANISMSMSMSMSMS

CONFIGURAZIONI IN DRUPAL 8

DRUPAL 8 INTRODUCE NUOVI TIPI DI CONFIGURAZIONI:

3CMI

• Simple configurations (config_object) • Sono quanto di più avvicinabile al sistema di variabili di

Drupal 7. • Sono oggetti configurativi per la gestione di

impostazioni di base che risultino in valori booleani, interi, stringhe ecc.

• Configuration Entities (config_entity) • Memorizzano oggetti configurativi creati dagli utenti

del sito (es: “image style”) • State API

• Sono le configurazioni che memorizzano informazioni sullo stato del sistema.

• Non abbiamo interesse a rilasciarle su ambienti diversi (es: la data dell’ultimo passaggio del cron)

configurazioni

CONFIGURAZIONI IN DRUPAL 8

3CMIconfigurazioni

OGNI MODULO PUÒ DEFINIRE LE PROPRIE CONFIGURAZIONI

install e schema sono le directory che fanno al caso nostro

CONFIGURAZIONI IN DRUPAL 8

CONFIG FILE

3CMIconfigurazioni

SCHEMA FILE

CONFIG FILE

SCHEMA FILE

CONFIG FILE

SCHEMA FILE

CONFIGURAZIONI IN DRUPAL 8

3CMIconfigurazioni

SCHEMA FILE

“The primary reason schema files were introduced into Drupal 8 is multilingual

support. A tool was needed to identify all translatable strings within the shipped

configuration.

The secondary reason is to provide actual translation forms for configuration based on your data and to expose translatable configuration pieces to external tools.”

- fonte: Drupal 8 Configuration Management -

…PERCHÉ?

CONFIGURATION OBJECTS• accessibili tramite il servizio configFactory • per accedere in modifica alle configurazioni bisogna

caricare la versione modificabile del file. • clear() rimuove un elemento dal config_object. • save() non deve essere mai chiamato dopo il delete() • delete() cancella l’intero config_object

CONFIGURAZIONI IN DRUPAL 8

• \Drupal::config($name) == \Drupal::configFactory()->get($name)

CONFIGURATION ENTITIES• entity_load(), entity_create(), entity_save(),

ecc sono tutte funzioni deprecate • si accede alle istanze delle entity sfruttando

il metodo statico ::load() • get() set() e delete() vi ricordano qualcosa?

CONFIGURAZIONI IN DRUPAL 8

4WORKFLOW DI SVILUPPO IN DRUPAL

Building Development

Configurations Management

Packaging

Deploy

Configurations Management

WORKFLOW DI SVILUPPO IN DRUPAL

D7

FeaturesFeature create/update

Deploy

Feature revert

COME UTILIZZARE ACTIVE E SYNC

active sync

exportdevelopment

active sync

importproduction

Deploy

4WORKFLOW DI SVILUPPO IN DRUPAL

WORKFLOW DI SVILUPPO IN DRUPAL

Building Development

4WORKFLOW DI SVILUPPO IN DRUPAL

PURTROPPO LA VITA VERA È UN’ALTRA COSA…

WORKFLOW DI SVILUPPO IN DRUPAL

possibile soluzione PURTROPPO LA VITA VERA È UN’ALTRA COSA…

WORKFLOW DI SVILUPPO IN DRUPAL

ALLINEARE SVILUPPO CON PRODUZIONE

active sync

export

development

active sync

import

production

Download Export

4WORKFLOW DI SVILUPPO IN DRUPAL

WORKFLOW DI SVILUPPO IN DRUPAL

La domanda sorge spontanea…

“Ho capito ma… e mo’ co Ficiur che ce faccio?!”

5IL RUOLO DI FEATURES IN DRUPAL 8

IL RUOLO DI FEATURES IN DRUPAL 8

FEATURESFeatures è un modulo contrib che nasce con l’intento iniziale di racchiudere, all’interno di unità funzionali, un set di configurazioni da poter riutilizzare su istanze diverse di Drupal.

E’ diventato, in realtà, un modulo che genera moduli, all’interno dei quali vengono messe le configurazioni del nostro sito e che ci offre la possibilità di tener traccia dei cambiamenti avvenuti su tali configurazioni.

E’ il sistema di gestione delle configurazioni più utilizzato su Drupal 7 (per mancanza di alternative).

5IL RUOLO DI FEATURES IN DRUPAL 8

ESEMPI DI UTILIZZO DEL CMI

Nei seguenti esempi, dati due ambienti completamente identici, che chiameremo Development e Production, vedremo come funziona in pratica il flusso di lavoro descritto precedentemente, in entrambe le direzioni (dev -> prod; prod -> dev)

6ESEMPI DI UTILIZZO DEL CMI

“Daje va, famme sogna’…”