SlideShare a Scribd company logo
CMI e Features per D8
SVILUPPO CODE-DRIVEN E RIUSABILITÀ DEL CODICE:
Speaker: Adriano Cori @bmeme
Dicosaparleremo
CONFIGURATION MANAGEMENT INITIATIVE
1PRESENTAZIONE
GESTIONE DELLE CONFIGURAZIONI
WORKFLOW DI SVILUPPO IN DRUPAL
IL RUOLO DI FEATURES IN DRUPAL 8
ESEMPI DI UTILIZZO DEL CMI
LenovitàdiDrupal8
ALCUNI DEI CAMBIAMENTI PIÙ IMPORTANTI:
2INTRODUZIONE
• Symfony2
• YAML
• Twig
• Entity
• hook_skywalker
• Nuovi moduli Core
LenovitàdiDrupal8
IL CALCIOMERCATO DELLA “DRUPAL CORE F.C.”
2INTRODUZIONE • Entity reference
• Entity translation
• Migrate
• UUID
• Views
• VBO
• …
• Nuovi moduli Core
• Features ?
Configuration
Management Initiative
Keep calm
and
Drupal ottoottoosho
CONFIGURATIONMANAGEMENT
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
CONFIGURAZIONIINDRUPAL7
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
CONFIGURAZIONIINDRUPAL7
3CMI
configurazioni
CONFIGURAZIONIINDRUPAL7
VARIABLES
3CMI
In Drupal 7 le configurazioni possono essere
gestite nei seguenti modi:
- manualmente
- hook_install() / hook_update_N()
- settings.php
- Features
configurazioni
CONFIGURAZIONIINDRUPAL7
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
CONFIGURAZIONIINDRUPAL7
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”
3CMI
configurazioni
“Ma piuttosto cambio lavoro!”
CONFIGURAZIONIINDRUPAL7
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
CONFIGURAZIONIINDRUPAL7
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
CONFIGURAZIONIINDRUPAL7
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!”
CONFIGURAZIONIINDRUPAL7
CONFIGURAZIONIINDRUPAL7
FEATURES
3CMI
configurazioni
CONFIGURAZIONIINDRUPAL7
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
CONFIGURAZIONIINDRUPAL8
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
CONFIGURAZIONIINDRUPAL8
3CMI
configurazioni
CONFIGURAZIONIINDRUPAL8
3CMI
configurazioni
CONFIGURATION STORAGE MECHANISMS
Database
Storage
Filesystem
Storage
Active config config/active
Sync config/sync config/sync
Staging config/staging
active: contiene le configurazioni attuali

sync: contiene le configurazioni che devono essere sincronizzate con active
3CMI
configurazioni
“Ma piuttosto cambio lavoro!”
CONFIGURAZIONIINDRUPAL8
DATABASE STORAGE MECHANISM
FILESYSTEM STORAGE MECHANISM
STORAGEMECHANISMSMSMSMSMS
CONFIGURAZIONIINDRUPAL8
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
CONFIGURAZIONIINDRUPAL8
3CMI
configurazioni
OGNI MODULO PUÒ DEFINIRE LE PROPRIE CONFIGURAZIONI
install e schema sono le directory che fanno al caso
nostro
CONFIGURAZIONIINDRUPAL8
CONFIG FILE
3CMI
configurazioni
SCHEMA FILE
CONFIG FILE
SCHEMA FILE
CONFIG FILE
SCHEMA FILE
CONFIGURAZIONIINDRUPAL8
3CMI
configurazioni
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
CONFIGURAZIONIIN DRUPAL8
• 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?
CONFIGURAZIONIIN DRUPAL8
4
WORKFLOW DI
SVILUPPO IN
DRUPAL
Building Development
Configurations Management
Packaging
Deploy
Configurations Management
WORKFLOWDISVILUPPOINDRUPAL
D7
FeaturesFeature create/update
Deploy
Feature revert
COME UTILIZZARE ACTIVE E SYNC
active sync
exportdevelopment
active sync
import
production
Deploy
4
WORKFLOW DI
SVILUPPO IN
DRUPAL
WORKFLOWDISVILUPPOINDRUPAL
Building Development
4
WORKFLOW DI
SVILUPPO IN
DRUPAL
PURTROPPO LA VITA VERA È UN’ALTRA COSA…
WORKFLOWDISVILUPPOINDRUPAL
possibile soluzione PURTROPPO LA VITA VERA È UN’ALTRA COSA…
WORKFLOWDISVILUPPOINDRUPAL
ALLINEARE SVILUPPO CON PRODUZIONE
active sync
export
development
active sync
import
production
Download Export
4
WORKFLOW DI
SVILUPPO IN
DRUPAL
WORKFLOWDISVILUPPOINDRUPAL
Ladomandasorgespontanea…
“Ho capito ma…
e mo’ co Ficiur
che ce faccio?!”
5
IL RUOLO DI
FEATURES IN
DRUPAL 8
IL RUOLODIFEATURESIN DRUPAL8
FEATURES
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).
5
IL RUOLO DI
FEATURES IN
DRUPAL 8
ESEMPIDIUTILIZZODELCMI
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)
6
ESEMPI DI UTILIZZO
DEL CMI
“Daje va,
famme
sogna’…”
Sviluppo Code-driven e riusabilità del codice: CMI e Features per D8
Sviluppo Code-driven e riusabilità del codice: CMI e Features per D8

More Related Content

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

Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
DrupalDay
 
Drupal 8 - dal download del core alla pubblicazione in produzione
Drupal 8 - dal download del core alla pubblicazione in produzioneDrupal 8 - dal download del core alla pubblicazione in produzione
Drupal 8 - dal download del core alla pubblicazione in produzione
sparkfabrik
 
Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015
Kelyon Srl
 
Drupal Day 2015 - Drupal 8 dal download del core alla pubblicazione in prod...
Drupal Day 2015 -  Drupal 8  dal download del core alla pubblicazione in prod...Drupal Day 2015 -  Drupal 8  dal download del core alla pubblicazione in prod...
Drupal Day 2015 - Drupal 8 dal download del core alla pubblicazione in prod...
Vincenzo Di Biaggio
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8
Luca Lusso
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
giacomos
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Eugenio Minardi
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Wellnet srl
 
100526 Sa 1.1 Platespin Forge Webinar (2)
100526 Sa 1.1 Platespin Forge Webinar (2)100526 Sa 1.1 Platespin Forge Webinar (2)
100526 Sa 1.1 Platespin Forge Webinar (2)
antonio_tonani
 
Enterprise Applications - Angular Day 2018
Enterprise Applications - Angular Day 2018Enterprise Applications - Angular Day 2018
Enterprise Applications - Angular Day 2018
Paolo Galfione
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
Florence Consulting
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Steve Maraspin
 
Webinar: "Il database: l’equipaggiamento su cui fare affidamento"
Webinar: "Il database: l’equipaggiamento su cui fare affidamento"Webinar: "Il database: l’equipaggiamento su cui fare affidamento"
Webinar: "Il database: l’equipaggiamento su cui fare affidamento"
Emerasoft, solutions to collaborate
 
Drupal - per chi vuole iniziare
Drupal - per chi vuole iniziareDrupal - per chi vuole iniziare
Drupal - per chi vuole iniziare
Salvatore Paone
 
Pervasive Encryption for DB2
Pervasive Encryption for DB2Pervasive Encryption for DB2
Pervasive Encryption for DB2
Luigi Perrone
 
Relazione Progetto cRIO
Relazione Progetto cRIORelazione Progetto cRIO
Relazione Progetto cRIO
Sebastiano Merlino (eTr)
 
Relazione Progetto cRio
Relazione Progetto cRioRelazione Progetto cRio
Relazione Progetto cRio
Dario Mazza
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSMAU
 

Similar to Sviluppo Code-driven e riusabilità del codice: CMI e Features per D8 (20)

Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
 
Drupal 8 - dal download del core alla pubblicazione in produzione
Drupal 8 - dal download del core alla pubblicazione in produzioneDrupal 8 - dal download del core alla pubblicazione in produzione
Drupal 8 - dal download del core alla pubblicazione in produzione
 
Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015Managing configuration in Drupal 8 - SIDCamp 2015
Managing configuration in Drupal 8 - SIDCamp 2015
 
Drupal Day 2015 - Drupal 8 dal download del core alla pubblicazione in prod...
Drupal Day 2015 -  Drupal 8  dal download del core alla pubblicazione in prod...Drupal Day 2015 -  Drupal 8  dal download del core alla pubblicazione in prod...
Drupal Day 2015 - Drupal 8 dal download del core alla pubblicazione in prod...
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
 
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8Come sfruttare tutte le potenzialità di Symfony in Drupal 8
Come sfruttare tutte le potenzialità di Symfony in Drupal 8
 
100526 Sa 1.1 Platespin Forge Webinar (2)
100526 Sa 1.1 Platespin Forge Webinar (2)100526 Sa 1.1 Platespin Forge Webinar (2)
100526 Sa 1.1 Platespin Forge Webinar (2)
 
Enterprise Applications - Angular Day 2018
Enterprise Applications - Angular Day 2018Enterprise Applications - Angular Day 2018
Enterprise Applications - Angular Day 2018
 
Slide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdfSlide Mulesoft Meetup Milano #10.pdf
Slide Mulesoft Meetup Milano #10.pdf
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
ORM Java - Hibernate
ORM Java - HibernateORM Java - Hibernate
ORM Java - Hibernate
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
Webinar: "Il database: l’equipaggiamento su cui fare affidamento"
Webinar: "Il database: l’equipaggiamento su cui fare affidamento"Webinar: "Il database: l’equipaggiamento su cui fare affidamento"
Webinar: "Il database: l’equipaggiamento su cui fare affidamento"
 
Drupal - per chi vuole iniziare
Drupal - per chi vuole iniziareDrupal - per chi vuole iniziare
Drupal - per chi vuole iniziare
 
Pervasive Encryption for DB2
Pervasive Encryption for DB2Pervasive Encryption for DB2
Pervasive Encryption for DB2
 
Relazione Progetto cRIO
Relazione Progetto cRIORelazione Progetto cRIO
Relazione Progetto cRIO
 
Relazione Progetto cRio
Relazione Progetto cRioRelazione Progetto cRio
Relazione Progetto cRio
 
Smau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del ceroSmau milano 2012 massimiliano del cero
Smau milano 2012 massimiliano del cero
 

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