48
Building a Microservice Deployment Pipeline with Couchbase Howard Uman

Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Embed Size (px)

Citation preview

Page 1: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Building a Microservice Deployment Pipeline with CouchbaseHoward Uman

Page 2: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

166,000+worldwide active users

1.4 millionevents managed

1,900+worldwide employees

$1 billion+market capitalization

HQ — Tysons Corner, VA

London, UK

New Delhi, India

Sydney, Australia

Austin, TX

Portland, OR

Atlanta, GA

Santa Barbara, CA

New Brunswick, Canada

Page 3: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Why Couchbase?

• Memcached compatibility

• Clients / Ease of use

• Ease of administration

• Scalability

• Indexing (Views & N1QL)

Page 4: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Where Couchbase fits in @ Cvent

Page 5: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

What we have…

• 8 Couchbase clusters

• 215+ applications

• 100 environments

• 45 teams

Page 6: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices

Page 7: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

What is a Microservice?

• Modular

• Decentralized

• Scalable

• Well defined interface

Page 8: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 9: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 10: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 11: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 12: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 13: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 14: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 15: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 16: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 17: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices@ Cvent

Ease of Development

Scalability

Testability

Connected

Page 18: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Dropwizard

RetrofitRefit

Microservice Stack @ Cvent

Page 19: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservices at Cvent

• Java• Dropwizard• Dropwizard-Couchbase & other libraries• Retrofit / Refit

• Jenkins• Dropkick• View Management• N1QL Index Management• Build & Deploy

Page 20: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Best Practices

Page 21: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Microservice Best Practices

• Managed Schema

• Provide Clients

• Configuration

• Service Discovery

• Utility

• Enforcement

Page 22: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Bucket Best Practices

• 1 Thread Per Bucket

• Shared across applications

• Document key prefix: region, application, and typeex: Staging::Events::Wizard::{id}

• Chose bucket based on nature of data

Page 23: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Indexing Best Practices

• 1 Thread Per Design Document, Share.• Give your indexes Application-Entity-based names.• Indexes should leverage the document prefixes to reduce

data:function(doc, meta) {  var idArray = meta.id.split("::");  var applicationName = idArray[1];  var objectName = idArray[2];  if (applicationName === "YOUR_APPLICATION" && objectName === "DESIRED_OBJECT" ...) {    // Do your processing / emit }}

• Deploy indexes together to minimize scans.

• Deploy to DR cluster at the same time (production)

Page 24: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Configuration

Page 25: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Configuration

Page 26: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Configuration

Page 27: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Configuration

Page 28: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Configuration

Page 29: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Configuration

Page 30: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Deployment

Page 31: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Service Deployment Pipeline

Development

Page 32: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Service Deployment Pipeline

Development

CI

Page 33: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Service Deployment Pipeline

Development

CI Test

Page 34: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Service Deployment Pipeline

Development

CI TestAlpha

Page 35: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Service Deployment Pipeline

Development

CI TestAlpha

Test

Page 36: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Service Deployment Pipeline

Development

CI TestAlpha

TestStaging

Page 37: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Service Deployment Pipeline

Development

CI TestAlpha

TestStaging

Test

Page 38: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Service Deployment Pipeline

Development

CI TestAlpha

TestStaging

TestProduction

Page 39: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Service Deployment Pipeline

Development

CI TestAlpha

TestStaging

TestProduction

Page 40: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Building a ServiceDemo

Page 41: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Managing Services

Page 42: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Jenkins

• Backups

• Copy/Transform data

• Delete Documents

• Manage Views (Update / Delete)

• Manage GSI (Update / Delete)

Page 43: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Jenkins

Page 44: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Managing Services

Demo

Page 45: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Monitoring

Page 46: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Monitoring

• Service Discovery queries services (/ok)

• Datadog dashboard (next) for NOC

• Datadog alerts (Couchbase integration)

• Couchbase alerts

• Custom monitoring (Datadog Agent Checks)

Page 47: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016
Page 48: Cvent: Building a microservice deployment pipeline – Couchbase Connect 2016

Thank you!Howard Uman @[email protected]