Building and Deploying MediaSalsa, a drupal-based DAM as a Service

Julien Pivotto
Julien PivottoOpen Source Consultant at Inuits
;
Building and Deploying MediasalsaBuilding and Deploying Mediasalsa
A Drupal Digital Asset Management system as a ServiceA Drupal Digital Asset Management system as a Service
Julien PivottoJulien Pivotto
DrupalCon PragueDrupalCon Prague
September 26, 2013September 26, 2013
;
MediaMosa
• Drupal-based Digital Asset Management systemDrupal-based Digital Asset Management system
• Open-sourceOpen-source
• Store assetsStore assets
• Trancode videosTrancode videos
• Create, extract and manage metadata using open standards:Create, extract and manage metadata using open standards:
Dublin Core, Qualified DC, IEEE/LOM, CZPDublin Core, Qualified DC, IEEE/LOM, CZP
• Webservice orientedWebservice oriented
Julien Pivotto Building and Deploying Mediasalsa
;
MediaSalsa
==
MediaMosa as a ServiceMediaMosa as a Service
Julien Pivotto Building and Deploying Mediasalsa
;
MediaSalsa infrastructure (simplified)
• Backend: Core service (MediaMosa)Backend: Core service (MediaMosa)
• Frontends: OptionalFrontends: Optional
• Web serversWeb servers
• Database serverDatabase server
• Solr serverSolr server
• Transcoding serversTranscoding servers



for each environmentfor each environment
Julien Pivotto Building and Deploying Mediasalsa
;
Culture
Automation
Measurement
Sharing
Julien Pivotto Building and Deploying Mediasalsa
;
Inuits
• Inuits is an Open-Source companyInuits is an Open-Source company
⇒ We contribute backWe contribute back
• ± 40 people in 3 countries± 40 people in 3 countries
• One language: EnglishOne language: English
Julien Pivotto Building and Deploying Mediasalsa
;
Inuits
What do we do?
• Consulting and Internal projectsConsulting and Internal projects
• Development and System administrationDevelopment and System administration
Julien Pivotto Building and Deploying Mediasalsa
;
Inuits
Ideal world vs budget and realityIdeal world vs budget and reality
⇒ pragmatic approach⇒ pragmatic approach
Julien Pivotto Building and Deploying Mediasalsa
;
Distributed team
Communication = hell
How to fix it?
• Daily virtual stand-up over XMPP/HangoutDaily virtual stand-up over XMPP/Hangout
• Redmine project managmentRedmine project managment
• TasksTasks
• RepositoriesRepositories
• Documentation (wiki)Documentation (wiki)
• Internal mailing listsInternal mailing lists
• Jenkins notifications by mail and XMPPJenkins notifications by mail and XMPP
• Internal trainingInternal training
Julien Pivotto Building and Deploying Mediasalsa
;
Dev and Ops
DevDev
• Develop new featuresDevelop new features
• Write testsWrite tests
OpsOps
• Infrastructure (puppet)Infrastructure (puppet)
• CD and CI (jenkins)CD and CI (jenkins)
Ops teach dev to think about monitoring and distributed serviceOps teach dev to think about monitoring and distributed service
Dev teach to ops about required libraries and testsDev teach to ops about required libraries and tests
Julien Pivotto Building and Deploying Mediasalsa
;
Culture
Automation
Measurement
Sharing
Julien Pivotto Building and Deploying Mediasalsa
;
Puppet
Puppet automates all the things
⇒ mcollective orchestrates all the things
Julien Pivotto Building and Deploying Mediasalsa
;
CD
Continuous Delivery vs Continuous DeploymentContinuous Delivery vs Continuous Deployment
• Puppet codePuppet code
• Deployed to dev environmentDeployed to dev environment
• Same puppet code for each environmentSame puppet code for each environment
• User-triggered deployments to UAT and prodUser-triggered deployments to UAT and prod
• Feature flags in Puppet code per environmentFeature flags in Puppet code per environment
• Application codeApplication code
• Continuous integration in devContinuous integration in dev
• User-triggered deployments to UATUser-triggered deployments to UAT
• Deployment to prod is a business decisionDeployment to prod is a business decision
Julien Pivotto Building and Deploying Mediasalsa
;
Tests
Developers test a lot
. . . The tests don’t workThe tests don’t work
. . . It works on my machineIt works on my machine
. . . Wrong platformWrong platform
. . . Wrong PHP versionWrong PHP version
⇒ Fixed now, thanks to Jenkins!Fixed now, thanks to Jenkins!
Julien Pivotto Building and Deploying Mediasalsa
;
SCM
Code is under revision control (git)Code is under revision control (git)
• Prefer small commitsPrefer small commits
• Local features branchesLocal features branches
• PackagesPackages
Julien Pivotto Building and Deploying Mediasalsa
;
Using OS packaging system
• Consistency, security, dependenciesConsistency, security, dependencies
• Uniquely identify where files are coming fromUniquely identify where files are coming from
• Source repo may not be reacheableSource repo may not be reacheable
• Little overhead when you automateLittle overhead when you automate
• Configuration does not belong to a packageConfiguration does not belong to a package
Julien Pivotto Building and Deploying Mediasalsa
;
Pipelines
• A collection of jobsA collection of jobs
• Run one after anotherRun one after another
• Start on checkout, end on deploymentStart on checkout, end on deployment
• From the developers’ side:From the developers’ side:
⇒ Git pushGit push
⇐ Mail with changes + link to deployMail with changes + link to deploy
Julien Pivotto Building and Deploying Mediasalsa
;
Our pipelines
• PuppetizedPuppetized
• Puppet code and Application code (backend and frontends)Puppet code and Application code (backend and frontends)
• 1 pipeline/project/customer1 pipeline/project/customer
Defining a pipeline
salsajobs::pipeline::frontend {
’qwerty-inc’:
git_repository => ’ssh://git@redmine/qwerty.git’,
dashboard_view => ’mds-frontends’,
target_urls => {
’uat’ => ’http://qwerty.uat.mediasalsa.eu’,
’prod’ => ’http://qwerty.mediasalsa.eu’,
},
require => Salsajobs::Views::Dashboard[’mds-frontends’],
}
Julien Pivotto Building and Deploying Mediasalsa
;
Pipelines steps
• CheckoutCheckout
• Syntax: php -lSyntax: php -l
• Style: Drupal CoderStyle: Drupal Coder
• Package: FPMPackage: FPM
• Deploy to dev environment: McoDeploy to dev environment: Mco
• Tests in dev environment: drush run-testsTests in dev environment: drush run-tests
• Publish package and promote: McoPublish package and promote: Mco
Julien Pivotto Building and Deploying Mediasalsa
;
Promotion
• At the end of the pipelineAt the end of the pipeline
• Send a simple emailSend a simple email
• A link to the promotion pageA link to the promotion page
• The changelogThe changelog
• Promotion page contains one button per environmentPromotion page contains one button per environment
• Must promote to UAT before ProductionMust promote to UAT before Production
Julien Pivotto Building and Deploying Mediasalsa
;
Tools used with jenkins
• Pulp to manage RPM repositoriesPulp to manage RPM repositories
• Mcollective to update packages, run drushMcollective to update packages, run drush
Julien Pivotto Building and Deploying Mediasalsa
;
Culture
Automation
Measurement
Sharing
Julien Pivotto Building and Deploying Mediasalsa
;
Logstash
Collect all the logs
• Drupal logsDrupal logs
• Apache logsApache logs
• Deployment logsDeployment logs
• System logsSystem logs
⇒ Logstash, ES, kibana, statsd, graphiteLogstash, ES, kibana, statsd, graphite
Julien Pivotto Building and Deploying Mediasalsa
;
Icinga
Monitor everything
• "Basics""Basics"
+ vhostsvhosts
+ databasesdatabases
+ cronjobscronjobs
Julien Pivotto Building and Deploying Mediasalsa
;
Graphite + gdash
• CollectdCollectd
• Monitor platform usageMonitor platform usage
• FFmpeg usageFFmpeg usage
• Number of accounts (backend ID’s)Number of accounts (backend ID’s)
Julien Pivotto Building and Deploying Mediasalsa
;
FFmpeg
Julien Pivotto Building and Deploying Mediasalsa
;
Managed assets
Julien Pivotto Building and Deploying Mediasalsa
;
Number of backend ID’s
Julien Pivotto Building and Deploying Mediasalsa
;
Culture
Automation
Measurement
Sharing
Julien Pivotto Building and Deploying Mediasalsa
;
Sharing
We have just shared our experience. . .We have just shared our experience. . .
Any question?Any question?
Julien Pivotto Building and Deploying Mediasalsa
;
Contact
Julien PivottoJulien Pivotto
julien@inuits.eujulien@inuits.eu
@roidelapluie@roidelapluie
INUITS bvbaINUITS bvba
Duboisstraat 50Duboisstraat 50
2060 Antwerp2060 Antwerp
BelgiumBelgium
+32 473 441 636+32 473 441 636
https://inuits.euhttps://inuits.eu
Julien Pivotto Building and Deploying Mediasalsa
THANK YOU!
WHAT DID YOU THINK?
Locate this session at the
DrupalCon Prague website:
http://prague2013.drupal.org/schedule
Click the “Take the survey” link
1 of 32

Recommended

Linux HA anno 2014 by
Linux HA anno 2014Linux HA anno 2014
Linux HA anno 2014Julien Pivotto
6.3K views65 slides
Deployment and Continous Integration of a Zope/Plone application by
Deployment and Continous Integration of a Zope/Plone applicationDeployment and Continous Integration of a Zope/Plone application
Deployment and Continous Integration of a Zope/Plone applicationJulien Pivotto
4.2K views41 slides
Postgresql 9.0 HA at LOADAYS 2012 by
Postgresql 9.0 HA at LOADAYS 2012Postgresql 9.0 HA at LOADAYS 2012
Postgresql 9.0 HA at LOADAYS 2012Julien Pivotto
5.9K views42 slides
Testing your puppet code by
Testing your puppet codeTesting your puppet code
Testing your puppet codeJulien Pivotto
5.3K views34 slides
Enhance OpenSSH for fun and security by
Enhance OpenSSH for fun and securityEnhance OpenSSH for fun and security
Enhance OpenSSH for fun and securityJulien Pivotto
1.8K views72 slides
systemd and configuration management by
systemd and configuration managementsystemd and configuration management
systemd and configuration managementJulien Pivotto
2.9K views56 slides

More Related Content

What's hot

Puppet Release Workflows at Jive Software by
Puppet Release Workflows at Jive SoftwarePuppet Release Workflows at Jive Software
Puppet Release Workflows at Jive SoftwarePuppet
3.3K views47 slides
ContainerCon - Test Driven Infrastructure by
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureYury Tsarev
2.6K views60 slides
Puppet and Software Delivery by
Puppet and Software DeliveryPuppet and Software Delivery
Puppet and Software DeliveryJulien Pivotto
2.2K views50 slides
7 tools for your devops stack by
7 tools for your devops stack7 tools for your devops stack
7 tools for your devops stackKris Buytaert
35.9K views46 slides
Deploying software at Scale by
Deploying software at ScaleDeploying software at Scale
Deploying software at ScaleKris Buytaert
2.5K views44 slides
11 Tools for your Open Source devops stack by
11 Tools for your Open Source devops stack 11 Tools for your Open Source devops stack
11 Tools for your Open Source devops stack Kris Buytaert
13.5K views53 slides

What's hot(20)

Puppet Release Workflows at Jive Software by Puppet
Puppet Release Workflows at Jive SoftwarePuppet Release Workflows at Jive Software
Puppet Release Workflows at Jive Software
Puppet3.3K views
ContainerCon - Test Driven Infrastructure by Yury Tsarev
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven Infrastructure
Yury Tsarev2.6K views
Puppet and Software Delivery by Julien Pivotto
Puppet and Software DeliveryPuppet and Software Delivery
Puppet and Software Delivery
Julien Pivotto2.2K views
7 tools for your devops stack by Kris Buytaert
7 tools for your devops stack7 tools for your devops stack
7 tools for your devops stack
Kris Buytaert35.9K views
Deploying software at Scale by Kris Buytaert
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
Kris Buytaert2.5K views
11 Tools for your Open Source devops stack by Kris Buytaert
11 Tools for your Open Source devops stack 11 Tools for your Open Source devops stack
11 Tools for your Open Source devops stack
Kris Buytaert13.5K views
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps by SaltStack
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOpsSaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltStack1.2K views
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12 by Puppet
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Continuous Development with Jenkins - Stephen Connolly at PuppetCamp Dublin '12
Puppet33.3K views
How I hack on puppet modules by Kris Buytaert
How I hack on puppet modulesHow I hack on puppet modules
How I hack on puppet modules
Kris Buytaert8.7K views
Immutable infrastructure:觀念與實作 (建議) by William Yeh
Immutable infrastructure:觀念與實作 (建議)Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)
William Yeh7.5K views
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale by SaltStack
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web ScaleSaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltConf14 - Craig Sebenik, LinkedIn - SaltStack at Web Scale
SaltStack2.6K views
Jenkins Shared Libraries Workshop by Julien Pivotto
Jenkins Shared Libraries WorkshopJenkins Shared Libraries Workshop
Jenkins Shared Libraries Workshop
Julien Pivotto19.7K views
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ... by NETWAYS
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
NETWAYS97 views
Automating MySQL operations with Puppet by Kris Buytaert
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
Kris Buytaert1.8K views
Continous Delivery of your Infrastructure by Kris Buytaert
Continous Delivery of your InfrastructureContinous Delivery of your Infrastructure
Continous Delivery of your Infrastructure
Kris Buytaert857 views
Cooking the Cake for Nuget packages by Sergey Dzyuban
Cooking the Cake for Nuget packagesCooking the Cake for Nuget packages
Cooking the Cake for Nuget packages
Sergey Dzyuban210 views
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston... by Puppet
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
PuppetConf 2016: A Tale of Two Hierarchies: Group Policy & Puppet – Matt Ston...
Puppet1.7K views

Viewers also liked

Diving Into Puppet Providers Development: The Puppet-Corosync Module by
Diving Into Puppet Providers Development: The Puppet-Corosync ModuleDiving Into Puppet Providers Development: The Puppet-Corosync Module
Diving Into Puppet Providers Development: The Puppet-Corosync ModuleJulien Pivotto
2.1K views82 slides
A call to give back puppetlabs-corosync to the community by
A call to give back puppetlabs-corosync to the communityA call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the communityJulien Pivotto
2K views25 slides
Logstash and friends by
Logstash and friendsLogstash and friends
Logstash and friendsJulien Pivotto
13.1K views41 slides
Puppet and software delivery by
Puppet and software deliveryPuppet and software delivery
Puppet and software deliveryJulien Pivotto
2K views48 slides
Vox pupuli by
Vox pupuliVox pupuli
Vox pupuliJulien Pivotto
751 views20 slides
DNSSec by
DNSSecDNSSec
DNSSecJulien Pivotto
1.9K views71 slides

Viewers also liked(20)

Diving Into Puppet Providers Development: The Puppet-Corosync Module by Julien Pivotto
Diving Into Puppet Providers Development: The Puppet-Corosync ModuleDiving Into Puppet Providers Development: The Puppet-Corosync Module
Diving Into Puppet Providers Development: The Puppet-Corosync Module
Julien Pivotto2.1K views
A call to give back puppetlabs-corosync to the community by Julien Pivotto
A call to give back puppetlabs-corosync to the communityA call to give back puppetlabs-corosync to the community
A call to give back puppetlabs-corosync to the community
Julien Pivotto2K views
Augeas, swiss knife resources for your puppet tree by Julien Pivotto
Augeas, swiss knife resources for your puppet treeAugeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet tree
Julien Pivotto4.2K views
Voxpupuli: a home for your puppet modules by Julien Pivotto
Voxpupuli: a home for your puppet modulesVoxpupuli: a home for your puppet modules
Voxpupuli: a home for your puppet modules
Julien Pivotto543 views
Augeas, swiss knife resources for your puppet tree by Julien Pivotto
Augeas, swiss knife resources for your puppet treeAugeas, swiss knife resources for your puppet tree
Augeas, swiss knife resources for your puppet tree
Julien Pivotto3.3K views
An introduction to the Pulp project by Julien Pivotto
An introduction to the Pulp projectAn introduction to the Pulp project
An introduction to the Pulp project
Julien Pivotto9.6K views
Getting the maximum out of systemd by Julien Pivotto
Getting the maximum out of systemdGetting the maximum out of systemd
Getting the maximum out of systemd
Julien Pivotto8.6K views
Monitoring at Cloud Scale by Julien Pivotto
Monitoring at Cloud ScaleMonitoring at Cloud Scale
Monitoring at Cloud Scale
Julien Pivotto8.5K views
CentOS Config Management SIG by Julien Pivotto
CentOS Config Management SIGCentOS Config Management SIG
CentOS Config Management SIG
Julien Pivotto2.4K views
Managing a R&D Lab with Foreman by Julien Pivotto
Managing a R&D Lab with ForemanManaging a R&D Lab with Foreman
Managing a R&D Lab with Foreman
Julien Pivotto1.6K views

Similar to Building and Deploying MediaSalsa, a drupal-based DAM as a Service

Deploying your SaaS stack OnPrem by
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremKris Buytaert
681 views38 slides
The devops approach to monitoring, Open Source and Infrastructure as Code Style by
The devops approach to monitoring, Open Source and Infrastructure as Code StyleThe devops approach to monitoring, Open Source and Infrastructure as Code Style
The devops approach to monitoring, Open Source and Infrastructure as Code StyleJulien Pivotto
14.6K views42 slides
Pipeline as code for your infrastructure as Code by
Pipeline as code for your infrastructure as CodePipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodeKris Buytaert
1.9K views59 slides
Building and Deploying MediaSalsa, an Open Source DAM as Saas platform by
Building and Deploying MediaSalsa, an Open Source DAM as Saas platformBuilding and Deploying MediaSalsa, an Open Source DAM as Saas platform
Building and Deploying MediaSalsa, an Open Source DAM as Saas platformKris Buytaert
3.1K views32 slides
Staging and Deployment by
Staging and DeploymentStaging and Deployment
Staging and Deploymentheyrocker
761 views93 slides
Continuous Delivery of (y)our infrastructure. by
Continuous Delivery of (y)our infrastructure.Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.Kris Buytaert
3K views45 slides

Similar to Building and Deploying MediaSalsa, a drupal-based DAM as a Service(20)

Deploying your SaaS stack OnPrem by Kris Buytaert
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPrem
Kris Buytaert681 views
The devops approach to monitoring, Open Source and Infrastructure as Code Style by Julien Pivotto
The devops approach to monitoring, Open Source and Infrastructure as Code StyleThe devops approach to monitoring, Open Source and Infrastructure as Code Style
The devops approach to monitoring, Open Source and Infrastructure as Code Style
Julien Pivotto14.6K views
Pipeline as code for your infrastructure as Code by Kris Buytaert
Pipeline as code for your infrastructure as CodePipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as Code
Kris Buytaert1.9K views
Building and Deploying MediaSalsa, an Open Source DAM as Saas platform by Kris Buytaert
Building and Deploying MediaSalsa, an Open Source DAM as Saas platformBuilding and Deploying MediaSalsa, an Open Source DAM as Saas platform
Building and Deploying MediaSalsa, an Open Source DAM as Saas platform
Kris Buytaert3.1K views
Staging and Deployment by heyrocker
Staging and DeploymentStaging and Deployment
Staging and Deployment
heyrocker761 views
Continuous Delivery of (y)our infrastructure. by Kris Buytaert
Continuous Delivery of (y)our infrastructure.Continuous Delivery of (y)our infrastructure.
Continuous Delivery of (y)our infrastructure.
Kris Buytaert3K views
Towards Continuous Delivery in Mobile Apps by Phillip Wheatley
Towards Continuous Delivery in Mobile AppsTowards Continuous Delivery in Mobile Apps
Towards Continuous Delivery in Mobile Apps
Phillip Wheatley903 views
How bigtop leveraged docker for build automation and one click hadoop provis... by Evans Ye
How bigtop leveraged docker for build automation and  one click hadoop provis...How bigtop leveraged docker for build automation and  one click hadoop provis...
How bigtop leveraged docker for build automation and one click hadoop provis...
Evans Ye1.2K views
'Intro to Infrastructure as Code' - DevOps Belfast by John Fitzpatrick
'Intro to Infrastructure as Code' - DevOps Belfast'Intro to Infrastructure as Code' - DevOps Belfast
'Intro to Infrastructure as Code' - DevOps Belfast
John Fitzpatrick1.2K views
Icinga Camp Amsterdam - Infrastructure as Code by Icinga
Icinga Camp Amsterdam - Infrastructure as CodeIcinga Camp Amsterdam - Infrastructure as Code
Icinga Camp Amsterdam - Infrastructure as Code
Icinga3.3K views
On the Importance of Infrastructure as Code by Kris Buytaert
On the Importance of Infrastructure as CodeOn the Importance of Infrastructure as Code
On the Importance of Infrastructure as Code
Kris Buytaert1.8K views
Automatize everything by Boris Bucha
Automatize everythingAutomatize everything
Automatize everything
Boris Bucha276 views
OSDC 2016 - Another 7 Tools for your #devops Stack by Kris Buytaert by NETWAYS
OSDC 2016 - Another 7 Tools for your #devops Stack by Kris BuytaertOSDC 2016 - Another 7 Tools for your #devops Stack by Kris Buytaert
OSDC 2016 - Another 7 Tools for your #devops Stack by Kris Buytaert
NETWAYS81 views
Another 7 tools for your #devops stack by Kris Buytaert
Another 7 tools for your #devops stackAnother 7 tools for your #devops stack
Another 7 tools for your #devops stack
Kris Buytaert1.6K views
Fluo CICD OpenStack Summit by Miguel Zuniga
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
Miguel Zuniga1.1K views
How bigtop leveraged docker for build automation and one click hadoop provis... by Evans Ye
How bigtop leveraged docker for build automation and  one click hadoop provis...How bigtop leveraged docker for build automation and  one click hadoop provis...
How bigtop leveraged docker for build automation and one click hadoop provis...
Evans Ye3.4K views
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a... by Lean IT Consulting
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Devoxx PL 2018 - Microservices in action at the Dutch National Police by Bert Jan Schrijver
Devoxx PL 2018 - Microservices in action at the Dutch National PoliceDevoxx PL 2018 - Microservices in action at the Dutch National Police
Devoxx PL 2018 - Microservices in action at the Dutch National Police
Bert Jan Schrijver141 views
Run stuff, Deploy Stuff, Jax London 2017 Edition by Kris Buytaert
Run stuff, Deploy Stuff, Jax London 2017 EditionRun stuff, Deploy Stuff, Jax London 2017 Edition
Run stuff, Deploy Stuff, Jax London 2017 Edition
Kris Buytaert2.2K views

More from Julien Pivotto

The O11y Toolkit by
The O11y ToolkitThe O11y Toolkit
The O11y ToolkitJulien Pivotto
37 views24 slides
What's New in Prometheus and Its Ecosystem by
What's New in Prometheus and Its EcosystemWhat's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its EcosystemJulien Pivotto
12 views42 slides
Prometheus: What is is, what is new, what is coming by
Prometheus: What is is, what is new, what is comingPrometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is comingJulien Pivotto
42 views27 slides
What's new in Prometheus? by
What's new in Prometheus?What's new in Prometheus?
What's new in Prometheus?Julien Pivotto
15 views10 slides
Introduction to Grafana Loki by
Introduction to Grafana LokiIntroduction to Grafana Loki
Introduction to Grafana LokiJulien Pivotto
190 views11 slides
Why you should revisit mgmt by
Why you should revisit mgmtWhy you should revisit mgmt
Why you should revisit mgmtJulien Pivotto
10 views46 slides

More from Julien Pivotto(20)

What's New in Prometheus and Its Ecosystem by Julien Pivotto
What's New in Prometheus and Its EcosystemWhat's New in Prometheus and Its Ecosystem
What's New in Prometheus and Its Ecosystem
Julien Pivotto12 views
Prometheus: What is is, what is new, what is coming by Julien Pivotto
Prometheus: What is is, what is new, what is comingPrometheus: What is is, what is new, what is coming
Prometheus: What is is, what is new, what is coming
Julien Pivotto42 views
Introduction to Grafana Loki by Julien Pivotto
Introduction to Grafana LokiIntroduction to Grafana Loki
Introduction to Grafana Loki
Julien Pivotto190 views
Observing the HashiCorp Ecosystem From Prometheus by Julien Pivotto
Observing the HashiCorp Ecosystem From PrometheusObserving the HashiCorp Ecosystem From Prometheus
Observing the HashiCorp Ecosystem From Prometheus
Julien Pivotto37 views
Monitoring in a fast-changing world with Prometheus by Julien Pivotto
Monitoring in a fast-changing world with PrometheusMonitoring in a fast-changing world with Prometheus
Monitoring in a fast-changing world with Prometheus
Julien Pivotto33 views
5 tips for Prometheus Service Discovery by Julien Pivotto
5 tips for Prometheus Service Discovery5 tips for Prometheus Service Discovery
5 tips for Prometheus Service Discovery
Julien Pivotto38 views
Prometheus and TLS - an Introduction by Julien Pivotto
Prometheus and TLS - an IntroductionPrometheus and TLS - an Introduction
Prometheus and TLS - an Introduction
Julien Pivotto15 views
HAProxy as Egress Controller by Julien Pivotto
HAProxy as Egress ControllerHAProxy as Egress Controller
HAProxy as Egress Controller
Julien Pivotto2.9K views
Improved alerting with Prometheus and Alertmanager by Julien Pivotto
Improved alerting with Prometheus and AlertmanagerImproved alerting with Prometheus and Alertmanager
Improved alerting with Prometheus and Alertmanager
Julien Pivotto4.5K views
SIngle Sign On with Keycloak by Julien Pivotto
SIngle Sign On with KeycloakSIngle Sign On with Keycloak
SIngle Sign On with Keycloak
Julien Pivotto10K views
Monitoring as an entry point for collaboration by Julien Pivotto
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaboration
Julien Pivotto1.3K views
Monitor your CentOS stack with Prometheus by Julien Pivotto
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
Julien Pivotto712 views
Monitor your CentOS stack with Prometheus by Julien Pivotto
Monitor your CentOS stack with PrometheusMonitor your CentOS stack with Prometheus
Monitor your CentOS stack with Prometheus
Julien Pivotto704 views

Recently uploaded

Kyo - Functional Scala 2023.pdf by
Kyo - Functional Scala 2023.pdfKyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfFlavio W. Brasil
368 views92 slides
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院 by
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院IttrainingIttraining
52 views8 slides
Ransomware is Knocking your Door_Final.pdf by
Ransomware is Knocking your Door_Final.pdfRansomware is Knocking your Door_Final.pdf
Ransomware is Knocking your Door_Final.pdfSecurity Bootcamp
55 views46 slides
Vertical User Stories by
Vertical User StoriesVertical User Stories
Vertical User StoriesMoisés Armani Ramírez
14 views16 slides
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors by
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensorssugiuralab
19 views15 slides
Future of AR - Facebook Presentation by
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentationssuserb54b561
14 views27 slides

Recently uploaded(20)

【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院 by IttrainingIttraining
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors by sugiuralab
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors
sugiuralab19 views
Future of AR - Facebook Presentation by ssuserb54b561
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
ssuserb54b56114 views
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf by Dr. Jimmy Schwarzkopf
STKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdfSTKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdf
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software263 views
Case Study Copenhagen Energy and Business Central.pdf by Aitana
Case Study Copenhagen Energy and Business Central.pdfCase Study Copenhagen Energy and Business Central.pdf
Case Study Copenhagen Energy and Business Central.pdf
Aitana16 views
Voice Logger - Telephony Integration Solution at Aegis by Nirmal Sharma
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at Aegis
Nirmal Sharma39 views
Piloting & Scaling Successfully With Microsoft Viva by Richard Harbridge
Piloting & Scaling Successfully With Microsoft VivaPiloting & Scaling Successfully With Microsoft Viva
Piloting & Scaling Successfully With Microsoft Viva
Unit 1_Lecture 2_Physical Design of IoT.pdf by StephenTec
Unit 1_Lecture 2_Physical Design of IoT.pdfUnit 1_Lecture 2_Physical Design of IoT.pdf
Unit 1_Lecture 2_Physical Design of IoT.pdf
StephenTec12 views
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely21 views
Special_edition_innovator_2023.pdf by WillDavies22
Special_edition_innovator_2023.pdfSpecial_edition_innovator_2023.pdf
Special_edition_innovator_2023.pdf
WillDavies2217 views
STPI OctaNE CoE Brochure.pdf by madhurjyapb
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdf
madhurjyapb14 views

Building and Deploying MediaSalsa, a drupal-based DAM as a Service

  • 1. ; Building and Deploying MediasalsaBuilding and Deploying Mediasalsa A Drupal Digital Asset Management system as a ServiceA Drupal Digital Asset Management system as a Service Julien PivottoJulien Pivotto DrupalCon PragueDrupalCon Prague September 26, 2013September 26, 2013
  • 2. ; MediaMosa • Drupal-based Digital Asset Management systemDrupal-based Digital Asset Management system • Open-sourceOpen-source • Store assetsStore assets • Trancode videosTrancode videos • Create, extract and manage metadata using open standards:Create, extract and manage metadata using open standards: Dublin Core, Qualified DC, IEEE/LOM, CZPDublin Core, Qualified DC, IEEE/LOM, CZP • Webservice orientedWebservice oriented Julien Pivotto Building and Deploying Mediasalsa
  • 3. ; MediaSalsa == MediaMosa as a ServiceMediaMosa as a Service Julien Pivotto Building and Deploying Mediasalsa
  • 4. ; MediaSalsa infrastructure (simplified) • Backend: Core service (MediaMosa)Backend: Core service (MediaMosa) • Frontends: OptionalFrontends: Optional • Web serversWeb servers • Database serverDatabase server • Solr serverSolr server • Transcoding serversTranscoding servers    for each environmentfor each environment Julien Pivotto Building and Deploying Mediasalsa
  • 6. ; Inuits • Inuits is an Open-Source companyInuits is an Open-Source company ⇒ We contribute backWe contribute back • ± 40 people in 3 countries± 40 people in 3 countries • One language: EnglishOne language: English Julien Pivotto Building and Deploying Mediasalsa
  • 7. ; Inuits What do we do? • Consulting and Internal projectsConsulting and Internal projects • Development and System administrationDevelopment and System administration Julien Pivotto Building and Deploying Mediasalsa
  • 8. ; Inuits Ideal world vs budget and realityIdeal world vs budget and reality ⇒ pragmatic approach⇒ pragmatic approach Julien Pivotto Building and Deploying Mediasalsa
  • 9. ; Distributed team Communication = hell How to fix it? • Daily virtual stand-up over XMPP/HangoutDaily virtual stand-up over XMPP/Hangout • Redmine project managmentRedmine project managment • TasksTasks • RepositoriesRepositories • Documentation (wiki)Documentation (wiki) • Internal mailing listsInternal mailing lists • Jenkins notifications by mail and XMPPJenkins notifications by mail and XMPP • Internal trainingInternal training Julien Pivotto Building and Deploying Mediasalsa
  • 10. ; Dev and Ops DevDev • Develop new featuresDevelop new features • Write testsWrite tests OpsOps • Infrastructure (puppet)Infrastructure (puppet) • CD and CI (jenkins)CD and CI (jenkins) Ops teach dev to think about monitoring and distributed serviceOps teach dev to think about monitoring and distributed service Dev teach to ops about required libraries and testsDev teach to ops about required libraries and tests Julien Pivotto Building and Deploying Mediasalsa
  • 12. ; Puppet Puppet automates all the things ⇒ mcollective orchestrates all the things Julien Pivotto Building and Deploying Mediasalsa
  • 13. ; CD Continuous Delivery vs Continuous DeploymentContinuous Delivery vs Continuous Deployment • Puppet codePuppet code • Deployed to dev environmentDeployed to dev environment • Same puppet code for each environmentSame puppet code for each environment • User-triggered deployments to UAT and prodUser-triggered deployments to UAT and prod • Feature flags in Puppet code per environmentFeature flags in Puppet code per environment • Application codeApplication code • Continuous integration in devContinuous integration in dev • User-triggered deployments to UATUser-triggered deployments to UAT • Deployment to prod is a business decisionDeployment to prod is a business decision Julien Pivotto Building and Deploying Mediasalsa
  • 14. ; Tests Developers test a lot . . . The tests don’t workThe tests don’t work . . . It works on my machineIt works on my machine . . . Wrong platformWrong platform . . . Wrong PHP versionWrong PHP version ⇒ Fixed now, thanks to Jenkins!Fixed now, thanks to Jenkins! Julien Pivotto Building and Deploying Mediasalsa
  • 15. ; SCM Code is under revision control (git)Code is under revision control (git) • Prefer small commitsPrefer small commits • Local features branchesLocal features branches • PackagesPackages Julien Pivotto Building and Deploying Mediasalsa
  • 16. ; Using OS packaging system • Consistency, security, dependenciesConsistency, security, dependencies • Uniquely identify where files are coming fromUniquely identify where files are coming from • Source repo may not be reacheableSource repo may not be reacheable • Little overhead when you automateLittle overhead when you automate • Configuration does not belong to a packageConfiguration does not belong to a package Julien Pivotto Building and Deploying Mediasalsa
  • 17. ; Pipelines • A collection of jobsA collection of jobs • Run one after anotherRun one after another • Start on checkout, end on deploymentStart on checkout, end on deployment • From the developers’ side:From the developers’ side: ⇒ Git pushGit push ⇐ Mail with changes + link to deployMail with changes + link to deploy Julien Pivotto Building and Deploying Mediasalsa
  • 18. ; Our pipelines • PuppetizedPuppetized • Puppet code and Application code (backend and frontends)Puppet code and Application code (backend and frontends) • 1 pipeline/project/customer1 pipeline/project/customer Defining a pipeline salsajobs::pipeline::frontend { ’qwerty-inc’: git_repository => ’ssh://git@redmine/qwerty.git’, dashboard_view => ’mds-frontends’, target_urls => { ’uat’ => ’http://qwerty.uat.mediasalsa.eu’, ’prod’ => ’http://qwerty.mediasalsa.eu’, }, require => Salsajobs::Views::Dashboard[’mds-frontends’], } Julien Pivotto Building and Deploying Mediasalsa
  • 19. ; Pipelines steps • CheckoutCheckout • Syntax: php -lSyntax: php -l • Style: Drupal CoderStyle: Drupal Coder • Package: FPMPackage: FPM • Deploy to dev environment: McoDeploy to dev environment: Mco • Tests in dev environment: drush run-testsTests in dev environment: drush run-tests • Publish package and promote: McoPublish package and promote: Mco Julien Pivotto Building and Deploying Mediasalsa
  • 20. ; Promotion • At the end of the pipelineAt the end of the pipeline • Send a simple emailSend a simple email • A link to the promotion pageA link to the promotion page • The changelogThe changelog • Promotion page contains one button per environmentPromotion page contains one button per environment • Must promote to UAT before ProductionMust promote to UAT before Production Julien Pivotto Building and Deploying Mediasalsa
  • 21. ; Tools used with jenkins • Pulp to manage RPM repositoriesPulp to manage RPM repositories • Mcollective to update packages, run drushMcollective to update packages, run drush Julien Pivotto Building and Deploying Mediasalsa
  • 23. ; Logstash Collect all the logs • Drupal logsDrupal logs • Apache logsApache logs • Deployment logsDeployment logs • System logsSystem logs ⇒ Logstash, ES, kibana, statsd, graphiteLogstash, ES, kibana, statsd, graphite Julien Pivotto Building and Deploying Mediasalsa
  • 24. ; Icinga Monitor everything • "Basics""Basics" + vhostsvhosts + databasesdatabases + cronjobscronjobs Julien Pivotto Building and Deploying Mediasalsa
  • 25. ; Graphite + gdash • CollectdCollectd • Monitor platform usageMonitor platform usage • FFmpeg usageFFmpeg usage • Number of accounts (backend ID’s)Number of accounts (backend ID’s) Julien Pivotto Building and Deploying Mediasalsa
  • 26. ; FFmpeg Julien Pivotto Building and Deploying Mediasalsa
  • 27. ; Managed assets Julien Pivotto Building and Deploying Mediasalsa
  • 28. ; Number of backend ID’s Julien Pivotto Building and Deploying Mediasalsa
  • 30. ; Sharing We have just shared our experience. . .We have just shared our experience. . . Any question?Any question? Julien Pivotto Building and Deploying Mediasalsa
  • 31. ; Contact Julien PivottoJulien Pivotto julien@inuits.eujulien@inuits.eu @roidelapluie@roidelapluie INUITS bvbaINUITS bvba Duboisstraat 50Duboisstraat 50 2060 Antwerp2060 Antwerp BelgiumBelgium +32 473 441 636+32 473 441 636 https://inuits.euhttps://inuits.eu Julien Pivotto Building and Deploying Mediasalsa
  • 32. THANK YOU! WHAT DID YOU THINK? Locate this session at the DrupalCon Prague website: http://prague2013.drupal.org/schedule Click the “Take the survey” link