continuous delivery - bbc weather watchers - port80

Post on 14-Jan-2017

243 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

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

top related