microservicios, en qué lío me he metido

67
Microservicios, en qué lío me he metido by MADRID · NOV 18-19 · 2016 Ernesto Hernández @ehdez73 Miguel Ortega @mortegarod

Upload: ernesto-hernandez-rodriguez

Post on 11-Jan-2017

342 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Microservicios, en qué lío me he metido

Microservicios,

en qué lío me he metido

by

MADRID · NOV 18-19 · 2016

Ernesto Hernández

@ehdez73

Miguel Ortega

@mortegarod

Page 2: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Page 3: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Page 4: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

● 7 Countries● Over 50 carriers● >300 shipping services● >500% shipment grow● >2M shipments/year

Page 5: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

GIVEN:

The team size, the requirements and the legacy systems that we had.

WHEN:

We tried to migrate to a microservices architecture.

THEN:

We found that this approach to microservices was the one that better suited to our needs.

Work in progress

Page 6: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

New Idea

http://transformcustomers.com/category/business-transformation/

Page 7: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Our legacy old

Monolith

http://isijisan.blogspot.com.es/2015/03/el-escarabajo-pelotero.html

Page 8: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Fast growth

Page 9: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Our shiny and new

Monolith

https://mekubal.wordpress.com/2012/04/03/the-myth-of-monolithic-judaism/

KOKUDO

Page 10: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Our Monoliths

KOKUDO

Page 11: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Business needs!!! We need an API

Page 12: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016Sometimes you need to clean up

Page 13: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

● Another monolith

● ESB orchestration

● DB coupling

● Fixed deploy dates

● Something distributed

● More choreography

● Different storages

● Deploy flexibility

Page 14: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

It seems clear right?

Microservices

Page 15: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Not so fast...

2014 2015 2016

Page 16: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016but what the hell is a microservice?

CHALLENGE ACCEPTED

Page 17: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 1

Page 18: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 1

Page 19: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 2

Page 20: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 2

● ONE DATABASE● CODE STILL IN MONOLITH

FATAL

Page 21: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 3

Page 22: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 3

● ONE DATABASE● NO REAL MICROSERVICES● DEPLOY/CONFIGURATION HELL

ERROR

Page 23: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Turn

Around

Page 24: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 4

Page 25: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Synchronous

Network call

Page 26: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Synchronous

Network call

Page 27: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 4

Page 28: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 4

● SYNCHRONOUS CALLS HELL● WHERE ARE MY JOINS?

warning

Page 29: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Asynchronous

MESSAGE BUS

Page 30: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 5

Page 31: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 5

Page 32: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 5

Page 33: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 5

● SHARED LIBRARY● NEW MONOLITHS

INFO

Page 34: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 6

Page 35: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Packlinktechture Phase 6

● DUDE, WHERE ARE MY LOGS?

DEBUG

Page 36: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Correlation id

Network call{ correlation_id: 123, ... }

{ correlation_id: 123, ... }{ correlation_id: 123, ... }

{ correlation_id: 123, ... }

{ correlation_id: 123, ... }

{ correlation_id: 123, ... }

Page 37: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Logging stack

Page 38: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Logging stack

TRACE

Page 39: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

● EVENT SOURCING● CQRS

Page 40: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

The Platform

Page 41: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Docker Ecosystem FTW

● build once, run everywhere● easy scaling with docker-compose ● infrastructure scaling with swarm

Page 42: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Hashicorp Consul

- Key/Value- consul-template- Leader election- DNS - Already needed for docker swarm

Page 43: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Service discovery

Page 44: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

How do I develop locally?

Page 45: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

New old problems

● Onboarding new developers● Config management● Debugging● Data Bootstrapping

Page 46: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

What do we need?

● Infrastructure Bootstrapping:○ up and running○ configuration

● Microservices Bootstrapping:○ up and running○ application data

Page 47: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

How do we solved it?

● Infrastructure Bootstrapping.○ up and running○ configuration

● Microservices Bootstrapping:○ up and running○ application data

Page 48: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

How do we solved it?

● Infrastructure Bootstrapping.○ up and running○ configuration

● Microservices Bootstrapping:○ up and running○ application data

Page 49: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Local development

Page 50: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Service discovery (review)

Page 51: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Service discovery (IDE)

Page 52: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Service discovery (remote)

Page 53: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Service discovery (all together)

Page 54: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Our (helpful) Dev Tools

Page 55: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016https://slack.com

Page 56: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016https://newrelic.com

Page 57: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Wiggumbot

https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+pluginhttp://docs.sonarqube.org/display/PLUG/GitHub+Plugin

Page 58: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Hound

https://github.com/etsy/hound

Etsy, Inc.

Page 59: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Asciidoctor

http://asciidoctor.org

Page 60: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Custom scripts

check-status.sh

compose-upgrade.sh

Page 61: Microservicios, en qué lío me he metido

dashboards

checks

channels

metrics

Platform monitoring

Page 62: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Was it worth it?

Page 63: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

# Shipments

Page 64: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

# Deployments

2 → ~20 per week

Page 65: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

It seems clear right?

Q&A

Page 66: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

Thank you

Page 67: Microservicios, en qué lío me he metido

MADRID · NOV 18-19 · 2016

WE ARE HIRING