Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Microservices Orchestration With Kong, Galileo & Gelato

Ahmad Nassri
February 11, 2016

Microservices Orchestration With Kong, Galileo & Gelato

Presented at #NodeDay Amsterdam 2016

Ahmad Nassri

February 11, 2016
Tweet

More Decks by Ahmad Nassri

Other Decks in Programming

Transcript

  1. BECOME THE MAESTRO BECOME THE MAESTRO MICROSERVICES ORCHESTRATION WITH MICROSERVICES

    ORCHESTRATION WITH KONG, GALILEO & GELATO KONG, GALILEO & GELATO
  2. GET /who HTTP/1.1 Host: www.ahmadnassri.com Accept: application/json HTTP/1.1 200 OK

    Date: Thu, 11 Feb 2016 10:00:00 CET Content-Type: application/json { "name": "Ahmad Nassri", "website": "ahmad.codes", "twitter": "@AhmadNassri", "city": "Toronto, Canada", "hometown": "Damascus, Syria", "bio": "Technologist, Entrepreneur, Dog Lover", "work": { "company": " ", "role": "VP, Engineering" } } Mashape.com AHMAD NASSRI AHMAD NASSRI Live in Toronto, work in San Francisco / Silicon Valley.
  3. Adopted in every major industry including finance, healthcare, military, agriculture,

    insurance, government, media, e-commerce, retail, aviation, manufacturing and telecom.
  4. MICROSERVICES? MICROSERVICES? Martin Fowler - a definition of this new

    architectural term: bit.ly/ms-definition Microservice architecture patterns and best practices bit.ly/ms-patterns Resources & Reading List bit.ly/ms-resources if you're not familiar with microservices, here's your home work (links at the last slide)
  5. MICROSERVICES MICROSERVICES IN PRODUCTION IN PRODUCTION everybody talks about microservices,

    (the theory, the tooling, best practices, etc ...) but you rarely see the complexity involved
  6. EXPECTATION EXPECTATION as a team starts to venture into building

    a new product, they might start thinking about the architectural design pattern and see it in abstract terms
  7. EXTENDED EXPECTATIONS EXTENDED EXPECTATIONS as development intensifies, the initial theory

    quickly evolves, more microservices are discovered (they're like pokemons, new ones keep showing up!) and throughout more tooling is introduced (cranes in pic)
  8. REALITY CHECK REALITY CHECK in reality, microservices are huge in

    scale and require a lot of tooling and support
  9. User Service Movie Service Rating Service SIMPLE MOVIE SIMPLE MOVIE

    RECCOMENDATIONS RECCOMENDATIONS Reeco Service quick example things start off simple
  10. User Service Movie Service Rating Service SIMPLE MOVIE SIMPLE MOVIE

    RECCOMENDATIONS??? RECCOMENDATIONS??? Reeco Service services have to talk to each other! - mark movie as watched - check if movie exists before applying rating - check current user permissions
  11. SCALING SIMPLE MOVIE SCALING SIMPLE MOVIE RECCOMENDATIONS RECCOMENDATIONS LB LB

    LB LB enter load balancers, service registery and discovery tools
  12. GROWTH STAGE GROWTH STAGE microservices quickly increase in number to

    serve different business functions teams start forming around or from microservices and APIS
  13. REFACTOR! REFACTOR! V2 V2 V2 V2 new hot shot joins

    the team, decides to re-write everything!
  14. SECURITY & AUTHENTICATION SECURITY & AUTHENTICATION V2 V2 V2 V2

    security can be achieved on the network layer, but also through authentication to ensure user action impersonation
  15. LOGGING? LOGGING? V2 V2 V2 V2 you wanna know what's

    going on, don't you? and how about debugging a user transaction across all those microservices?
  16. DONT REPEAT YOURSELF DONT REPEAT YOURSELF Logging Load Balancing Authentication

    Security Monitoring Rate Limiting ... D.R.Y all common functionality and tooling should be extracted, including:
  17. ENTER KONG ENTER KONG V2 V2 V2 V2 GETKong.org Kong

    is designed to solve the problem of abstracting common microservices & API management functionality
  18. WHAT IS KONG? WHAT IS KONG? $ curl -X POST

    127.0.0.1:8001/apis \ --data 'name=movies.v1' \ --data 'upstream_url=http://lb1.movies/' \ --data 'request_path=/v1/movies' $ curl -X POST 127.0.0.1:8001/apis \ --data 'name=movies.v2' \ --data 'upstream_url=http://lb2.movies/' \ --data 'request_path=/v2/movies' Open-source management layer for APIs Built with Nginx, OpenResty, Lua Configurable Through a RESTful API add powerful functionality through plugins kong nodes are stateless and horizontally scalable, with built-in auto-discovery and clustering
  19. KONG PLUGINS KONG PLUGINS $ http POST :8001/apis/movies.v1/plugins \ name=loggly

    config.key=SECRET $ http POST :8001/apis/movies.v1/plugins \ name=rate-limiting config.hour=500 config.minutes=100 $ http POST :8001/apis/movies.v1/plugins \ name=cors config.origin=* config.methods=GET,PUT $ http POST :8001/apis/movies.v1/plugins \ name=galileo config.service_token=SECRET $ http POST :8001/apis/movies.v1/plugins \ name=ssl config.cert=@/local/path/to/cert.pem \ config.key=@/local/path/to/cert.key $ http POST :8001/apis/movies.v1/plugins \ name=oauth2 config.scopes=email,phone,address \ config.mandatory_scope=true plugins are functional lua modules that are triggered at certain points during the request life-cycle with the ability to inspect, modify, and transform the request and response objects (here I'm using HTTPie for the examples)
  20. SCENARIOS SCENARIOS VPN Vendors - as external facing api gateway

    - as internal microservices orchestration - as vendor shield - can even chain kong
  21. GAIN INSIGHT GAIN INSIGHT Timeseries Charts See trends data down

    to the minute with our timeseries charting that shows how usage is changing and visually spot any anomalies. Error View Keep track of client and server errors and who is causing them so you can debug and handle the issue before it becomes a problem.
  22. GAIN INSIGHT GAIN INSIGHT Custom Filtering Filter the data down

    to exactly what you care about and learn how clients are requesting your services and how servers are responding. Consumer Usage Get a clear picture of an individual consumers requests to figure out how they are using your services and which endpoints are most important.
  23. GELATO GELATO Removes all the hassle of creating and maintaining

    technical docs, and makes onboarding developers easy
  24. GELATO GELATO Automatic API Explorer, Markdown Editor, Developer Onboarding, Code

    Generation, Import Swagger or API-blueprint gelato is packed with features
  25. THANK YOU THANK YOU { "speaker": { "name": "Ahmad Nassri",

    "website": "ahmad.codes", "twitter": "@AhmadNassri", "city": "Toronto, Canada", "bio": "Technologist, Entrepreneur, Dog Lover", "work": { "company": " ", "role": "VP, Engineering" } }, "links": [ "mashape.com", "bit.ly/ms-kgg", "bit.ly/ms-definition", "bit.ly/ms-patterns", "bit.ly/ms-resources" ] } Mashape.com