SlideShare a Scribd company logo
Composer at Scale,
Release and Dependency
Management
Joe Ferguson
Who Am I?
Joe Ferguson
PHP Developer
Engineer @ Aol.
Twitter: @JoePFerguson
Organizer of @MemphisPHP
OSMI Board Member
@NomadPHP Lightning Talks
Passionate about Community
This is not a Composer Talk
What’s ā€œScaleā€?
ā€œAt Scaleā€
http://www.pcmag.com/encyclopedia/term/68176/at-scale
ā€œā€¦at the required size to solve
the problemā€¦ā€
What’s ā€œEnterpriseā€?
http://www.pcmag.com/encyclopedia/term/42637/enterprise
Any undertaking or project, with the
implication that it is of reasonable size
and complexity.
Everyone is at ā€œEnterpriseā€
ā€œScaleā€
Brands
http://corp.aol.com/mission
Enterprise === A lot
http://hyperboleandahalf.blogspot.com/2010/04/alot-is-better-than-you-at-
everything.html
We’re a small(ish) team
2 Front End Devs
6 Back end Devs
1 Architect / Product Manager
1 Manager
Foundation of our Applications
Modern*
Well Tested
Semantic Versioning
Peer Approval
Continuous Integration
Client Focused Solutions
Our CMS Application
Start with a strong version
control process/strategy
New Feature Git Workflow
Pull master branch
New Feature Git Workflow
Pull master branch
checkout new branch named feature/new-feature-description
New Feature Git Workflow
Pull master branch
checkout new branch named feature/new-feature-description
change code <where the magic happens>
New Feature Git Workflow
Pull master branch
checkout new branch named feature/new-feature-description
change code <where the magic happens>
Commit changes and open pull request against the develop
branch
New Feature Git Workflow
Pull master branch
checkout new branch named feature/new-feature-description
change code <where the magic happens>
Commit changes and open pull request against the develop branch
Wait for two peers to approve changes <jeopardy theme plays>
New Feature Git Workflow
Pull master branch
checkout new branch named feature/new-feature-description
change code <where the magic happens>
Commit changes and open pull request against the develop branch
Wait for two peers to approve changes <jeopardy theme plays>
Merge pull request into the develop branch
Commit & Versioning Tools
Emoji in your commits!
https://github.com/slashsBin/styleguide-git-commit-message
Commit tool to automate messages
https://github.com/jakeasmith/commit
export GIT_EDITOR=~/
PhpstormProjects/commit/bin/commit
Commit tool to automate messages
https://github.com/jakeasmith/commit
Identify What Changed
Bump!
https://github.com/jakeasmith/bump
$ bump major|minor|patch
Wait for package repo to index
new version
Deployment Cycles, Waterfalls,
Sprints, Kanban, and bears oh my!
Find what works for you
Kanban
Two Week Release Cycle
Code Freeze and Release
Branches
Two Week Release Cycle
Wednesday before release is a Release Candidate Code Freeze
Release branches are created from develop branch
Release branches deployed to staging servers
Testing on Staging Servers
Two Week Release Cycle
Wednesday before release is a Release Candidate Code Freeze
Release branches are created from develop branch
Release branches deployed to staging servers
Developers & Clients test changes on staging servers & sign off
From Wednesday to Tuesday is testing time
Production Deployment
Two Week Release Cycle
Wednesday before release is a Release Candidate Code Freeze
Release branches are created from develop branch
Release branches deployed to staging servers
Developers & Clients test changes on staging servers & sign off
From Wednesday to Tuesday is testing time
Tuesday following the RC freeze is production deploy
Release branches are Merged into master via same 2 peer approval pull request
process
Production Deployment
Two Week Release Cycle
Wednesday before release is a Release Candidate Code Freeze
Release branches are created from develop branch
Release branches deployed to staging servers
Developers & Clients test changes on staging servers & sign off
From Wednesday to Tuesday is testing time
Tuesday following the RC freeze is production deploy
Release branches are Merged into master via same 2 peer approval pull request process
Code is deployed to production
When something breaks…
Hotfixes and Bugfixes
Hotfixes are branches named hotfix/description that are opened
against master
Hotfixes are how we patch production
Hotfixes and Bugfixes
Hotfixes are branches named hotfix/description that are opened
against master
Hotfixes are how we patch production
Bug fixes are when we find issues after the RC freeze but before RC
branch merging to master
Bug fix branches are named bugfix/description that are opened
against the release branch
That’s how we deploy features
to our CMS
Our CI/CD Hero
Jenkins Automation
Build & Run Tests
Build Docker Images & Test
Build & Deploy Applications
Sound the alarms when something breaks
Slack Notifications in a CI/CD Channel
That’s how we deploy features
to our CMS, API,
That’s how we deploy features
to our CMS, API, Design Tool,
That’s how we deploy features to
our CMS, API, Design Tool, and
other standalone applications
Architecture
CMS
API
Design Tool
A lot of shared logic
Enter: ā€œCoreā€
Architecture
CMS
API
Design Tool
Core
composer require aol/core
*not the actual package name
Control Version Constraints
{
"require": {
"aol/core": "^17",
}
}
Lock To A Minor Version
{
"require": {
"aol/core": ā€œ^17.10",
}
}
We now have access to all of the logic
in Core in all of our applications
Core Git Workflow
No develop branch
No Hotfixes, or Bugfix branches
All changes are via pull request against master
After PRs are approved and merged version tags are bumped
Semantic versioning is your friend
Individual applications update their own core versions at their own pace
(During normal deployment cycles)
Architecture
CMS
API
Design Tool
Core
Version 15.1.3
Version 17.6.13
Version 17.0.0
Remember Scale?
Core is just another
application…
ā€œCompromise is essential because
there are no ideal solutions, only
trade-offsā€
Thomas Sowell - ā€œA Conflict of Visionā€
ā€œMediumā€ Services
Follow your process
Feedback!
https://joind.in/talk/024d5
Joe Ferguson
Twitter: @JoePFerguson
Email: joe@joeferguson.me
Freenode: joepferguson
Contact Info:

More Related Content

What's hot (20)

PDF
Laravel Forge: Hello World to Hello Production
Joe Ferguson
Ā 
PPTX
Advanced Appium
Dan Cuellar
Ā 
PPTX
Story Testing Approach for Enterprise Applications using Selenium Framework
Oleksiy Rezchykov
Ā 
PDF
Mobile automation using selenium cucumber & appium
Selenium Cucumber
Ā 
PPTX
Moving From a Selenium Grid to the Cloud - A Real Life Story
Sauce Labs
Ā 
PDF
Code Coverage for Total Security in Application Migrations
Dana Luther
Ā 
PDF
Scaling your Automated Tests: Docker and Kubernetes
Manoj Kumar Kumar
Ā 
PPTX
Async webdriverjs
Manoj Kumar Kumar
Ā 
PDF
Drupal Performance
Pantheon
Ā 
PDF
Tooling for the productive front end developer
Maurice De Beijer [MVP]
Ā 
PDF
Drupalcamp Simpletest
lyricnz
Ā 
PDF
Continuous delivery of your legacy application
ColdFusionConference
Ā 
PPTX
Beyond the Release: CI That Transforms Organizations
Sauce Labs
Ā 
PPTX
Cypress workshop for JSFoo 2019
Biswajit Pattanayak
Ā 
PPT
Selenium and Cucumber Selenium Conf 2011
dimakovalenko
Ā 
KEY
Continuous Integration, the minimum viable product
Julian Simpson
Ā 
PDF
Practical continuous quality gates for development process
Andrii Soldatenko
Ā 
PDF
Selenium Testing on Chrome - Google DevFest Armenia 2015
Sargis Sargsyan
Ā 
ODP
iOS Automation with Cucumber, Appium and Saucelabs
Shashikant Jagtap
Ā 
PDF
All the Laravel Things – Up & Running to Making $$
Joe Ferguson
Ā 
Laravel Forge: Hello World to Hello Production
Joe Ferguson
Ā 
Advanced Appium
Dan Cuellar
Ā 
Story Testing Approach for Enterprise Applications using Selenium Framework
Oleksiy Rezchykov
Ā 
Mobile automation using selenium cucumber & appium
Selenium Cucumber
Ā 
Moving From a Selenium Grid to the Cloud - A Real Life Story
Sauce Labs
Ā 
Code Coverage for Total Security in Application Migrations
Dana Luther
Ā 
Scaling your Automated Tests: Docker and Kubernetes
Manoj Kumar Kumar
Ā 
Async webdriverjs
Manoj Kumar Kumar
Ā 
Drupal Performance
Pantheon
Ā 
Tooling for the productive front end developer
Maurice De Beijer [MVP]
Ā 
Drupalcamp Simpletest
lyricnz
Ā 
Continuous delivery of your legacy application
ColdFusionConference
Ā 
Beyond the Release: CI That Transforms Organizations
Sauce Labs
Ā 
Cypress workshop for JSFoo 2019
Biswajit Pattanayak
Ā 
Selenium and Cucumber Selenium Conf 2011
dimakovalenko
Ā 
Continuous Integration, the minimum viable product
Julian Simpson
Ā 
Practical continuous quality gates for development process
Andrii Soldatenko
Ā 
Selenium Testing on Chrome - Google DevFest Armenia 2015
Sargis Sargsyan
Ā 
iOS Automation with Cucumber, Appium and Saucelabs
Shashikant Jagtap
Ā 
All the Laravel Things – Up & Running to Making $$
Joe Ferguson
Ā 

Similar to Composer at Scale, Release and Dependency Management (20)

PDF
Release and-dependency-management memphis python
Joe Ferguson
Ā 
PDF
Principles and Practices in Continuous Deployment at Etsy
Mike Brittain
Ā 
ODP
Jbossworld Presentation
Dan Hinojosa
Ā 
PDF
Don't screw it up! How to build durable API
Alessandro Cinelli (cirpo)
Ā 
PPTX
DevOps: The New Face Of Application Development - Global Azure Bootcamp
Richard Harbridge
Ā 
PPTX
Simplify your code with Salesforce DX and module development
Salesforce Developers
Ā 
PDF
Continuous Delivery and Zero Downtime: What your architecture needs to succeed
Axel Fontaine
Ā 
PDF
[RHFSeoul2017]6 Steps to Transform Enterprise Applications
Daniel Oh
Ā 
PPTX
Convert your Full Trust Solutions to the SharePoint Framework (SPFx) in 1 hour
Brian Culver
Ā 
PPTX
Visual Studio 2017 - Montreal Launch Event
Guy Barrette
Ā 
PPTX
Lightning branches at RedMart (Js conf Asia 2014 Talk)
Ritesh Angural
Ā 
PDF
Alexey Kupriyanenko "Release Early, Often, Stable"
Fwdays
Ā 
PDF
Git workflows Ć” la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
hamidsamadi
Ā 
PDF
Building Rich Applications with Appcelerator
Matt Raible
Ā 
PDF
The "Holy Grail" of Dev/Ops
Erik Osterman
Ā 
PDF
Immutable Infrastructure: Rise of the Machine Images
C4Media
Ā 
PDF
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Rami Rantala
Ā 
PDF
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Bram Adams
Ā 
ODP
Building Scalable Development Environments
Shahar Evron
Ā 
PPTX
2017 03 25 Microsoft Hacks, How to code efficiently
Bruno Capuano
Ā 
Release and-dependency-management memphis python
Joe Ferguson
Ā 
Principles and Practices in Continuous Deployment at Etsy
Mike Brittain
Ā 
Jbossworld Presentation
Dan Hinojosa
Ā 
Don't screw it up! How to build durable API
Alessandro Cinelli (cirpo)
Ā 
DevOps: The New Face Of Application Development - Global Azure Bootcamp
Richard Harbridge
Ā 
Simplify your code with Salesforce DX and module development
Salesforce Developers
Ā 
Continuous Delivery and Zero Downtime: What your architecture needs to succeed
Axel Fontaine
Ā 
[RHFSeoul2017]6 Steps to Transform Enterprise Applications
Daniel Oh
Ā 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx) in 1 hour
Brian Culver
Ā 
Visual Studio 2017 - Montreal Launch Event
Guy Barrette
Ā 
Lightning branches at RedMart (Js conf Asia 2014 Talk)
Ritesh Angural
Ā 
Alexey Kupriyanenko "Release Early, Often, Stable"
Fwdays
Ā 
Git workflows Ć” la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
hamidsamadi
Ā 
Building Rich Applications with Appcelerator
Matt Raible
Ā 
The "Holy Grail" of Dev/Ops
Erik Osterman
Ā 
Immutable Infrastructure: Rise of the Machine Images
C4Media
Ā 
Continuous Delivery for Mobile platforms (iOS and a bit of Android)
Rami Rantala
Ā 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Bram Adams
Ā 
Building Scalable Development Environments
Shahar Evron
Ā 
2017 03 25 Microsoft Hacks, How to code efficiently
Bruno Capuano
Ā 
Ad

More from Joe Ferguson (20)

PDF
Modern infrastructure as code with ansible cake fest 2021
Joe Ferguson
Ā 
PDF
Modern infrastructure as code with ansible PyTN
Joe Ferguson
Ā 
PDF
Slim PHP when you don't need the kitchen sink
Joe Ferguson
Ā 
PDF
Throwing Laravel into your Legacy Appā„¢
Joe Ferguson
Ā 
PDF
DevSpace Conf 2017 - Making sense of the provisioning circus
Joe Ferguson
Ā 
PDF
Console Apps: php artisan forthe:win
Joe Ferguson
Ā 
PDF
Console Apps: php artisan forthe:win
Joe Ferguson
Ā 
PDF
All the Laravel things: up and running to making $$
Joe Ferguson
Ā 
PDF
So You Just Inherited a $Legacy Application… NomadPHP July 2016
Joe Ferguson
Ā 
PDF
MidwestPHP 2016 - Adventures in Laravel 5
Joe Ferguson
Ā 
PDF
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Joe Ferguson
Ā 
PDF
Adventures in Laravel 5 SunshinePHP 2016 Tutorial
Joe Ferguson
Ā 
PDF
php[world] 2015 Laravel 5.1: From Homestead to the Cloud
Joe Ferguson
Ā 
PDF
php[world] 2015 Training - Laravel from the Ground Up
Joe Ferguson
Ā 
PDF
Madison PHP 2015 - DevOps For Small Teams
Joe Ferguson
Ā 
PDF
ZendCon 2015 - DevOps for Small Teams
Joe Ferguson
Ā 
PDF
ZendCon 2015 - Laravel Forge: Hello World to Hello Production
Joe Ferguson
Ā 
PDF
Secure Form Processing and Protection - Devspace 2015
Joe Ferguson
Ā 
PDF
Acceptance & Functional Testing with Codeception - Devspace 2015
Joe Ferguson
Ā 
PDF
Laravel 5 New Features
Joe Ferguson
Ā 
Modern infrastructure as code with ansible cake fest 2021
Joe Ferguson
Ā 
Modern infrastructure as code with ansible PyTN
Joe Ferguson
Ā 
Slim PHP when you don't need the kitchen sink
Joe Ferguson
Ā 
Throwing Laravel into your Legacy Appā„¢
Joe Ferguson
Ā 
DevSpace Conf 2017 - Making sense of the provisioning circus
Joe Ferguson
Ā 
Console Apps: php artisan forthe:win
Joe Ferguson
Ā 
Console Apps: php artisan forthe:win
Joe Ferguson
Ā 
All the Laravel things: up and running to making $$
Joe Ferguson
Ā 
So You Just Inherited a $Legacy Application… NomadPHP July 2016
Joe Ferguson
Ā 
MidwestPHP 2016 - Adventures in Laravel 5
Joe Ferguson
Ā 
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Joe Ferguson
Ā 
Adventures in Laravel 5 SunshinePHP 2016 Tutorial
Joe Ferguson
Ā 
php[world] 2015 Laravel 5.1: From Homestead to the Cloud
Joe Ferguson
Ā 
php[world] 2015 Training - Laravel from the Ground Up
Joe Ferguson
Ā 
Madison PHP 2015 - DevOps For Small Teams
Joe Ferguson
Ā 
ZendCon 2015 - DevOps for Small Teams
Joe Ferguson
Ā 
ZendCon 2015 - Laravel Forge: Hello World to Hello Production
Joe Ferguson
Ā 
Secure Form Processing and Protection - Devspace 2015
Joe Ferguson
Ā 
Acceptance & Functional Testing with Codeception - Devspace 2015
Joe Ferguson
Ā 
Laravel 5 New Features
Joe Ferguson
Ā 
Ad

Recently uploaded (20)

PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
Ā 
PPTX
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
Ā 
PPTX
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
Ā 
PPTX
Revolutionizing Code Modernization with AI
KrzysztofKkol1
Ā 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
Ā 
PPTX
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
Ā 
PPTX
How Apagen Empowered an EPC Company with Engineering ERP Software
SatishKumar2651
Ā 
PPTX
Platform for Enterprise Solution - Java EE5
abhishekoza1981
Ā 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
Ā 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
Ā 
PPTX
Human Resources Information System (HRIS)
Amity University, Patna
Ā 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
Ā 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
Ā 
PDF
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
Ā 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
Ā 
PDF
ģœ ė‹ˆķ‹°ģ—ģ„œ Burst Compiler+ThreadedJobs+SIMD ģ ģš©ģ‚¬ė”€
Seongdae Kim
Ā 
PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
Ā 
PPTX
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
Ā 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
Ā 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
Ā 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
Ā 
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
Ā 
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
Ā 
Revolutionizing Code Modernization with AI
KrzysztofKkol1
Ā 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
Ā 
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
Ā 
How Apagen Empowered an EPC Company with Engineering ERP Software
SatishKumar2651
Ā 
Platform for Enterprise Solution - Java EE5
abhishekoza1981
Ā 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
Ā 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
Ā 
Human Resources Information System (HRIS)
Amity University, Patna
Ā 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
Ā 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
Ā 
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
Ā 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
Ā 
ģœ ė‹ˆķ‹°ģ—ģ„œ Burst Compiler+ThreadedJobs+SIMD ģ ģš©ģ‚¬ė”€
Seongdae Kim
Ā 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
Ā 
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
Ā 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
Ā 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
Ā 

Composer at Scale, Release and Dependency Management