microservices pros and cons dark

20
MICROSERVICES Pros & Cons Things to Think About

Upload: andrew-siemer

Post on 13-Apr-2017

390 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Microservices pros and cons dark

MICROSERVICESPros & Cons Things to Think About

Page 2: Microservices pros and cons dark

WHAT IS A MICROSERVICE?• Small piece of software that does one thing really well• Loosely coupled• Separate data store• Just enough to solve a problem• Right technology for the job• Autonomous• Can update as often as is needed• Intelligence in the service, not the routing/infrastructure/bus• Immutable infrastructure

Page 3: Microservices pros and cons dark

SHOULD I USE MICROSERVICES?• It depends!• Likely no• Think about fallacies of distributed computing:

• The network is reliable• Latency is zero• Bandwidth is infinite• The network is secure• Topology doesn’t change• There is one administrator• Transport cost is zero• The network is homogeneous

Page 4: Microservices pros and cons dark

WHEN SHOULD I CONSIDER MICROSERVICES?

• Many teams work on the same code base• Merge hell, cross team dependencies, ...• Huge monolithic application which is difficult to deploy• Monolith cannot be scaled horizontally• Different parts of the application have totally different requirements

• CPU bound• I/O bound• Memory bound• etc.

• Some but not all areas of the application change frequently• Development stack is outdated. New tools and patterns are hard if

not impossible to embrace

Page 5: Microservices pros and cons dark

HOW BIG SHOULD A MICROSERVICE BE?• Small enough to fit full context in your head• Big enough to solve a problem• Owned by one team

Page 6: Microservices pros and cons dark

WHAT DOES “BIG ENOUGH” LOOK LIKE...Some examples:• Docker: https://github.com/docker/docker-birthday-3 • Lambda: https://github.com/meconlin/lambda-generic-microservice • C#: https://github.com/AFASSoftware/CQRS-Microservices • Spring: https://github.com/kbastani/spring-cloud-microservice-example• akka: https://github.com/theiterators/akka-http-microservice• https://github.com/dustinbarnes/microservice-example

Page 7: Microservices pros and cons dark

HOW SHOULD A MICROSERVICE COMMUNICATE?

• Synchronous• Asynchronous• Messaging• Fan out• HTTP/REST• TCP/IP• Pub/sub

...but zero logic in the communication pipeline!

Page 8: Microservices pros and cons dark

ARE MICROSERVICES LESS COMPLEX?• Code wise, yes• Deployment wise, yes

• Infrastructure configuration wise, no

• Dependency managementwise, no

Page 9: Microservices pros and cons dark

MICROSERVICE MANAGEMENT OVERVIEW

Page 10: Microservices pros and cons dark

HOW TO MANAGE MICROSERVICES?It’s a big world with lots of cutely named tools!

• Deploy: Jenkins / TeamCity / Ansible / Chef / Capistrano / StackStorm• Discovery/config: Consul / Consul-Templates / etcd / Registrator / skydns• Containers: Docker / Compose / Vagrant / Otto / Lambda• Container Clustering: ECS / Kubernetes / Mesos / Docker Swarm• Request Routing: Nginx / HAProxy / Kong / API Gateway• Self Healing: Consul / ZooKeeper / Serf• System Health: hystrix, SumoLogic, Nagios, NewRelic, statsd, LogEntries

AUTOMATE EVERYTHING

Page 11: Microservices pros and cons dark

DEPLOYMENT• Continuous Deployment• Continuous Delivery• Versioned• Blue / Green• A-B Testing• Net new, add to routing• Zero downtime

Tools: Jenkins / TeamCity / Ansible / Chef / Capistrano / StackStorm

NEVER DESTRUCTIVE

Page 12: Microservices pros and cons dark

SERVICE DISCOVERY & CONFIGURATION• Minimize known dependencies• No bottlenecks due to outage allowed• Down stream health monitoring• Configuration at deployment time when possible• Configuration in runtime if you have to (adds fragility/degradation)

Tools: Consul / Consul-Templates / etcd / Registrator / skydns

NO DEPENDENCY KNOWLEDGE

Page 13: Microservices pros and cons dark

CONTAINERS & CLUSTERING• Removes “works on my box” story• Installed software dependencies become constrained to your need• No more “servers as pets”• Infrastructure as code becomes a reality• Can deploy to fabric/cluster for better auto scaling story• Serverless truly abstracts hardware from application

Tools: Docker / Compose / Vagrant / Otto / Lambda / AWS ECS / Kubernetes / Mesos / Docker Swarm / cAdvisor

NO HARDWARE DEPENDENCY PREFERRED

Page 14: Microservices pros and cons dark

REQUEST ROUTING• Public abstraction from internal details• Internal location can become dynamic• Multiple versions of the same thing can be long lived• Makes deployment story more flexible• Live traffic can be drained over• Warming up new instances is possible

Tools: Nginx / HAProxy / Kong / API Gateway / Kubernetes

NEVER EXPOSE YOUR SERVICES DIRECTLY

Page 15: Microservices pros and cons dark

SELF HEALINGIt’s not IF it will fail but WHEN it will fail!

• Auto healing• Automated Remediation• Circuit breaker• Fallbacks• Graceful degradation• Don’t cascade failures

Tools: Consul / ZooKeeper / Serf

PLAN FOR FAILURE FIRST

Page 16: Microservices pros and cons dark

SYSTEM HEALTH• Measure anything, measure everything

• https://codeascraft.com/2011/02/15/measure-anything-measure-everything/ • Performance monitoring, exception monitoring, logs, metrics• NewRelic, nagios, SumoLogic• statsd / graphite (hosted graphite) / kibana / grafana • Centralized logging (logentries, logstash)• Circuit Breaker (hystrix)

Tools: hystrix, SumoLogic, Nagios, NewRelic, statsd, LogEntries

VISUALIZE EVERYTHING

Page 17: Microservices pros and cons dark

CIRCUIT BREAKERS WITH HYSTRIXFIND/MAKE SOMETHING SIMILAR!

Page 18: Microservices pros and cons dark
Page 19: Microservices pros and cons dark
Page 20: Microservices pros and cons dark

QUESTIONS?James Allen

in/jamesallenatx

Miguel Gonzalezin/magonz@doesnotcompile

Gabriel Schenkerin/gabrielschenker@gnschenker

Andrew Siemerin/andrewsiemer@asiemer

Seth Orellin/sethorell

Campbell McNeillin/campbellmcneill@campbellmcneill

http://www.slideshare.net/asiemer/microservices-prosandconsdark