Smart services & smart clients: How micro-services change the way you build and deploy code.

  • Frank Stratton, Runscope
  • 2015-04-10

In [ ]:

If you don't invest in infrastructure, don't invest in microservices

How do you find a service?

Smart Client

  • wrapper around requests
  • same API
  • accepts 'service://identity/teams' urls
    • works in all environments
  • reties failed GET/PUT/DELETE requests
  • runs HTTP requests asynchronously, if you want

Atlas is their service to register services

  • uses HAProxy
  • uses HAProxy ACLs; directs traffic based on URL/headers/etc.

Sidecar runs on every host

  • all service calls flow through localhost via sidecar

How do you make building services easy?

Smart Service

  • built on top of Flask and Flask RESTful
  • Runscope/healthcheck
    • open source health monitoring microservice
  • can import settings from atlas
  • can auto-generate service skeletons
    • fully runnable service running after ~1 minute
    • reduces congnitive overhead

What happens when you have so many services?

Automate everything!

  • setting up servers, use configuration management (eg, puppet)
  • invest in devops

You become language agnostic

  • anything that talks HTTP can work; it's the common language

No shared databases

  • schema changes force applications that share the database to become tied to each other

Makes deploying code really easy, after investing in all the infrastructure

Test and monitor your APIs

  • deployments automatically trigger API tests

So many deployments every day - very empowering

They try to keep all APIs backwards-compatible