SlideShare a Scribd company logo
1 of 83
Download to read offline
DrupalCon
Dublin
2016
Capgemini - Digital Factory - Nantes
Yann Jajkiewicz
@yjajkiew
https://yann.me
Jérémy Greffin
@jeremygreffin
Github : jgreffin
DrupalCon Dublin 2016
Introduction
3 joursAvec jusqu’à 11 conférences en parallèle
10 667Tasses de café
1800Personnes sur les 5 jours
Timeline
DevOps Drupal Echange
DevOps
Docker
From socketwench
https://goo.gl/RFJ6Un
Why Docker ?
› Containers
› Sandboxes everything
› Instructions aren’t enough
Docker vs Vagrant :
› Vagrant = multiple VM
› Docker = 1 VM for multiple containers
Physical hardware
Host OS
Hyperviseur
VM OS VM OS VM OS VM OS
Server
A
Server
B
Server
C
Server
D
Vagrant :
Physical hardware
Host OS
Container
A
Docker :
Docker utilities
Linux Kernel
Docker engine
Container
B
Container
C
Hyperviseur
How to Docker ?
Docker files
› Construction d’une image
› Description de l’environnement en YAML
› 1 fichier par processus
Docker compose
› Automatisation du déploiement des images
› Définition de l’architecture
› 1 commande pour tout installer
Docker & Drupal
Go shopping...
› Docker4Drupal
› Redis
› Memcached
› MySQL, MariaDB
› D7 & D8
› . . .
… or build your own
DevOps
Kubernetes
From tpryan
https://goo.gl/3k23PK
Problème
Gestion complexe des VMs
et des containers
Kubernetes
Solution
Kubernetes gère “magically”
différents containers au sein
de différentes VMs
Kubernetes : késako
› Open Source
› Started by Google
› Système d’orchestration de containers
Paradigme :
› Build scripts VS Desired state
› Children VS Employees
Kubernetes : paradigme
Employee
“We had a tough day, go
home and get some sleep”
Child
Go upstairs
Get undressed
Put on pajamas
Brush your teeth
Kubernetes : how it works
› Docker files
› Pods (1 or + containers), YAML style
› Pods controller :
› Réplication, déploiement, service
› Gestion des environnements (prod, test)
› Autoscaling
› Logging, monitoring, web interfacing, cluster
Docker
compose
Docker Machine
Docker
Kubernetes
Multiple
containers on
same localhost
Cluster of
container hosts
replication
orchestration
scheduling
Manage
Remote
Container
Hosts
Launch Container hosts in several clouds
Everything at Google runs on Containers
› Gmail, Web Search, Maps,...
› MapReduce, batch,...
› GFS, Colossus,...
› Google Platform (VMs run on containers
underneath everything)
DevOps
Jenkins 2
Pipeline
From aroq & shumushin
https://goo.gl/gahNsm
Why Jenkins ?
› Release process :
› Frequent
› Automated
› Repeatable
› Lowrisk
› Build, deploy, test, release
› Continuous delivery
› Continuous deployment
Jenkins : Pipeline
› Plugin
› Jenkins 1 Workflow → Jenkins 2 Pipeline
› Can survive restarts
› Pausable (for human input)
› BlueOcean Pugin → better GUI
› Jenkinsfile : container for the pipeline
› Multibranch pipelines : automatic
pipeline creation for branches
Jenkins : pratiques Drupal
› Ne pas commit “vendor”
› Pas de composer install ou update en PROD
Solutions :
› Build, tarball, sync (doesn’t work with Acquia)
› Target repo : commit > CI > Build > commit >
deploy
Jenkins : workflow
Git commit &
push
Jenkins
Pipeline
Gitlab webhook
Init Config
Build
Stage
prepare
Stage deployStage testing
Prod prepare Prod deploy Prod testing Finalize
Jenkins : tools
Jenkins : tools
› Docman - one or more source repos +
docman config > docman > target repo
› Druflow - deploy drupal-procedures
› Drush - especially drush aliases
› Behat - testing framework
› Pipeline - to orchestrate
› Pipeline libraries - make it DRY
Drupal
Performances
Redis or
Memcache
Web
Server
Web
Server
Web
Server
Web
Server
Bottleneck
Traditional caching implementation
By David Strauss
LCache
It combines:
› A well established architectural patterns
from modern CPU architecture
From platform.sh
https://goo.gl/1mdkVT
Core 0
Existing solutions: Multi-Core Processors
CPU
Core 1
CPU
L1 cache L1 cache
L2 cache
LCache
It combines:
› A well established architectural patterns
from modern CPU architecture
› Efficient data propagation from mysql’s
row-level replication
From platform.sh
https://goo.gl/1mdkVT
› Experience on Valhalla to provide an
efficient website object caching
Better
› Frequently read
› Rarely written
› Large
LCache
Worse
› Read once or not at all
› Things handleable
earlier in the stack
› Keys updated often
› Clearing 100+ keys with
a tag (because of
replication)
From platform.sh
https://goo.gl/1mdkVT
D8 : practical caching
3 méthodes de cache :
› Cache anonyme
› Reverse proxy caching
› Cache authentifié
From platform.sh
https://goo.gl/1mdkVT
D8 : practical caching
› Cache anonyme:
› Module : Internal page cache
› Activé par défaut dans D8
› Page cache middleware
› Default request policy : no CLI, no session
› Default response policy : no kill switch, no
“no_cache” route, no server errors
From platform.sh
https://goo.gl/1mdkVT
› Cache anonyme :
› Kill switch
Drupal::service(‘ page_cache_kill_switch ’)->trigger();
› No_cache route
system.cron:
path: ‘cron/{key}’
defaults:
_controller: ‘DrupalsystemCronController::run’
options:
no_cache: TRUE
From platform.sh
https://goo.gl/1mdkVT
› Reverse proxy caching :
› Varnish, CDN, ...
› Important : définir le “page maximum age”
› Définir le reverse proxy dans settings.php
$settings[‘reverse_proxy’] = TRUE;
$settings[‘reverse_proxy_addresses’] = array(‘127.0.0.1’, …);
$settings[‘reverse_proxy_header’] = ‘X_CLUSTER_CLIENT_IP;
From platform.sh
https://goo.gl/1mdkVT
› Cache authentifié :
› Username block depends on user logged in
› Admin links depends on permissions
› Help block depends on URL
› Solution : cache contexts
› contexts => [‘user’]
› contexts => [‘user.permissions’]
› contexts => [‘url’]
From platform.sh
https://goo.gl/1mdkVT
› Cache authentifié :
› How to invalidate ?
› Invalidate dependencies ?
› Solution : cache tags
› tags => [‘node_list’]
› tags => [‘user:1]
› tags => [‘node:1’]
From platform.sh
https://goo.gl/1mdkVT
› Cache authentifié :
› How to decide to cache ?
From platform.sh
https://goo.gl/1mdkVT
› Cache authentifié :
› Exemple :
› Metadata :
From platform.sh
https://goo.gl/1mdkVT
D8 : practical caching
› Cacheability debugging :
› Module renderviz : permet de voir les
metadata dans l’inspecteur du navigateur
From platform.sh
https://goo.gl/1mdkVT
Drupal
ElasticSearch
Drupal & search
› Core module for search
› Last significant update on Drupal 4.7
Search API
› Abstraction of SolR
› Configuration
› Hard to customize
Search
› Fast
› Text analysis
› Facets
Exemples : Wikipedia, Amazon, Github, ...
› Open source project
› Developer-Friendly RESTful API
How to use :
- Get it
- Unzip it
- Run it
› 1 exemple : Save requests
-> Percolator
Index content VS search query
› How to start ?
2 ways :
➔ Combine with search API
➔ Custom connectors with . . .
◆ Friendly API
◆ Custom code
https://www.drupal.org/project/elasticsearch_helper
Drupal
Bonnes pratiques
Configuration management
› Export/import configuration
› Configuration installer : installation profile, UI
› Override local configuration : settings.php
› Drush can ignore configurations about modules
› Drush_cmi_tools : use a YAML list of ignored
configurations
› Configuration split : blacklist, ignore set, entities
From pescetti, ademarco, bircher
https://goo.gl/MSjK3T
Configuration management
› Use Git as parallel development
› Careful about merge, workflow
› Safe : export, commit, merge, import, push
› Features for D8 :
› analyzes and automatically packages up site
configuration into a set of features
› Only for development purposes From pescetti, ademarco, bircher
https://goo.gl/MSjK3T
Configuration management
› Client messing with production configuration
› Lock configuration on production (settings.php)
› Export from prod and merge to dev
› Configuration split : choose what to keep
› Deploy content
› Use migrate on events
› Default_content module : any module
provides hal+json for entities
› Deploy module : stage and preview content
From pescetti, ademarco, bircher
https://goo.gl/MSjK3T
Configuration management : modules
› Config_installer : install site from config
› Config_readonly : lock conf via UI
› Config_update : diff between original & active
› Config_devel : helps developing config
› Config_split : import/export filtered config
› Config_tools : automatically commit config
changes to git
› Features : bundle config for re-use
› Config_sync : safely import config from
updated modules From pescetti, ademarco, bircher
https://goo.gl/MSjK3T
Drupal
Migration
Migrate with D8
1. Requirements
2. Anatomy of a migration
3. Migration Framework
4. Performance tips
1. REQUIREMENTS
1. Migrate is in core !
Tree new modules
› Migrate
Handle migration. Framework.
› Migrate Drupal
Contains migration from D6 & D7
› Migrate Drupal UI
The older migrate UI (new in 8.1.x)
1. Migrate is in core !
How to execute migrations ?
› UI ?
› Drush command ?
Contrib to Migrate tools & Migrate Plus
2. ANATOMY OF A MIGRATION
2. Workflow of a migration
DestinationProcess
Process
Process
Source
DEFINITIONS
Yaml Files.
Custom files
2. In files
PLUGINS
PHP Files
Core or custom files
Types:
› Source
› Process
› Destination
› Builder
› ID Map
An easy example
DEFINITION
config/install/migrate_plus.migration.article_node.yml
PLUGINS
src/Plugin/migrate/source/ArticleNode.php
EXECUTION
Only with Drush8 (8.1-dev) and migrate_tools enabled
3. PLUGINS
3. Source
Here we tell SqlBase:
- Which Database is the Source
3. Source
- And which Plugin will make the Query
3. Destination
How and where to store the data
- entity:<place-here-an-entity>
Need more destination plugins?
⇒ Search for “destination:” in core
3. ID MAPPING
How Migrate associates old rows with new rows
3. PROCESS
How we transform each field, each file or data.
You are able to:
› Map fields: Same value as origin.
› Modify: Change or process the value.
› Add: Create new fields from other fields or calculate
these fields.
3. PROCESS
Map fields. Values are equal in both sides
3. PROCESS
DefaultValue. Add a default value
3. PROCESS
Callable. Values are related but a process is
needed with a function
3. PERFORMANCE TIPS
4. Performance tips
1. Hardware improvements (ssd, cpu,..)
2. Disabling functionalities (hook, modules)
3. Incremental migration (hash)
4. Multithreaded migrations
4. Performance tips
$ drush mi cm_articles_1_400 && 
drush mi cm_articles_401_800 &&
D8 : Bonnes pratiques en vrac
› Drush is 10x faster than composer
› Librairie “composer-patches” : appliquer des
patchs via composer
› Pre-commit hook : PHP Lint check
› PHPCBF : PHP Code Beautifier & Formatter
› Kint : debug in twig
› Smacks: organize CSS & JS
› Templating : set var in twig (no preprocess)
Bonus D7 : drush unsuck
MERCI !
Questions ?
Meetup - retour sur la DrupalCon Dublin 2016

More Related Content

What's hot

[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...ZeroTurnaround
 
DCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDocker, Inc.
 
Live deployment, ci, drupal
Live deployment, ci, drupalLive deployment, ci, drupal
Live deployment, ci, drupalAndrii Podanenko
 
Modernize Your Drupal Development
Modernize Your Drupal DevelopmentModernize Your Drupal Development
Modernize Your Drupal DevelopmentChris Tankersley
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with dockerGiacomo Bagnoli
 
Hide your development environment and application in a container
Hide your development environment and application in a containerHide your development environment and application in a container
Hide your development environment and application in a containerJohan Janssen
 
Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015Giorgio Cefaro
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Bo-Yi Wu
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionBen Hall
 
Deploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersDeploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersBen Hall
 
JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具謝 宗穎
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Ben Hall
 
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Rajmahendra Hegde
 
Drupal contrib module maintaining
Drupal contrib module maintainingDrupal contrib module maintaining
Drupal contrib module maintainingAndrii Podanenko
 
Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"LogeekNightUkraine
 

What's hot (20)

[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
 
DCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best PracticesDCEU 18: Dockerfile Best Practices
DCEU 18: Dockerfile Best Practices
 
Live deployment, ci, drupal
Live deployment, ci, drupalLive deployment, ci, drupal
Live deployment, ci, drupal
 
Modernize Your Drupal Development
Modernize Your Drupal DevelopmentModernize Your Drupal Development
Modernize Your Drupal Development
 
Streamline your development environment with docker
Streamline your development environment with dockerStreamline your development environment with docker
Streamline your development environment with docker
 
Hide your development environment and application in a container
Hide your development environment and application in a containerHide your development environment and application in a container
Hide your development environment and application in a container
 
Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015Import golang; struct microservice - Codemotion Rome 2015
Import golang; struct microservice - Codemotion Rome 2015
 
Gradle como alternativa a maven
Gradle como alternativa a mavenGradle como alternativa a maven
Gradle como alternativa a maven
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
 
Deploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows ContainersDeploying applications to Windows Server 2016 and Windows Containers
Deploying applications to Windows Server 2016 and Windows Containers
 
Everything as a code
Everything as a codeEverything as a code
Everything as a code
 
Docker by Example - Quiz
Docker by Example - QuizDocker by Example - Quiz
Docker by Example - Quiz
 
JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具JCConf 2015 workshop 動手玩 Java 專案建置工具
JCConf 2015 workshop 動手玩 Java 專案建置工具
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016
 
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
 
Drupal contrib module maintaining
Drupal contrib module maintainingDrupal contrib module maintaining
Drupal contrib module maintaining
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"Michal Kordas "Docker: Good, Bad or Both"
Michal Kordas "Docker: Good, Bad or Both"
 
Statyczna analiza kodu PHP
Statyczna analiza kodu PHPStatyczna analiza kodu PHP
Statyczna analiza kodu PHP
 

Viewers also liked (19)

205_55
205_55205_55
205_55
 
Economic Letter - Vol 2014 No 11
Economic Letter - Vol 2014 No 11Economic Letter - Vol 2014 No 11
Economic Letter - Vol 2014 No 11
 
Unidad óptica
Unidad ópticaUnidad óptica
Unidad óptica
 
Gestor de proyecto grupo A - SANTIAGO VILA
Gestor de proyecto grupo A - SANTIAGO VILAGestor de proyecto grupo A - SANTIAGO VILA
Gestor de proyecto grupo A - SANTIAGO VILA
 
Periféricos de entrada
Periféricos de entradaPeriféricos de entrada
Periféricos de entrada
 
Periferico Lopez Mateos
Periferico Lopez MateosPeriferico Lopez Mateos
Periferico Lopez Mateos
 
PNSD azione #4
PNSD azione #4PNSD azione #4
PNSD azione #4
 
Perfect Aspect
Perfect AspectPerfect Aspect
Perfect Aspect
 
Evaluation Question 5
Evaluation Question 5 Evaluation Question 5
Evaluation Question 5
 
Group 4
Group 4Group 4
Group 4
 
JODIE M ROSE - Resume Long 05.2016
JODIE M ROSE - Resume Long 05.2016JODIE M ROSE - Resume Long 05.2016
JODIE M ROSE - Resume Long 05.2016
 
Knutselieu
KnutselieuKnutselieu
Knutselieu
 
Presentación1
Presentación1Presentación1
Presentación1
 
Fuente de poder
Fuente de poderFuente de poder
Fuente de poder
 
Windmill14jan16 susan2
Windmill14jan16 susan2Windmill14jan16 susan2
Windmill14jan16 susan2
 
Golden eagle decline may 10 2016
Golden eagle decline may 10 2016Golden eagle decline may 10 2016
Golden eagle decline may 10 2016
 
Dependente gislaine e mylena
Dependente gislaine e mylenaDependente gislaine e mylena
Dependente gislaine e mylena
 
City Transformation Forum, 3 februari 2016 - Data Driven Urbanisation
City Transformation Forum, 3 februari 2016 - Data Driven UrbanisationCity Transformation Forum, 3 februari 2016 - Data Driven Urbanisation
City Transformation Forum, 3 februari 2016 - Data Driven Urbanisation
 
Act 5.1 velasco_torres_intervencionpsicologica
Act 5.1 velasco_torres_intervencionpsicologicaAct 5.1 velasco_torres_intervencionpsicologica
Act 5.1 velasco_torres_intervencionpsicologica
 

Similar to Meetup - retour sur la DrupalCon Dublin 2016

Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...Nagios
 
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesDocker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesJérôme Petazzoni
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned RightScale
 
Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.Andrii Podanenko
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at ScaleKris Buytaert
 
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...Aleksey Tkachenko
 
6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production 6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production Hung Lin
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous deliveryEatDog
 
High Performance Drupal
High Performance DrupalHigh Performance Drupal
High Performance DrupalJeff Geerling
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaPantheon
 
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...Evgeniy Kuzmin
 
Content Staging in Drupal 8
Content Staging in Drupal 8Content Staging in Drupal 8
Content Staging in Drupal 8Dick Olsson
 
It's a Breeze to develop Airflow (Cloud Native Warsaw)
It's a Breeze to develop Airflow (Cloud Native Warsaw)It's a Breeze to develop Airflow (Cloud Native Warsaw)
It's a Breeze to develop Airflow (Cloud Native Warsaw)Jarek Potiuk
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Annie Huang
 
Industrialization, be fast be furious!
Industrialization, be fast be furious!Industrialization, be fast be furious!
Industrialization, be fast be furious!Patrick Morin
 
Docker engine - Indroduc
Docker engine - IndroducDocker engine - Indroduc
Docker engine - IndroducAl Gifari
 
Continuous Integration/ Continuous Delivery of web applications
Continuous Integration/ Continuous Delivery of web applicationsContinuous Integration/ Continuous Delivery of web applications
Continuous Integration/ Continuous Delivery of web applicationsEvgeniy Kuzmin
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014biicode
 

Similar to Meetup - retour sur la DrupalCon Dublin 2016 (20)

Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
 
Docker on Docker
Docker on DockerDocker on Docker
Docker on Docker
 
Docker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los AngelesDocker 0.11 at MaxCDN meetup in Los Angeles
Docker 0.11 at MaxCDN meetup in Los Angeles
 
Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned  Real-World Docker: 10 Things We've Learned
Real-World Docker: 10 Things We've Learned
 
Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.Drupal 8 DevOps . Profile and SQL flows.
Drupal 8 DevOps . Profile and SQL flows.
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...Docman - The swiss army knife for Drupal multisite docroot management and dep...
Docman - The swiss army knife for Drupal multisite docroot management and dep...
 
6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production 6 Months Sailing with Docker in Production
6 Months Sailing with Docker in Production
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
 
High Performance Drupal
High Performance DrupalHigh Performance Drupal
High Performance Drupal
 
Learning Docker with Thomas
Learning Docker with ThomasLearning Docker with Thomas
Learning Docker with Thomas
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon Vienna
 
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
Continuous integration / continuous delivery of web applications, Eugen Kuzmi...
 
Content Staging in Drupal 8
Content Staging in Drupal 8Content Staging in Drupal 8
Content Staging in Drupal 8
 
It's a Breeze to develop Airflow (Cloud Native Warsaw)
It's a Breeze to develop Airflow (Cloud Native Warsaw)It's a Breeze to develop Airflow (Cloud Native Warsaw)
It's a Breeze to develop Airflow (Cloud Native Warsaw)
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
 
Industrialization, be fast be furious!
Industrialization, be fast be furious!Industrialization, be fast be furious!
Industrialization, be fast be furious!
 
Docker engine - Indroduc
Docker engine - IndroducDocker engine - Indroduc
Docker engine - Indroduc
 
Continuous Integration/ Continuous Delivery of web applications
Continuous Integration/ Continuous Delivery of web applicationsContinuous Integration/ Continuous Delivery of web applications
Continuous Integration/ Continuous Delivery of web applications
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 

Recently uploaded

Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Recently uploaded (20)

Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

Meetup - retour sur la DrupalCon Dublin 2016

  • 4. 3 joursAvec jusqu’à 11 conférences en parallèle 10 667Tasses de café 1800Personnes sur les 5 jours
  • 5.
  • 8. Why Docker ? › Containers › Sandboxes everything › Instructions aren’t enough Docker vs Vagrant : › Vagrant = multiple VM › Docker = 1 VM for multiple containers
  • 9. Physical hardware Host OS Hyperviseur VM OS VM OS VM OS VM OS Server A Server B Server C Server D Vagrant :
  • 10. Physical hardware Host OS Container A Docker : Docker utilities Linux Kernel Docker engine Container B Container C Hyperviseur
  • 11. How to Docker ? Docker files › Construction d’une image › Description de l’environnement en YAML › 1 fichier par processus Docker compose › Automatisation du déploiement des images › Définition de l’architecture › 1 commande pour tout installer
  • 12. Docker & Drupal Go shopping... › Docker4Drupal › Redis › Memcached › MySQL, MariaDB › D7 & D8 › . . . … or build your own
  • 14. Problème Gestion complexe des VMs et des containers Kubernetes Solution Kubernetes gère “magically” différents containers au sein de différentes VMs
  • 15. Kubernetes : késako › Open Source › Started by Google › Système d’orchestration de containers Paradigme : › Build scripts VS Desired state › Children VS Employees
  • 16. Kubernetes : paradigme Employee “We had a tough day, go home and get some sleep” Child Go upstairs Get undressed Put on pajamas Brush your teeth
  • 17. Kubernetes : how it works › Docker files › Pods (1 or + containers), YAML style › Pods controller : › Réplication, déploiement, service › Gestion des environnements (prod, test) › Autoscaling › Logging, monitoring, web interfacing, cluster
  • 18. Docker compose Docker Machine Docker Kubernetes Multiple containers on same localhost Cluster of container hosts replication orchestration scheduling Manage Remote Container Hosts Launch Container hosts in several clouds
  • 19. Everything at Google runs on Containers › Gmail, Web Search, Maps,... › MapReduce, batch,... › GFS, Colossus,... › Google Platform (VMs run on containers underneath everything)
  • 20. DevOps Jenkins 2 Pipeline From aroq & shumushin https://goo.gl/gahNsm
  • 21. Why Jenkins ? › Release process : › Frequent › Automated › Repeatable › Lowrisk › Build, deploy, test, release › Continuous delivery › Continuous deployment
  • 22. Jenkins : Pipeline › Plugin › Jenkins 1 Workflow → Jenkins 2 Pipeline › Can survive restarts › Pausable (for human input) › BlueOcean Pugin → better GUI › Jenkinsfile : container for the pipeline › Multibranch pipelines : automatic pipeline creation for branches
  • 23. Jenkins : pratiques Drupal › Ne pas commit “vendor” › Pas de composer install ou update en PROD Solutions : › Build, tarball, sync (doesn’t work with Acquia) › Target repo : commit > CI > Build > commit > deploy
  • 24. Jenkins : workflow Git commit & push Jenkins Pipeline Gitlab webhook Init Config Build Stage prepare Stage deployStage testing Prod prepare Prod deploy Prod testing Finalize
  • 26. Jenkins : tools › Docman - one or more source repos + docman config > docman > target repo › Druflow - deploy drupal-procedures › Drush - especially drush aliases › Behat - testing framework › Pipeline - to orchestrate › Pipeline libraries - make it DRY
  • 29. LCache It combines: › A well established architectural patterns from modern CPU architecture From platform.sh https://goo.gl/1mdkVT
  • 30. Core 0 Existing solutions: Multi-Core Processors CPU Core 1 CPU L1 cache L1 cache L2 cache
  • 31. LCache It combines: › A well established architectural patterns from modern CPU architecture › Efficient data propagation from mysql’s row-level replication From platform.sh https://goo.gl/1mdkVT › Experience on Valhalla to provide an efficient website object caching
  • 32. Better › Frequently read › Rarely written › Large LCache Worse › Read once or not at all › Things handleable earlier in the stack › Keys updated often › Clearing 100+ keys with a tag (because of replication) From platform.sh https://goo.gl/1mdkVT
  • 33. D8 : practical caching 3 méthodes de cache : › Cache anonyme › Reverse proxy caching › Cache authentifié From platform.sh https://goo.gl/1mdkVT
  • 34. D8 : practical caching › Cache anonyme: › Module : Internal page cache › Activé par défaut dans D8 › Page cache middleware › Default request policy : no CLI, no session › Default response policy : no kill switch, no “no_cache” route, no server errors From platform.sh https://goo.gl/1mdkVT
  • 35. › Cache anonyme : › Kill switch Drupal::service(‘ page_cache_kill_switch ’)->trigger(); › No_cache route system.cron: path: ‘cron/{key}’ defaults: _controller: ‘DrupalsystemCronController::run’ options: no_cache: TRUE From platform.sh https://goo.gl/1mdkVT
  • 36. › Reverse proxy caching : › Varnish, CDN, ... › Important : définir le “page maximum age” › Définir le reverse proxy dans settings.php $settings[‘reverse_proxy’] = TRUE; $settings[‘reverse_proxy_addresses’] = array(‘127.0.0.1’, …); $settings[‘reverse_proxy_header’] = ‘X_CLUSTER_CLIENT_IP; From platform.sh https://goo.gl/1mdkVT
  • 37. › Cache authentifié : › Username block depends on user logged in › Admin links depends on permissions › Help block depends on URL › Solution : cache contexts › contexts => [‘user’] › contexts => [‘user.permissions’] › contexts => [‘url’] From platform.sh https://goo.gl/1mdkVT
  • 38. › Cache authentifié : › How to invalidate ? › Invalidate dependencies ? › Solution : cache tags › tags => [‘node_list’] › tags => [‘user:1] › tags => [‘node:1’] From platform.sh https://goo.gl/1mdkVT
  • 39. › Cache authentifié : › How to decide to cache ? From platform.sh https://goo.gl/1mdkVT
  • 40. › Cache authentifié : › Exemple : › Metadata : From platform.sh https://goo.gl/1mdkVT
  • 41. D8 : practical caching › Cacheability debugging : › Module renderviz : permet de voir les metadata dans l’inspecteur du navigateur From platform.sh https://goo.gl/1mdkVT
  • 43. Drupal & search › Core module for search › Last significant update on Drupal 4.7
  • 44. Search API › Abstraction of SolR › Configuration › Hard to customize
  • 45. Search › Fast › Text analysis › Facets Exemples : Wikipedia, Amazon, Github, ...
  • 46.
  • 47. › Open source project › Developer-Friendly RESTful API
  • 48. How to use : - Get it - Unzip it - Run it
  • 49. › 1 exemple : Save requests -> Percolator Index content VS search query
  • 50. › How to start ? 2 ways : ➔ Combine with search API ➔ Custom connectors with . . . ◆ Friendly API ◆ Custom code
  • 53. Configuration management › Export/import configuration › Configuration installer : installation profile, UI › Override local configuration : settings.php › Drush can ignore configurations about modules › Drush_cmi_tools : use a YAML list of ignored configurations › Configuration split : blacklist, ignore set, entities From pescetti, ademarco, bircher https://goo.gl/MSjK3T
  • 54. Configuration management › Use Git as parallel development › Careful about merge, workflow › Safe : export, commit, merge, import, push › Features for D8 : › analyzes and automatically packages up site configuration into a set of features › Only for development purposes From pescetti, ademarco, bircher https://goo.gl/MSjK3T
  • 55. Configuration management › Client messing with production configuration › Lock configuration on production (settings.php) › Export from prod and merge to dev › Configuration split : choose what to keep › Deploy content › Use migrate on events › Default_content module : any module provides hal+json for entities › Deploy module : stage and preview content From pescetti, ademarco, bircher https://goo.gl/MSjK3T
  • 56. Configuration management : modules › Config_installer : install site from config › Config_readonly : lock conf via UI › Config_update : diff between original & active › Config_devel : helps developing config › Config_split : import/export filtered config › Config_tools : automatically commit config changes to git › Features : bundle config for re-use › Config_sync : safely import config from updated modules From pescetti, ademarco, bircher https://goo.gl/MSjK3T
  • 58. Migrate with D8 1. Requirements 2. Anatomy of a migration 3. Migration Framework 4. Performance tips
  • 60. 1. Migrate is in core ! Tree new modules › Migrate Handle migration. Framework. › Migrate Drupal Contains migration from D6 & D7 › Migrate Drupal UI The older migrate UI (new in 8.1.x)
  • 61. 1. Migrate is in core ! How to execute migrations ? › UI ? › Drush command ? Contrib to Migrate tools & Migrate Plus
  • 62. 2. ANATOMY OF A MIGRATION
  • 63. 2. Workflow of a migration DestinationProcess Process Process Source
  • 64. DEFINITIONS Yaml Files. Custom files 2. In files PLUGINS PHP Files Core or custom files Types: › Source › Process › Destination › Builder › ID Map
  • 68. EXECUTION Only with Drush8 (8.1-dev) and migrate_tools enabled
  • 70. 3. Source Here we tell SqlBase: - Which Database is the Source
  • 71. 3. Source - And which Plugin will make the Query
  • 72. 3. Destination How and where to store the data - entity:<place-here-an-entity> Need more destination plugins? ⇒ Search for “destination:” in core
  • 73. 3. ID MAPPING How Migrate associates old rows with new rows
  • 74. 3. PROCESS How we transform each field, each file or data. You are able to: › Map fields: Same value as origin. › Modify: Change or process the value. › Add: Create new fields from other fields or calculate these fields.
  • 75. 3. PROCESS Map fields. Values are equal in both sides
  • 76. 3. PROCESS DefaultValue. Add a default value
  • 77. 3. PROCESS Callable. Values are related but a process is needed with a function
  • 79. 4. Performance tips 1. Hardware improvements (ssd, cpu,..) 2. Disabling functionalities (hook, modules) 3. Incremental migration (hash) 4. Multithreaded migrations
  • 80. 4. Performance tips $ drush mi cm_articles_1_400 && drush mi cm_articles_401_800 &&
  • 81. D8 : Bonnes pratiques en vrac › Drush is 10x faster than composer › Librairie “composer-patches” : appliquer des patchs via composer › Pre-commit hook : PHP Lint check › PHPCBF : PHP Code Beautifier & Formatter › Kint : debug in twig › Smacks: organize CSS & JS › Templating : set var in twig (no preprocess) Bonus D7 : drush unsuck