applications developing cloud-native · 2019. 10. 11. · developing cloud-native applications...

50
with Microservices Architectures Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager @brianredbeard 1

Upload: others

Post on 13-Oct-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

with Microservices Architectures

Developing Cloud-Native Applications

Brian ‘redbeard’ HarringtonPrincipal Product Manager@brianredbeard

1

Page 2: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

CONFIDENTIAL Designator

2

Brian “Redbeard”Harrington

Product Manager, Service MeshRed Hat@brianredbeardfreenode/#coreos/[email protected]

Page 3: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native
Page 4: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

4

Serverless

Building blocks that extends the platform to enable auto-scaling and

event-driven applications

Pipelines

Native CI/CD for the platform.

Service Mesh

Managed connectivity to provide the glue between components, applications, and services.

Page 5: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

5

Serverless

Building blocks that extends the platform to enable auto-scaling and

event-driven applications

Pipelines

Native CI/CD for the platform.

Service Mesh

Managed connectivity to provide the glue between components, applications, and services.

Page 6: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Service Mesh

6

Page 7: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Microservices* Evolution

SERVICE MESH

7

Service

Config

Svc Discovery

Routing

Circuit Breaker

Tracing

Platform

...2014

Page 8: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Microservices* Evolution

SERVICE MESH

8

Service

Config

Svc Discovery

Routing

Circuit Breaker

Tracing

Service

Platform Container Platform (+ Service Mesh)

...2014 2018

Page 9: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Microservices* Evolution

SERVICE MESH

9

Service

Config

Svc Discovery

Routing

Circuit Breaker

Tracing

Service

Platform Container Platform (+ Service Mesh)

...2014 20202018

Service

Container Platform (+ Service Mesh)

Service Service

Page 10: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Microservices Miniservices Evolution

SERVICE MESH

10

Service

Config

Svc Discovery

Routing

Circuit Breaker

Tracing

Service

Platform Container Platform (+ Service Mesh)

...2014 20202018

Service

Container Platform (+ Service Mesh)

Service Service

Page 11: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

OpenShift Service Mesh

SERVICE MESH

11

Observe Observe

Secure

ControlConnect

Jaeger

Kiali Grafana

Prometheus

Istio

Page 12: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

12

POD

SERVICEA

Istio Proxy

POD

SERVICEB:v2

Istio Proxy

POD

SERVICEB:v1

Istio Proxy

/api/v2

/api/v1

Page 13: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

OpenShift Service Mesh

"A dedicated network for service-to-service communications"

13

Customer Benefits● Reduced need for developers to have operational knowledge● Service observability and discovery with distributed tracing● Enable transparent policy-driven security● From routing rules to chaos engineering● Powerful visualization & monitoring

Learn more● red.ht/osm-install● learn.openshift.com

GA 4.1

Page 14: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Serverless

14

Page 15: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

15

Page 16: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

16

ServerlessIt’s a trait.It’s a continuum, a spectrum.*Allow you to focus on business value.Write less code. You give away control to gain velocity.

Page 17: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Nadaam Archery by David Baxendale (CC)

Page 18: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

May 2019, Barcelona

18

"Function as a Service (FaaS)

is serverless in the same way

a square is a rectangle”

Serverless > Functions

Page 19: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

May 2019, Barcelona

19

Serverless > Microservices

"Microservices can promote

separation of concerns and

offer an interesting way to

build distributed systems,

serverless or not."

Page 20: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

May 2019, Barcelona

20

Serverless > Containers

"Containers offer an efficient

and open format to package,

distribute and isolate

workloads."

Page 21: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Microservices, Functions and Apps

21

MicroservicesFunctions Apps

Containers

Infrastructure & Scheduling

Application frameworks

Infrastructure

Containers

Infrastructure & Scheduling

Page 22: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Microservices, Functions and Apps

22

MicroservicesFunctions Apps

Containers

Infrastructure & Scheduling

Application frameworks

Infrastructure

Containers

Infrastructure & Scheduling

Page 23: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Knative Components

...an extension to Kubernetes exposing building blocks to build modern, source-centric, and container-based applications that can run anywhere"

23

Serving

An event-driven model that serves the container with your application and can "scale to

zero".

Eventing

Common infrastructure for consuming and producing events that will stimulate applications.

Build

A pluggable model for building

artifacts, like jar files, zips or

containers from source code.

Page 24: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

24

Serving

An event-driven model that serves the container with your application and can "scale to

zero".

Eventing

Common infrastructure for consuming and producing events that will stimulate applications.

Pipelines

Provides Kubernetes native modern resources for declaring

CI/CD pipelines.

Page 25: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

OpenShift serverless

Serverless building blocks for any container workload

25

Customer Benefits● Familiar to Kubernetes users. Native.● Scale to 0 and autoscale to N based on demand● Applications and functions. Any container workload.● Powerful eventing model with multiple event sources.● No vendor lock in

Learn more● openshift.com/learn/topics/knative● http://bit.ly/knative-tutorial

Tech Preview 4.2

Page 26: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Azure Functions & KEDA

Functions as a Service

26

Customer Benefits● Enable FaaS in OpenShift● Familiar developer experience using VS Code and Azure CLI● Azure Queues, Azure Service Bus...● Reuse Knative event sources, HTTP auto-scaling

Learn more● https://github.com/kedacore/keda

In partnership with:

Developer Preview

Page 27: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

27

Serverless

Building blocks that extends the platform to enable auto-scaling and

event-driven applications

Pipelines

Native CI/CD for the platform.

Service Mesh

Managed connectivity to provide the glue between components, applications, and services.

Page 28: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

28

Page 29: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

29

Page 30: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

30

Page 31: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

31

database

shell server

k8s west

k8s east

jenkins

Page 32: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

32

Page 33: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

33

Page 34: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

34

import jsonfrom pynamodb.attributes import UnicodeAttribute, BooleanAttribute, UTCDateTimeAttributefrom pynamodb.models import Model

class EventModel(Model): class Meta: table_name = os.environ['DYNAMODB_TABLE'] region = 'us-west-1' host = 'https://dynamodb.eu-central-1.amazonaws.com'

event_id = UnicodeAttribute(hash_key=True, null=False) ip = UnicodeAttribute(null=False) createdAt = UTCDateTimeAttribute(null=False, default=datetime.now())

def save(self, conditional_operator=None, **expected_values): self.updatedAt = datetime.now() super(EventModel, self).save()

def create(event, context): data = json.loads(event['body'])

event = EventModel(event_id=str(uuid.uuid1()), ip=data['ip'])

event.save()

# create a response return {'statusCode': 201, 'body': json.dumps(dict(event))}

Page 35: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

35

import jsonfrom pynamodb.attributes import UnicodeAttribute, BooleanAttribute, UTCDateTimeAttributefrom pynamodb.models import Model

class EventModel(Model): class Meta: table_name = os.environ['DYNAMODB_TABLE'] region = 'us-west-1' host = 'https://dynamodb.eu-central-1.amazonaws.com'

event_id = UnicodeAttribute(hash_key=True, null=False) ip = UnicodeAttribute(null=False) createdAt = UTCDateTimeAttribute(null=False, default=datetime.now())

def save(self, conditional_operator=None, **expected_values): self.updatedAt = datetime.now() super(EventModel, self).save()

def create(event, context): data = json.loads(event['body'])

event = EventModel(event_id=str(uuid.uuid1()), ip=data['ip'])

event.save()

# create a response return {'statusCode': 201, 'body': json.dumps(dict(event))}

Page 36: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

36

import jsonfrom pynamodb.attributes import UnicodeAttribute, BooleanAttribute, UTCDateTimeAttributefrom pynamodb.models import Model

class EventModel(Model): class Meta: table_name = os.environ['DYNAMODB_TABLE'] region = 'us-west-1' host = 'https://dynamodb.eu-central-1.amazonaws.com'

event_id = UnicodeAttribute(hash_key=True, null=False) ip = UnicodeAttribute(null=False) createdAt = UTCDateTimeAttribute(null=False, default=datetime.now())

def save(self, conditional_operator=None, **expected_values): self.updatedAt = datetime.now() super(EventModel, self).save()

def create(event, context): data = json.loads(event['body'])

event = EventModel(event_id=str(uuid.uuid1()), ip=data['ip'])

event.save()

# create a response return {'statusCode': 201, 'body': json.dumps(dict(event))}

Page 37: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

37

import jsonfrom pynamodb.attributes import UnicodeAttribute, BooleanAttribute, UTCDateTimeAttributefrom pynamodb.models import Model

class EventModel(Model): class Meta: table_name = os.environ['DYNAMODB_TABLE'] region = 'us-west-1' host = 'https://dynamodb.eu-central-1.amazonaws.com'

event_id = UnicodeAttribute(hash_key=True, null=False) ip = UnicodeAttribute(null=False) createdAt = UTCDateTimeAttribute(null=False, default=datetime.now())

def save(self, conditional_operator=None, **expected_values): self.updatedAt = datetime.now() super(EventModel, self).save()

def create(event, context): data = json.loads(event['body'])

event = EventModel(event_id=str(uuid.uuid1()), ip=data['ip'])

event.save()

# create a response return {'statusCode': 201, 'body': json.dumps(dict(event))}

Page 38: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

38

Page 39: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

39

Page 40: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

40

Page 41: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

41

Page 42: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

42

Page 43: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

43

Page 44: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

44

Page 45: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

45

Page 46: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

46

Page 47: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

47

Page 48: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

48

Page 49: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

Build and Deploy Cloud Native Apps

SERVICE MESH

49

Service

CONTAINER

Service

CONTAINER

Service

CONTAINER

ANYINFRASTRUCTURE

OpenShift Container Platform(Enterprise Kubernetes)

Amazon Web Services Microsoft Azure Google CloudOpenStackDatacenterLaptop

ANYAPPLICATION

Service

CONTAINER

Service

CONTAINER

Service Discovery

Config Mgmt

Build Automation

Deploy Automation

Monitoring

Log Mgmt

Security

CI/CD Pipelines

try it at http://learn.openshift.com

Page 50: Applications Developing Cloud-Native · 2019. 10. 11. · Developing Cloud-Native Applications Brian ‘redbeard’ Harrington Principal Product Manager ... Provides Kubernetes native

linkedin.com/company/red-hat

youtube.com/user/RedHatVideos

facebook.com/redhatinc

twitter.com/RedHat

50

● red.ht/osm-install● learn.openshift.com● openshift.com/learn/topics/knative● bit.ly/knative-tutorial ● github.com/kedacore/keda

Thank you

OPTIO

NAL SECTION

MARKER O

R TITLE

@brianredbeard