High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices...

29
@mesutcelik High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast

Transcript of High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices...

Page 1: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

High Performance Cloud-Native Microservices With Distributed Caching

Mesut Celik,Hazelcast

Page 2: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Mesut Celik

● Tech Lead @Hazelcast

● Java Developer

● lived in Turkey,Belgium,US

● Twitter: @mesutcelik

Page 3: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Agenda

● Hazelcast Introduction

● Caching Patterns

● Kubernetes Deployments

● Day 2 Operations

Page 4: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Hazelcast Products ● Hazelcast IMDG

● Hazelcast Jet

● Hazelcast Cloud

● Management Center

Hazelcast is an Open Source Company

● Apache 2 License ● Remote friendly ● raised $21M series C ● Always hiring!!!!

Page 5: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Why Distributed Cache? ● Cache, Memory is faster than storage

● Distributed,Natural fit for Cloud-Native Deployments

Page 6: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Read-Through Cache

Page 7: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Read-Through Cache 1,Austin Partition_34

1,Austin Backup_34

Page 8: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Hazelcast and Kubernetes Caching Patterns

Page 9: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Distributed Caching Patterns in Kubernetes

● Embedded

● Sidecar

● Proxy Cache

● Client-Server

Page 10: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

POD Spring Boot Microservice

Hazelcast

Member

POD

Hazelcast Cluster K

ubern

ete

s S

erv

ice

Http Request

Embedded

Spring Boot Microservice

Hazelcast

Member

Kubernetes Cluster

Page 11: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Embedded

● Simple

● Java only

● Data co-located with Microservice JVM

Page 12: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Python

Microservice

POD Hazelcast

Member

Python

Microservice

POD

Hazelcast

Member

Hazelcast Cluster K

ubern

ete

s S

erv

ice

Http Request

SideCar Kubernetes Cluster

hazelcast-client

hazelcast-client

Page 13: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Sidecar

● Simple

● Multiple Programming Languages

○ Java, Node.js, .NET, Python, Golang

● Data co-located with Microservice POD

Page 14: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

hazelcast-proxy

sidecar

POD Spring Boot

Application

POD Spring Boot

Application

Hazelcast Cluster K

ubern

ete

s S

erv

ice

Http Request

Http reverse proxy caching

Hazelcast

Member

hazelcast-proxy

sidecar

Hazelcast

Member

Kubernetes Cluster

Page 15: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

Http reverse proxy caching ● Injecting Cache into every microservice

● No coupling with any Cache API

● Enabled w/o code change

Page 16: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

POD Spring Boot Microservice

hazelcast-java-client

Hazelcast Cluster K

ubern

ete

s S

erv

ice

Http Request

Client Server

POD Hazelcast

Member

POD Hazelcast

Member

Kubernetes Cluster

POD Spring Boot Microservice

hazelcast-java-client

POD ASP.NET Core

Microservice

hazelcast-dotnet-client

Kubern

ete

s S

erv

ice

Http Request

Page 17: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

POD

Kubern

ete

s S

erv

ice

Http Request

Hazelcast Cloud

POD

cloud.hazelcast.com

Hazelcast Cluster

Kubernetes Cluster

Spring Boot

Application

hazelcast-client

Spring Boot

Application

hazelcast-client

Page 18: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Client Server

● CaaS - Cache as a Service

● Multiple Programming Languages

○ Java, nodejs, .NET, Python, Golang

● Separate Hazelcast Cluster Maintenance

Page 19: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Kubernetes Deployment Options For Hazelcast

Page 20: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Hazelcast Helm Chart

$ helm install stable/hazelcast

Page 21: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Hazelcast Kubernetes Operator

● OperatorHub.io

● Openshift 4 Operator Catalog

● IBM Cloud Private

Page 22: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Hazelcast Cloud

● Managed Service

● Pay as you go model

● https://cloud.hazelcast.com

Page 23: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Deployment Best Practices

Page 24: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Predictable Resource Allocation ● Calculate CPU/Memory Requirements

● Set Resource Request and Limits as the same value

Page 25: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Pod Anti-Affinity

● Hazelcast per K8S Node

● Large Kubernetes Clusters

● Safer in Node crushes

Page 26: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Multi-zone Deployment with ZONE_AWARE

hazelcast-member -1

hazelcast-member -2

hazelcast-member -3

Availability-Zone-A

hazelcast-member -4

hazelcast-member -5

hazelcast-member -6

Availability-Zone-B

Multi-zone Hazelcast Cluster

* Multi-zone if your architecture prefers availability over performance

Page 27: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Day 2 Operations

Page 28: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Day 2 Operations

● Manual Scaling vs. AutoScaling

● Rolling Update

● Monitoring

Page 29: High Performance Cloud-Native Microservices With ... · High Performance Cloud-Native Microservices With Distributed Caching Mesut Celik,Hazelcast . @mesutcelik Mesut Celik Tech Lead

@mesutcelik

Thank you!

● https://twitter.com/mesutcelik

● https://github.com/mesutcelik

● https://www.linkedin.com/in/mesutcelik/