API World 2016 presentation

Post on 16-Apr-2017

56 views 0 download

transcript

Continuous Delivery in Microservices

EnvironmentRavi Ambati

Senior Engineering Manager, Workday

Agenda

1.Continuous delivery overview

2.Microservices overview

3.Artifact Types

4.Best practices with JAR artifact

5.Best Practices with Services

6.When should you start?

Continuous Delivery

What is it?

Capability to deploy any commit into production

Advantages:

1. Time to market

2. Reduced risk

3. More automation

4. Team productivity

5. Customer value

6. Agile development/planning

Continuous Delivery

Check InBuild and Unit test

Integration Test

System Tests

Visual/Perf tests

Stage in QA ( Exploratory testing)

Once approved, deploy to Production

Code-only pipeline without any infrastructure automation

Code-only pipeline + On Demand infrastructure pipeline

Code + infrastructure automation Acquire VMs -> Configure -> Code pipeline -> Release

Image as a service

Docker containers

Continuous Delivery

Microservices overview

1.Well, smaller and independent services, product-based ( !Nano)

2.Meaningful functionality

3.Own lifecycle (Build, Test and Run)

4.Provides abstraction

5.Helps scale organization

1.Artifacts that run in your service like client libraries, JARsa. Utilities/helpers

b. Service client libraries

2.Servicesa. Independent run time services

b. Runs on a web/app container

Artifact Types

Best practices - Client Libraries (JAR files)

Semantic versioning major.minor.patch

Backward compatibility

Publishes source jars to help in debugging

Publish release notes along with artifact/accessible location

Migration documentation for major version changes

At last, Communication about new release

MS1 MS2 MS3

MS4 MS5 MS6

Your Product Runtime in an Environment

● Imagine this kind of product with microservices

● Work with each other● Brings up shared services

like service discovery, standardized logging/monitoring/alerting service

● Health API

Best practices - Services

1.Versioning to allow all consumers some flexibilitya. Backward compatibility

b. If breaking change, use consumer based switches to serve both old/new

2.Edge/Interface testing with other service dependenciesa. Test Service contract against service sandbox in your pipeline

3.Automation across all layersa. Testing ( functional, performance, visual)

b. Configuration management

c. Application deployment

d. Log monitoring

Best practices - Services - Contd

●Feature togglesa. By Feature

b. By Environment

c. By Customer

●Environment uniformitya. Number of servers, spec should be representative

b. No surprises in production

When should you start CD?

As soon as you start

Requires extensive automation

Requires DevOps Engineers

Culture - Product managers to support

Thank you

ravi.ambati@workday.com