Microservice Discovery/Reliability on Kubernetes: Spring Cloud or Native K8s?
Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of services that are
• Highly maintainable and testable
• Loosely coupled
• Independently deployable
• Organized around business capabilities
To achieve these characteristics of Microservice architecture requires the implementing of several adjacent design patterns. Some of them are:
• Service Discovery - When using the cloud, services may have dynamic network locations due to restart, failure, and scaling. Service discovery is about finding the network location of a service provider
• Externalized Configuration - A service must be provided with configuration data that tells it how to connect to the external/3rd party services and it should run in multiple environments and multiple instances without needing to change the service deployment itself
• Reliability - Services sometimes collaborate when handling requests. When one service synchronously invokes another there is always the possibility that the other service is unavailable or is exhibiting such high latency it is essentially unusable. Reliability pattern helps to prevent a network or service failure from cascading to other services
In this talk, Mayuresh will:
• Briefly describe the following patterns in a Microservice architecture:
• Service Discovery
• Configuration Management
• Circuit Breaker
• Demo these patterns being implemented on PKS (Pivotal Container Service/K8s):
• Using Spring Cloud Services
• Spring Cloud Eureka
• Spring Cloud Config
• Spring Cloud Hystrix
• Using Native Kubernetes Constructs
• K8s Services
• K8s Config Maps
• Envoy Proxy
• The question?
• When should I use Spring Cloud Services?
• Primarily Java Shop?
• More than k8s for the overall portfolio?
• When should I use native K8s constructs?
• K8s is primary container scheduler & containerization is the long term strategy?
This talk would interest those trying to figure out what should they do for their Service Discovery, Config Management, and Circuit Breaker use cases while using Kubernetes.