55
You don’t need DTAP DevOps and Continuous Delivery at Backbase DevOps Amsterdam meetup, 17-12-2015 Backbase, Amsterdam Pavel Chunyayev

You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Embed Size (px)

Citation preview

Page 1: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

You don’t need DTAPDevOps and Continuous Delivery at Backbase

DevOps Amsterdam meetup, 17-12-2015

Backbase, Amsterdam

Pavel Chunyayev

Page 2: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015
Page 3: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Amsterdam

Levi9 HQAmsterdam – 2005

25 people

Novi Sad

SerbiaNovi Sad – 2005

320+ people

Zrenjanin

SerbiaZrenjanin– 2014

30+ people

Iasi

RomaniaIasi – 200780+ people

Kiev

UkraineKiev – 2008130+ people

Page 4: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Electronic

Retail

Digital

Marketing

Traffic and

Transport

Software

Services

Page 5: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Customer satisfaction 2015

• 4th year great results in Outsourcing Performance study

• 2015: 100% customer recommendation scoreExcellent trust score

Page 6: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015
Page 7: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Forester Wave: Omni channel Banking Solutions Q3‘15

Page 8: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Gartner Magic Quadrant for Horizontal Portals 2014

Page 9: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Mark Rutteopens Backbaseoffice in Atlanta

Page 10: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Top 10 companies in NL with best work-life balance

Page 11: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

About me

• 11 years of IT experience

• Lived and worked in Ukraine and Estonia

• Moved a year ago to the Netherlands

• Learning Dutch

• Love cycling

• De Holandse 100• https://www.dehollandse100.nl/actie/pavel-chunyayev

Page 12: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Continuous Delivery

Page 13: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Safely, rapidly and predictably deliver new features to production

Page 14: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Quality > Speed

Page 15: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

DTAP

Page 16: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Journey across environments

Development Testing Acceptance Production

Page 17: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

DTAP is history

• It was hard to create infrastructure -> we had to reuse it

• Manually provisioned environments• Took a lot of time

• Ticket to system administrator

• Nightmare for both parties• End up with golden images

• Fixed set of environments• Name them

• Configure once

• Maybe even automate deployment

Page 18: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

DTAP is evil

• Configuration drift• Environments have nothing to do with production

• With time they move more and more apart

• Dirty environments• Undocumented, forgotten hacks

• No one can recreate environment as no one knows how to configure them

• Testing is complicated• Different bugs on different environments

Page 19: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Downwards spiral

Page 20: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

You don’t need DTAP

Page 21: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Immutable infrastructure

Page 22: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Immutable infrastructureImmutable delivery

Page 23: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Easy on-demand environments

Page 24: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Change in paradigm

• Change in paradigm of the way software is built, shipped and managed

• No more static infrastructure

• Provision and create infrastructure just in time when it’s needed

• And then throw it away

Page 25: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Create • Use • Dispose

Page 26: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Never change again

• Never touch or change the running system. • No configuration changes

• No complicated update processed

• Any change = new deploy

• Create infrastructure right before deployment

• You always start from the scratch• Identical process

• No more dirty environments

• Does it matter how environment is called if the deployment process is identical?

Page 27: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Variability

• Variability is enemy

• Manufacturing: Six sigma

• How to deliver environments at scale?

Page 28: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Prerequisites

• Cloud • Manage infrastructure lifecycle as code / through API

• Docker containers

• Automate the setup and deployment of your application

Page 29: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Continuous Delivery

• Immutable infrastructure enables CD

Build • Test • Deploy

• When you want to change - go through the whole pipeline

Page 30: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Infrastructure is integral part of application

• Application is delivered as a set of immutable virtual machines or containers.

• Any change in the application is actually a change of infrastructure

• Exactly the same process to deploy any version of the application

• MTTR is predictable • It’s time required for whole pipeline execution

• Gives incentive to optimize the process in order to speed it up

Page 31: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Immutable infrastructure applies to

• Stateless applications• State is stored outside (DB)

• Even more relevant for microservices

• Pushing of responsibility to someone else

• Databases

• Separate DBMS from data

• There are solutions for this (e.g. Flocker)

Page 32: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Deliverables

• Server images (AMIs) or containers should be built using automated CI/CD process• Base image + application = deliverable

• Or the configuration process and deployment scripts are applied over and over again

Page 33: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Deliverables

• Create your own images, don't reuse someone else's

• Images must be versioned and all history must be saved

• Implement automated testing of infrastructure

• Create building blocks

• Test deployments without any fear• Deployments are automated

• Identical deployment procedures to all environments

• Green/blue, canary and rolling deployments

Page 34: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Immutable infrastructure

• Get infrastructure exactly when it’s needed

• Dispose immediately after use

• Never regret

Page 35: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

Continuous Delivery at BackbaseAnd immutable infrastructure

Page 36: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Backbase

• Research and Development

• Professional Services

Customer Experience Platform

Launchpad Mobile SDK

Digital Banking Services

Digital Banking Platform

Page 37: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

CXP Architecture

Page 38: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Publishing

• Multiserver configuration is needed to test publishing

Editorial Staging Live

Page 39: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Dual deployment model

• Cloud Native first

• But bank are not ready

• Dual deployment model• Containers/cloud – modern

• Enterprise style

Page 40: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Teams structure

• Squads• Team is divided into squads

• Each squad is responsible for one or more components

• Components• Components = microservices

• >10 BE components

• Dozens of FE components

• Continuous Delivery squad is a Platform team

Page 41: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Platform team

• Now consists of 4 people, 5th starting in January

• You can be part of this team

• Several generations of platform• We are in the middle of introduction 4th generation

Page 42: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Generations

1. Infrastructure as a service MVP

2. All configurations for CXP 5.6 and testing at scale

3. Docker and microservices support

4. Unified way of delivering infrastructure (being rolled out)

Page 43: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Development environments

• Docker containers = building blocks• Docker Machine

• Docker Compose

• No need to use virtual machines

• No need to use jetty and h2

• No need to start whole environment

Page 44: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Building blocks

• Ansible roles

• Packer

• Infrastructure testing• Before – Starting full environments

• Now – Testing roles in isolation• Test-kitchen

• Serverspec

Page 45: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Delivery pipelines

git Build Version Test Release

Component 1

git Build Version Test Release

Component 2

git Build Version Test Release

Component 3

Assemble CXP

Test Release

342

128

473

921

Page 46: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Pipelines as code

• Pipelines as code• Changes -> same process as code changes

• First stage is enforcing specifications

• GoCD + Gomatic (updated)• https://github.com/Backbase/gomatic

Page 47: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Platform

• Services to manage environments lifecycle

• The same way for everyone

• Autoconfig• AWS

• Autodocker• Docker

Page 48: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Autodocker

• Swarm cluster• Interface for docker environments provisioning

• Limitations• One host for networking

• Memory checks

• Destruction after TTL

• Configuration is a docker compose file

• Start exact version of your component and released version of all other components

Page 49: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Autoconfig

• AWS on-demand multi-server environments• Any application version• Any configuration option

• JSON (Form data) with parameters{

"server": "jboss",

"database": "oracle",

"universal_collection": "true",

"htts": "true"

}

Page 50: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Autoconfig APIs

• GET /api/stacks - List stacks available for provisioning

• GET /api/environments - List all currently provisioned environments

• POST /api/stacks/<stack_name> - Provision specified stack

• DELETE /api/environments/<environment_id> - Destroy environment with specified id

• DELETE /api/environments/all - Destroy all environments

Page 51: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Autodocker APIs

• POST /api/docker - create new docker environment

• GET /api/docker/<env-name> - get info about specified environment

• GET /api/docker - get info about docker environments provisioned by the user Optional parameters:• all_users = True • uptime (value in hours) • owner (AD username)

• DELETE /api/docker/<env-name> - delete specified docker environment

• DELETE /api/docker - remove docker environments provisioned by the user Optional parameters:• all_users = True • uptime (value in hours)• owner (AD username)

Page 52: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Quality

• Build the quality in the process

• Move tests to the left

• Testing pyramid

• No more manual testing

• Ideal testing framework • Manage parallelism

• Create environments

M

E2E

Contract

Component

Integration

Unit

Page 53: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Releasing

• Banks don’t want frequent releases

• 3 stage release process• Rolling

• In the effort to not release too infrequently

• Technical previews• At the end of every sprint

• Marketing releases• When product manager decides to release

Page 54: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Culture

• No blaming, no fingerpointing

• Failing the build is a learning opportunity

• We failed a lot• Several iterations of JS deployments

• Visibility

• Shared responsibility• Squad – for component delivery

• Tribe – for product delivery

Page 55: You don’t need DTAP + Backbase implementation - Amsterdam 17-12-2015

@PavelChunyayev

Key takeaways

• Forget about DTAP

• Believe in immutable infrastructure

• Create repeatable and reliable process for releasing software

• Build quality in

• Improve continuously

Any questions?

[email protected]