continuous delivery - bbc weather watchers - port80
TRANSCRIPT
CONTINUOUS DELIVERY WITH BBC WEATHER WATCHERS
12 WEEKS, 600 RELEASES AND THE ONE SHOW
goo.gl/idX09I
TECH LEAD, PRINCIPAL DEVELOPER, BBC NEWS
James Cryer
BBC WEATHER WATCHERS
PRODUCT OVERVIEW
▸ BBC Crowd Sourcing Weather Application
▸ Part of ‘Make it Digital’ 2015
▸ Allowing audiences to create and share their own Weather reports
▸ Easy to use for users with little digital experience
▸ Create a sense of community
WHAT A GREAT IDEA, SAW IT ADVERTISED ON BBC 1 THIS MORNING AND LOGGED ON STRAIGHT AWAY.
Audience feedback
PROJECT OVERVIEW
▸ Collaboration from several teams within the BBC
▸ Challenging timescales
▸ Technical challenges
▸ A fixed deadline
▸ Agile team brought together for the initial phase
TEAM OVERVIEWPRODUCT OWNER
PROJECT MANGER
EDITOR DEVELOPERS TECHNICAL ARCHITECT
UX&D TESTER
CHALLENGES
▸ Design and development in parallel
▸ Dependency on several other BBC services (e.g. BBC ID)
▸ Privacy and security Concerns
▸ Timescales (12 weeks development)
▸ Unmovable deadline
▸ Scalability
BBC PIPELINE PROCESS
BBC’S TRANSITION TO CONTINUOUS DELIVERY
▸ Started 4 years ago
▸ Pilot included teams such as iPlayer Transcoding and Travel
▸ Tools to enable teams to practise Continuous Delivery
▸ Aim to reduce 2 weeks releases to hourly releases
▸ Empowering teams
DEPLOYMENTS YESTERDAY…
CONTINUOUS DELIVERY
CONTINUOUS DELIVERY IS A SOFTWARE DEVELOPMENT DISCIPLINE WHERE YOU BUILD SOFTWARE IN SUCH A WAY THAT THE SOFTWARE CAN BE RELEASED TO PRODUCTION AT ANY TIME.
Jez Humble
AIMS
▸ Respond quickly to market or business change
▸ Quicker reaction to user feedback
▸ Reduced risks
DEPLOYMENT PIPELINE
ANTI PATTERNS: MANUAL DEPLOYMENT
▸ Manual testing confirms software working as expected
▸ Releases take longer than a few minutes
▸ Releases often result in rollbacks
▸ Extensive documentation needed for process
ANTI PATTERNS: PRODUCTION-LIKE ENVIRONMENTS
▸ Little or no interaction between operations and development team
▸ Release to staging environment is first time operation team interact with a release
▸ Lack of testing in production like environment until it is too late
BENEFITS
▸ Empowered Teams
▸ Improved quality and reduced errors
▸ Lowering stress
▸ Deployment flexibility
CONTINUOUS DELIVERY AND WEATHER WATCHERS
TECHNICAL OVERVIEW
▸ Cloud based solution
▸ Core Java Library
▸ Dropwizard Web Apps
▸ Micro Service Architecture
HIGH LEVEL DESIGN
DEPLOYMENT PIPELINE
CONFIGURATION MANAGEMENT
▸ Github
▸ Internal Tooling
▸ Configuration per environment
▸ RPMs and NPM
CONFIGURATION
CONTINOUS INTEGRATION
▸ Dedicated Jenkins CI server
▸ Unit tests on PR raised
▸ Grunt build tool
▸ Linting
▸ Automated deployment to integration environment
CI
TESTING
▸ Unit testing
▸ Integration testing
▸ Exploratory testing
▸ Non-functional testing
▸ Testers decide when to promote to next stage of the pipeline
BUILD TOOLS
▸ Maven
▸ Grunt
▸ rpmbuild
▸ mock
DEPLOYMENT
▸ Amazon Web Services
▸ EC2 - AutoScaling Groups
▸ DynamoDB
▸ CloudFormations
▸ Lambda
▸ Centos 6
▸ Bake Scripts
DEPLOYMENT
DEPLOYMENT
RETROSPECTIVE
THE RESULTS…
THE ONE SHOW
THINGS THAT WORKED WELL…
▸ Automated tests before merging to master
▸ Automated deployments to integration
▸ Automated configuration of production environments
▸ Scalable solution
THINGS THAT DIDN’T WORK SO WELL…
▸ Movement away from Micro Service design
▸ Skilling the team
▸ Lack of visibility of production environment
BEYOND BBC TOOLS
48% PEOPLE THINK IT WILL BE STANDARD WHEN ASKED “IS CONTINUOUS DELIVERY BECOMING A UNIVERSAL STANDARD?
SauceLabs - 2015 Guide to Continuous Delivery
CONFIGURATION MANAGEMENT
▸ Puppet
▸ Chef
▸ Ansible
CONTINOUS INTEGRATION
▸ CloudBee
▸ CircleCI
▸ TravisCI
▸ AppVeyor
TESTING
▸ BrowserStack
▸ AWS Device Farm
▸ SauceLabs
▸ Xamarin Test Cloud
▸ Unit / Integration Test Frameworks?
NON-FUNCTIONAL TESTING
▸ WebPageTest
▸ SSLLabs
▸ Google PageSpeed Insights
▸ Google Accessibility Developer Tools
▸ Gatling
▸ JMeter
BUILD TOOLS
▸ ANT
▸ Maven
▸ Gulp
▸ Grunt
▸ Gradle
DEPLOYMENT
▸ AWS CodeDeploy
▸ CodeShip
▸ GO
▸ Terraform
▸ Ansible
▸ OpenShift