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

Microservices at Gigya

Microservices at Gigya

Slides from the first meetup about Microdot, Gigya's open source microservices framework in .NET.

Rotem Hermon

July 04, 2017
Tweet

More Decks by Rotem Hermon

Other Decks in Programming

Transcript

  1. About Gigya • Customer Identity Management Platform • Multiple products

    • Hundreds of (big enterprise) customers • 1.3 billion user profile managed • 5 Data centers • 10K API calls/sec (with X10 peaks)
  2. We had problems • One code base, multiple teams •

    Archeological code layers • Technical debt (not enough unit tests, weird hacks) • “All or nothing” deployment • Looooooooong release cycles
  3. Microservices Benefits • Scalability (organizational and technical) • Agility •

    Resiliency • And also… (easier to understand, easier to deploy, easier to change, easier to experiment, multiple technologies)
  4. Microservices – Not a free lunch! • System complexity •

    Operational complexity • Performance and latency • Reliability • Consistency • Debugability
  5. The Actor Model • Simpler concurrent programming model • Write

    single-threaded code (easier to understand) • Concurrency and scale via actor instances • Maximizes CPU utilization • Easy to distribute
  6. Virtual Actors • Started in 2008 at Microsoft Research –

    Project Orleans • In production since 2011 (Halo 4 cloud services) • Open sourced and moved to Microsoft Studios at 2015 • A port to Java – Orbit (by EA)
  7. Virtual Actors • Goals: • Make distributed application programming easier

    • Prefer developer productivity and transparent scalability • “A programming model and runtime for building cloud native services”
  8. Virtual Actors Actor types: • Worker • An auto-scaling processing

    unit – multiple instances created by framework as needed • Single Activation • Guaranteed to have a single active instance in the cluster • A Stateful application middle-tier
  9. Virtual Actor Framework • A runtime providing virtual “actor space”,

    analogues to virtual memory • Handles Actor placement, activation and GC when needed • Balances resources across the cluster, provides elastic scalability
  10. Simplified Programming Model • An Actor is a class, implementing

    an interface with asynchronous methods • The caller of an Actor uses the actor interface via a proxy • Messaging is transparent and handled by the runtime. Programmers deal with interfaces and methods
  11. A Microservice • “Small” (developed by a single team) •

    Solves a problem (single responsibility) • Interacts with other services over well-defined interfaces • Independently deployed • Remains consistent and available in presence of failures
  12. Actors as Microservices ? • “Small” (developed by a single

    team) • Solves a problem (single responsibility) • Interacts with other services over well-defined interfaces • Independently deployed • Remains consistent and available in presence of failures
  13. Actors as Microservices ? • “Small” (developed by a single

    team) • Solves a problem (single responsibility) • Interacts with other services over well-defined interfaces • Independently deployed • Remains consistent and available in presence of failures (?)
  14. Actor based microservices Service A Service B ServiceB Interface Actor

    IMyServiceB ServiceB Client ServiceB HTTP Listener JSON over HTTP