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

Powering Microservices & Sockets using Nginx and Kubernetes

Lee Calcote
September 07, 2016

Powering Microservices & Sockets using Nginx and Kubernetes

Microservices present challenges of coordination, SSL termination and socket connection among others. Looking to different cloud providers to assist with their load-balancers leaves you wanting as features socket connection support, SSL termination and geo-distributed load-balancing are often absent. Presented at Nginx Conf 2016.

Lee Calcote

September 07, 2016
Tweet

More Decks by Lee Calcote

Other Decks in Technology

Transcript

  1. 16 Powering Microservices & Sockets using Nginx and Kubernetes Lee

    Calcote Yogi Porla http://calcotestudios.com/nginx16
  2. Case Study is an IDE for game developers - created

    by game development studio based in Austin (MaxPlay) - creates a real-time, collaborative game development engine @lcalcote “google docs for game development”
  3. Vert.x Our Bloat-a-lith @lcalcote EventBus Handler Persistence Verticle SockJS Analytics

    Analytics UI Hazelcast GridConnection Telemetry Telemetry Analysis Projects, Streams, Users, Sessions, Tenants Kafka Producer Platform Client Producer Spark, R GCE Network Load Balancer Kafka Rendering Engines Platform Publishing Tool Game Analysis Single instance
  4. App is Reactive Deals with sockets Limited resources Culture /

    DevOps / Cloud Maturity Support containers and VMs Propagation of huge data sets @lcalcote The Challenge On-the-fly intelligent rendering Distribution of content Extremely low latency for Reactive services Blocking vs non-blocking On-premises telemetry collection and analytics
  5. Characteristics of Microservices small, autonomous services that work together. how

    small is small? independent, autonomous service self-contained functional unit @lcalcote Who has a system that is too big and that you’d like to break down? Can a small team manage it? More moving parts increases complexity. Can you make a change to a service and deploy it by itself without changing anything else?
  6. Faster delivery, rolling updates Horizontal scale out on-demand; on an

    individual service basis Modular architecture Easy integration and deployments Service isolation, resilience and fail-safe recovery @lcalcote Benefits of Microservices - a quick review Democratization of language and technology choice
  7. Our Microbloat v1 @lcalcote Analytics UI Authentication Telemetry Telemetry Analysis

    Spark, R Kafka Rendering Engines Platform Publishing Tool Game Analysis Master etcd Authorization Locking Authorization Projects Authorization Authorization kube-proxy kube-proxy SockJS Authorization kube-proxy Node Node Node kube-api, etc.
  8. SSL Termination @lcalcote Kubernetes 1.3 No Swarm 1.12 No Mesos+Marathon

    Yes ELB Classic Yes ELB L7 Yes Beanstalk Yes (EC2) IOT Yes ECS Yes (EC2) Lambda ? Container Orchestrators Clouds AWS Azure GCP Load-Balancer No App Gateway Yes Container Service ? Cloud LB (HTTP) Yes (beta) Cloud LB (Network) Yes (beta) GKE No Link Link Link Link Link Link Link Link Link SSL Proxy SSL Proxy
  9. Websocket Support @lcalcote Kubernetes 1.3 No Swarm 1.12 No Mesos+Marathon

    Yes ELB Classic Yes ELB L7 Yes Beanstalk Yes IOT Yes ECS Yes Lambda Yes Container Orchestrators Clouds AWS Azure GCP Load-Balancer No App Gateway Yes Container Service ? Cloud LB (HTTP) No Cloud LB (Network) Yes GKE No Link Link Link Link Link Link Link Link Link Link Link
  10. Why Nginx Hybrid needs On-premises and Google Cloud Platform Consistent

    administration and capabilities central load balancing and proxy platform Support for VM and container-based technologies with minimal configuration change Deeper feature set available as services/team matures use as an Application Delivery Controller @lcalcote Platform independence
  11. Microbloat v2 Going deeper with Nginx & Kubernetes Service Discovery

    with Nginx Plus Need for locating service instances instantly without reconfiguring On-the-fly Reconfiguration API Work with etcd As an ingress controller in Kubernetes SSL termination Path-based rules Multiple host names @lcalcote
  12. GSLB & Content Caching w/Nginx Plus @lcalcote App App App

    GeoDNS US Regions Session Persistence and Sticky Routing help in performance of request routing and localized content Content Caching provides faster retrieval of data Performance, reliability and availability Global Regions
  13. A/B Testing Using Nginx @lcalcote Requests App v0.1 App v0.2

    90% of requests go to v0.1 10% of requests go to v0.2