continuous integration and delivery at shapeways (matt boyle)

17
Continuous Integration and Delivery at Shapeways Matt Boyle NordicAPIs Platform Summit Stockholm, Sweden 25 October 2016

Upload: nordic-apis

Post on 09-Jan-2017

44 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Continuous Integration and Delivery at Shapeways

Matt Boyle NordicAPIs Platform SummitStockholm, Sweden25 October 2016

Page 2: Continuous Integration and Delivery at Shapeways (Matt Boyle)

What is Shapeways?The worlds largest 3d printing service and marketplace

Marketplace, service hub, and community hosted at Shapeways.com

REST API provided at api.shapeways.com

Page 3: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Why CI/CD?

Idea

Exploration

Definition

Execution

Release

Evaluation

Consider the SDLC

…except this one

All stages represent active, valuable work by software team members.

Page 4: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Releasing Software Starts Easy

Everything Working?

Page 5: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Releasing Software Gets Harder

Git pull Build FrontEnd?

Manage Symlinks?

Bounce Memcache

?

Restart Apache?

Page 6: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Releasing Software Gets REALLY hardBuild Artifact

Run tests

Deploy to multiple

datacenters

Intra-DC deployment to

servers

Manage artifacts on

serverRotate through load balancer

Generate documentation

Restart services

Detect regressions

Monitor for Breakages Deployments like this take time and

resources

If you don’t automate, you’ll spend as much time running deployments as you do writing code

Page 7: Continuous Integration and Delivery at Shapeways (Matt Boyle)

The Shapeways CI Story

Page 8: Continuous Integration and Delivery at Shapeways (Matt Boyle)

In The Beginning…

60 minute deployments No API documentation Frustrating Manual Testing

Page 9: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Baby Steps

Continuous Integration with Jenkins

Integration + Functional Testing with

Selenium

New tests required to ship features

Page 10: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Pro’ing up - JenkinsActive-Active Jenkins instances – one per datacenter

Use Jenkins API for remote execution of deployments and test jobs

Flow-based deployment using Jenkins Pipeline DDL

Page 11: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Pro’ing up - Coyote FrameworkIn-house FOSS testing framework for integration and functional testing

Thoughtfully developed testing infrastructure to ensure consistent, reliable, and maintainable tests

Two-level API testing: contract enforcement and functional flow

Page 12: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Pro’ing up - ACMEIn-house developed test management application

Schedule test runs on-demand for developers

Test analysis and intelligence

Page 13: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Pro’ing up - ChatOps via HubotGitHub-developed extensible chat bot written in CoffeeScript

Manage deployments, development/QA infrastructure, permission management

Acts as interface between our different tools: jenkins, coyote, acme, slack

Page 14: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Looking Ahead – Staged RolloutsPresent deployment is fast but requires us to be all-in on new code

Ability to use infrastructure for new feature A/B testing rather than user groups

Increased deployment time, but faster recovery should something go wrong

Page 15: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Looking Ahead - Swagger for all APIs, int+extEasier documentation generation

Client generation/update for multiple languages

Source of truth for service-based applications – contract enforcement, test generation

Page 16: Continuous Integration and Delivery at Shapeways (Matt Boyle)

Looking Ahead - Improved Testing ToolingGenerate testing profiles based on changes made in codebase

Code coverage for functional testing via URL mapping

Performance and capacity measurement based on previous test runs and environments

Page 17: Continuous Integration and Delivery at Shapeways (Matt Boyle)