Slide 1

Slide 1 text

@alexramirez #mucon #servicediscovery A SERVICE DISCOVERY PRIMER µCon 2016 / London / @alexramirez

Slide 2

Slide 2 text

@alexramirez #mucon #servicediscovery A SERVICE DISCOVERY PRIMER ABOUT ME • Alex Ramírez • alexramirez.com • Barcelona (born in Mexico City). • Working with ‘online stuff’ since 1994. • µServices (and SOA/EDA) evangelism, coding, designing, training & consulPng. • This is my 2nd µCon.

Slide 3

Slide 3 text

@alexramirez #mucon #servicediscovery A SERVICE DISCOVERY PRIMER TOC • Where are we? • Service Discovery? • Service Discovery paUerns • Service RegistraPon • QuesPons/Comments

Slide 4

Slide 4 text

@alexramirez #mucon #servicediscovery SOME GENERAL CONTEXT

Slide 5

Slide 5 text

@alexramirez #mucon #servicediscovery IT’S A FAST TRAIN!

Slide 6

Slide 6 text

@alexramirez #mucon #servicediscovery SOME GENERAL CONTEXT IT’S A FAST TRAIN

Slide 7

Slide 7 text

@alexramirez #mucon #servicediscovery SOME GENERAL CONTEXT IT’S A FAST TRAIN

Slide 8

Slide 8 text

@alexramirez #mucon #servicediscovery SOME GENERAL CONTEXT IT’S A FAST TRAIN

Slide 9

Slide 9 text

@alexramirez #mucon #servicediscovery SOME GENERAL CONTEXT IT’S A FAST TRAIN

Slide 10

Slide 10 text

@alexramirez #mucon #servicediscovery SOME GENERAL CONTEXT IT’S A FAST TRAIN

Slide 11

Slide 11 text

@alexramirez #mucon #servicediscovery SERVICE …DISCOVERY? 
 WTF? ( WHY THE FUSS?)

Slide 12

Slide 12 text

@alexramirez #mucon #servicediscovery HOW CAN A CLIENT DETERMINE THE INFORMATION (I.E. ADDRESS & PORT) OF A SERVICE IT WANTS TO CONNECT TO? Someone implementing µServices THE PROBLEM TO SOLVE

Slide 13

Slide 13 text

@alexramirez #mucon #servicediscovery SERVICE …DISCOVERY? SERVICE DISCOVERY 101 • Service Discovery: The way for a client to find about the informaPon (i.e. address:port) of a service that it will connect to. • TradiPonal applicaPons (physical hardware) & configuraPon files. • Cloud environments and architectures are different. • Understand the principles. • What happens with a service found on mulPple hosts?

Slide 14

Slide 14 text

@alexramirez #mucon #servicediscovery PREHISTORY C. 2013

Slide 15

Slide 15 text

@alexramirez #mucon #servicediscovery SERVICE …DISCOVERY? TRADITIONAL APPLICATIONS

Slide 16

Slide 16 text

@alexramirez #mucon #servicediscovery SERVICE …DISCOVERY? BALANCED CASES TOO

Slide 17

Slide 17 text

@alexramirez #mucon #servicediscovery HOW CAN A CLIENT DETERMINE THE INFORMATION OF A SERVICE THAT EXISTS IN MULTIPLE HOSTS
 …THAT CHANGE DYNAMICALLY? Someone implementing µServices THE PROBLEM GETS A BIT MORE COMPLICATED

Slide 18

Slide 18 text

@alexramirez #mucon #servicediscovery THE ‘CLOUD’

Slide 19

Slide 19 text

@alexramirez #mucon #servicediscovery THE CLOUD MAKES ALL EASIER: RIGHT? CLOUD ENVIRONMENTS

Slide 20

Slide 20 text

@alexramirez #mucon #servicediscovery THE CLOUD MAKES ALL EASIER: RIGHT? CLOUD ENVIRONMENTS

Slide 21

Slide 21 text

@alexramirez #mucon #servicediscovery THE CLOUD MAKES ALL EASIER: RIGHT? CLOUD ENVIRONMENTS

Slide 22

Slide 22 text

@alexramirez #mucon #servicediscovery THE CLOUD MAKES ALL EASIER. RIGHT? CLOUDY WEATHER • StaPc configuraPon? • Live system. Deploying services. Service instances. • Service network locaPons change o\en: scaling, upgrades, hosts fail/get replaced. • Service interrupPon is not a possibility. • Dynamic service registraPon and discovery.

Slide 23

Slide 23 text

@alexramirez #mucon #servicediscovery CONTAINERS

Slide 24

Slide 24 text

@alexramirez #mucon #servicediscovery CONTAINERS IMPLY EVEN MORE THINGS TO CONSIDER CONTAINERS • MulPple containers in a single host. • Networking with containers means more “fun”. • Several instances in different containers in a same host. • OrchestraPon

Slide 25

Slide 25 text

@alexramirez #mucon #servicediscovery THINGS TO SOLVE

Slide 26

Slide 26 text

@alexramirez #mucon #servicediscovery SERVICE DISCOVERY TWO MAIN THINGS TO SOLVE • Service RegistraTon • Service registering its informaPon in a central registry. • Host & port (somePmes auth credenPals, protocols, version and/or environment info). • Service Discovery • Client applicaPon querying a registry to get info about the services and locaPon.

Slide 27

Slide 27 text

@alexramirez #mucon #servicediscovery SERVICE DISCOVERY SERVICES CONNECT TO SERVICES

Slide 28

Slide 28 text

@alexramirez #mucon #servicediscovery SERVICE DISCOVERY SERVICES CONNECT TO SERVICES

Slide 29

Slide 29 text

@alexramirez #mucon #servicediscovery SERVICE DISCOVERY SERVICES CONNECT TO SERVICES

Slide 30

Slide 30 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS

Slide 31

Slide 31 text

@alexramirez #mucon #servicediscovery CLIENT-SIDE SD

Slide 32

Slide 32 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD

Slide 33

Slide 33 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD

Slide 34

Slide 34 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD

Slide 35

Slide 35 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD

Slide 36

Slide 36 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD

Slide 37

Slide 37 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD

Slide 38

Slide 38 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD

Slide 39

Slide 39 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD

Slide 40

Slide 40 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD: EXAMPLE Ribbon Eureka SD, Service Registry Client, Eureka queries

Slide 41

Slide 41 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS CLIENT-SIDE SD Eureka Ribbon Eureka Eureka Eureka

Slide 42

Slide 42 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS PRO ET CONTRA: CLIENT-SIDE • Few moving parts • Few network hops

Slide 43

Slide 43 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS PRO ET CONTRA: CLIENT-SIDE • Client coupled to the Service Registry • Client-side implemented SD logic • Different programming languages/frameworks in the clients. May mean many libraries to code.

Slide 44

Slide 44 text

@alexramirez #mucon #servicediscovery SERVER-SIDE SD

Slide 45

Slide 45 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS SERVER-SIDE SD

Slide 46

Slide 46 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS SERVER-SIDE SD

Slide 47

Slide 47 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS SERVER-SIDE SD

Slide 48

Slide 48 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS SERVER-SIDE SD

Slide 49

Slide 49 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS SERVER-SIDE SD

Slide 50

Slide 50 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS SERVER-SIDE SD

Slide 51

Slide 51 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS SERVER-SIDE SD

Slide 52

Slide 52 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS SERVER-SIDE SD: EXAMPLES Google Compute Engine Load Balancing Metadata server ElasPc Load Balancer EC2

Slide 53

Slide 53 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS SERVER-SIDE SD: EXAMPLES ELB EC2

Slide 54

Slide 54 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS PRO ET CONTRA: SERVER-SIDE • Client-code gets simpler with no SD logic. Discovery is abstracted from the client. • More control over traffic, allowing A/B tests or canary releases. • Most cloud environments provide it as part of the plaform.

Slide 55

Slide 55 text

@alexramirez #mucon #servicediscovery DISCOVERY PATTERNS PRO ET CONTRA: SERVER-SIDE • If the router is not part of the platform, we have a new HA component to setup and manage in our infrastructure. • HA: multiple instances, always visible. • More network hops (compared to client-side), i.e. more latency.

Slide 56

Slide 56 text

@alexramirez #mucon #servicediscovery TINY BREAK

Slide 57

Slide 57 text

@alexramirez #mucon #servicediscovery SERVICE
 REGISTRATION

Slide 58

Slide 58 text

@alexramirez #mucon #servicediscovery SERVICE REGISTRY

Slide 59

Slide 59 text

@alexramirez #mucon #servicediscovery SERVICE REGISTRATION SERVICE REGISTRY DB DB/CLUSTER HA UP-TO-DATE CONSISTENT

Slide 60

Slide 60 text

@alexramirez #mucon #servicediscovery SERVICE REGISTRATION SERVICE REGISTRY: EXAMPLES Eureka Service Registry. Client & server. Library. Service RegistraPon implemented via ephemeral nodes under a namespace. Service RegistraPon implemented with k/v and addiPonal libraries

Slide 61

Slide 61 text

@alexramirez #mucon #servicediscovery SERVICE REGISTRATION SERVICE REGISTRY: EXAMPLES Own system, based on DNS and SRV records. K/V mechanism. Full service discovery system in the library. Built on top of etcd. DNS queries to discover available services. SmartStack framework: Nerve (status of machines/services) + Synapse (SD)

Slide 62

Slide 62 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS

Slide 63

Slide 63 text

@alexramirez #mucon #servicediscovery SELF-REGISTRATION

Slide 64

Slide 64 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS SELF-REGISTRATION

Slide 65

Slide 65 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS SELF-REGISTRATION

Slide 66

Slide 66 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS SELF-REGISTRATION

Slide 67

Slide 67 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS SELF-REGISTRATION: EXAMPLES Eureka

Slide 68

Slide 68 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS PRO ET CONTRA: SELF-REGISTRATION • Service instances know their own info, which allows for a complex set of the state model (up/down adds starPng, available, etc.)

Slide 69

Slide 69 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS PRO ET CONTRA: SELF-REGISTRATION • Service coupled to the Service Registry. • Reg logic implemented in every language/framework used. • A running service unable to handle requests lacks self- awareness to unregister itself.

Slide 70

Slide 70 text

@alexramirez #mucon #servicediscovery THIRD-PARTY REGISTRATION

Slide 71

Slide 71 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS THIRD-PARTY REGISTRATION

Slide 72

Slide 72 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS THIRD-PARTY REGISTRATION

Slide 73

Slide 73 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS THIRD-PARTY REGISTRATION

Slide 74

Slide 74 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS THIRD-PARTY REGISTRATION

Slide 75

Slide 75 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS THIRD-PARTY REG: EXAMPLES Prana ElasPc Load Balancer EC2 Registrator

Slide 76

Slide 76 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS PRO ET CONTRA: 3rd.PARTY-REG. • Service code is less complex with no logic of the registraPon. • The registrar can perform health checks to register/ unregister.

Slide 77

Slide 77 text

@alexramirez #mucon #servicediscovery REGISTRATION PATTERNS PRO ET CONTRA: 3rd.PARTY-REG. • The registrar may have limited state knowledge (up/down), with no info on request handling. • If the registrar is not part of the infrastructure, it’s a new component with HA needs to maintain and configure.

Slide 78

Slide 78 text

@alexramirez #mucon #servicediscovery WRAP UP

Slide 79

Slide 79 text

@alexramirez #mucon #servicediscovery CONSIDERATIONS WHEN CHOOSING

Slide 80

Slide 80 text

@alexramirez #mucon #servicediscovery CHOOSING SD/SR SOME CONSIDERATIONS LB Monitoring Availability Dependencies IntegraPon

Slide 81

Slide 81 text

@alexramirez #mucon #servicediscovery SOME CONSIDERATIONS LIBRARIES, RUNTIME

Slide 82

Slide 82 text

@alexramirez #mucon #servicediscovery SOME CONSIDERATIONS RUNTIME ALTERNATIVES

Slide 83

Slide 83 text

@alexramirez #mucon #servicediscovery SOME CONSIDERATIONS CONTAINERS ARE DIFFERENT

Slide 84

Slide 84 text

@alexramirez #mucon #servicediscovery Text Title Text T.HANKS! @alexramirez #mucon #servicediscovery

Slide 85

Slide 85 text

@alexramirez #mucon #servicediscovery QUESTIONS?
 COMMENTS? @alexramirez #mucon #servicediscovery

Slide 86

Slide 86 text

@alexramirez #mucon #servicediscovery Text Title Text T.HANKS! @alexramirez #mucon #servicediscovery

Slide 87

Slide 87 text

@alexramirez #mucon #servicediscovery CREATIVE COMMONS & COPYRIGHT, RESOURCES Credits & acknowledgements • These slides contain some photographs from Flickr with an AUribuPon-NonCommercial 2.0 Generic creaPve commons licence: hUps://www.flickr.com/photos/bogers/397745699, hUps://www.flickr.com/photos/ jeremysorrells/8075811194, hUps://www.flickr.com/photos/jasonpier/11300873596, hUps://www.flickr.com/ photos/53221801@N07/14118483789/, hUps://www.flickr.com/photos/manthatcooks/107121255/, hUps:// www.flickr.com/photos/sarahridgley/2118754450/, hUps://www.flickr.com/photos/arcPcpenguin/7153378221/, hUps://www.flickr.com/photos/r4vi/16040202797, hUps://www.flickr.com/photos/bump/3981175472/, hUps:// www.flickr.com/photos/jamesclay/4177348515/, hUps://www.flickr.com/photos/61921496@N04/15008331908/, hUps://www.flickr.com/photos/25143108@N04/3233875532/, hUps://www.flickr.com/photos/johnpaulgoguen/ 3644147837/ , hUps://www.flickr.com/photos/36666383@N00/5342204450/ • The remaining photographs were obtained via Google Images from pages with no license informaPon. Please contact for their removal in the event of any copyright issue. • Most graphics are self-made, though some are or include free icons designed by Fripik and Madebyoliver from FlaPcon.

Slide 88

Slide 88 text

@alexramirez #mucon #servicediscovery µCon LONDON 2016 Skillscast / VIDEO • This presentaPon will soon be available on the conference website at the following link:
 hUps://skillsmaUer.com/conferences/7412-con-2016-the-microservices- conference#skillscasts