Transition to Microservices Architecture

Knative Eventing
Bryan Zimmerman
 | Google
Nicolas Lopez
 | Google
Agenda
The Rise of 
Microservices
Monolith
 
Scales 
Vertically
 not Horizontally.
 
Overwhelming
 to build, deploy and
maintain as teams and application
grow.
 
Nightmare
 to change something.
Server
Monolith
Microservices
Application Server
E-Commerce Store
E-Commerce Store
Monolith
Microservices
 
“Separation of concerns”
 
Promotes Agile development.
 
Easy to build, maintain, and
deploy.
 
Flexibility to build in the language
of your choice.
 
Services can be 
scaled independently
 to
meet demand.
Monolith
Microservices
Services can be 
scaled independently
 to meet
demand.
Separation of concerns
Promotes Agile development.
Easy to build, maintain, and deploy.
Flexibility to build in the language of
your choice.
Monolith
Microservices
 
Spider web
 of point-to-point
integrations.
 
Coupling 
with p2p inter-service
communication.
 
Adding/Removing services 
requires
changing
 other services.
Event-Driven
 Microservices
What is
an Event?
An 
event
 is a record expressing an occurrence and its
context
Events represent facts and therefore do not include a
destination
The producer has no expectation of how the event is
handled
Event Intermediary
Event Producers
Event Consumers
Event-driven Microservices
Event-driven Microservices
Event Intermediary
Event Producers
Event Consumers
Knative Eventing
Knative Eventing
Event Producers
Event Consumers
Knative Eventing in Action
Image Processing Pipeline application
https://github.com/meteatamel/cloudrun-tutorial/blob/master/docs/image-processing-pipeline-gke.md
Image Processing Pipeline
GKE Google Kubernetes Engine
Image Processing Pipeline application
We will setup 
1
 
source
 + 
4
 
triggers
 to connect the services via events
Image Processing Pipeline
GKE Google Kubernetes Engine
CloudStorageSource + trigger
When an object gets stored in GCS, an event will be sent to the cluster
GKE Google Kubernetes Engine
CloudStorageSource + trigger
Trigger
 allows Storage Source events to be routed to the 
Filter
 service
GKE Google Kubernetes Engine
Custom Triggers
Custom events are sent by the services with a 
trigger
 configurd to route the events to
other services
GKE Google Kubernetes Engine
Ready!
Image Processing Pipeline
GKE Google Kubernetes Engine
Knative Eventing Core Concepts
Knative Eventing Source
An event Source
(https://knative.dev/docs/eventing/sources/) generates
events or imports events from external producers
Existing Sources
Community owned - Kafka, Github, etc.
Vendor owned
Google: CloudStorage, CloudAuditLog, etc.
TriggerMesh: AWS SQS, AWS Kinesis, etc.
Custom sources
How are Knative Sources implemented?
Use standard way of extending Kubernetes: Custom Resource Definitions (CRDs)
CRDs define new resource types → Class in a programming language
Instances of CRDs are called Custom Objects (COs) → Object in a programming language
      CRD
https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
definition
COs
Types of Knative Sources
Push
Must be exposed to the sender
E.g. a publicly exposed URL for GitHub to make requests against
Easier to scale
Can use Knative Services, scaling down to zero
Pull
Something must always be running
Needs network access to the producer, but does not need to expose an endpoint
Harder to scale
Broker & Trigger
Broker (
https://knative.dev/docs/eventing/broker/
)
Triggers (
https://knative.dev/docs/eventing/triggers/
) are the way to
subscribe events from a specific Broker
Filtering based on CloudEvents attributes
Event sink could be any “
addressable
Broker implementations
Default
Alternative Broker implementations, e.g. GCP, Kafka
Kafka
MT Ingress
Kafka Topic B1
Publisher
MT
Dispatcher
Consumer
 
MT
Fanout
MT
Ingress
PubSub Topic B1
Publisher
Consumer
MT
Retry
PubSub Topic T1
Success
Failure
Pubsub Pull
Primitives - Messaging
Channel (
https://knative.dev/docs/eventing/channels/
) 
Subscription
Svc
Svc
Svc
Channel
Subscriptions
Primitives - Flows
Sequence
(
https://knative.dev/docs/eventing/flows/sequence/
) 
Parallel
(
https://knative.dev/docs/eventing/flows/parallel/
)
Svc
Svc
Svc
Svc
Svc
Svc
Events for Cloud Run for Anthos
Events
for
Cloud
Run for
Anthos
Sources
Targets
Knative-based
Broker
Trigger
Knative Community
Vibrant community
Two core
components -
Serving
 and
Eventing
10 active Working
Groups
 
with 450+
contributors
15+ active
repositories
7 knative-based
offerings
 from
vendors such as
Google, IBM, Red
Hat, TriggerMesh,
and VMWare.
 
Knative 
Partners
Learn About Knative
https://knative.dev/docs/
Try our GCP implementation
https://cloud.google.com/run/d
ocs/events/anthos/quickstart
View us on Github
https://github.com/knative
What next?
Next events on Google Open Source Live
Go Day 
Nov 5, 9-11am PT
https://goo.gle/GoDayNov5
Golang experts will share updates on everything
from 
Go basics
 to 
Package Discovery
 and 
Editor
Tooling
. Our partner, 
Khan Academy
 will also
walk through an interesting use case about how
the organization is using Go to save time and
money.
Kubernetes Day 
Dec 3, 9-11 am PT
http://goo.gle/k8sDay
 
At this event, Kubernetes experts at Google will
cover the life of a 
Kubernetes API
, 
admission
webhooks, how “
apply
” works, and the distributed
value store 
etcd
.
Thank you!
We want to hear from you! 
To discuss needs, use cases, or feedback reach out to 
bryanzimmerman@google.com
Slide Note
Embed
Share

Explore the shift from monolithic to microservices architecture, focusing on separation of concerns, agile development, scalability, and open-source solutions like Knative Eventing. Discover the benefits of event-driven microservices and the challenges faced in traditional monolithic structures within e-commerce applications.

  • Microservices
  • Architecture
  • Scalability
  • Knative Eventing
  • E-commerce

Uploaded on Sep 12, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Proprietary + Confidential google_logo Open Source Knative Eventing Bryan Zimmerman | Google Nicolas Lopez | Google

  2. Proprietary + Confidential The Rise of MicroServices Event-driven Architecture Agenda Knative Eventing Demo: Image Processing Knative Community

  3. Proprietary + Confidential The Rise of Microservices google_logo Open Source

  4. Proprietary + Confidential E-Commerce Store Monolith Application Layer Scales Verticallynot Horizontally. Overwhelming to build, deploy and maintain as teams and application grow. Payment Reporting Shop Nightmare to change something. Server Newsletter Inventory Custome r DB google_logo Open Source

  5. Proprietary + Confidential E-Commerce Store Monolith Application Server Microservices Shop Payment Reporting Inventory Newsletter Custome r DB google_logo Open Source

  6. Proprietary + Confidential E-Commerce Store Monolith Application Server Microservices Shop Payment Reporting Inventory Newsletter Custome r DB google_logo Open Source

  7. Proprietary + Confidential Monolith E-Commerce Store Microservices Separation of concerns Inventory Reporting Shop Promotes Agile development. Easy to build, maintain, and deploy. Flexibility to build in the language of your choice. Payment Newsletter Custome r DB Services can be scaled independently to meet demand. google_logo Open Source

  8. Proprietary + Confidential Monolith E-Commerce Store Microservices Services can be scaled independently to meet demand. Separation of concerns Promotes Agile development. Easy to build, maintain, and deploy. Flexibility to build in the language of your choice. Inventory Reporting Shop Spider web of point-to-point integrations. Payment Newsletter Custome r DB Coupling with p2p inter-service communication. Adding/Removing services requires changing other services. google_logo Open Source

  9. Proprietary + Confidential Event-Driven Microservices google_logo Open Source

  10. Proprietary + Confidential An event is a record expressing an occurrence and its context Events represent facts and therefore do not include a destination The producer has no expectation of how the event is handled What is an Event? Occurrence Event Action google_logo Open Source

  11. Proprietary + Confidential Event Producers Service Service Service Event-driven Microservices Event Intermediary Service Service Service Event Consumers google_logo Open Source

  12. Proprietary + Confidential Event-driven Microservices Event Producers Fully decoupled with no point-to-point communication. Service Service Service Highly Scalable. Extend organically -Add/Remove services without modifying existing application. Event Intermediary Service Service Service Event Consumers google_logo Open Source

  13. Proprietary + Confidential Knative Eventing google_logo Open Source

  14. Proprietary + Confidential Knative Eventing Event Producers Composable primitives to enable late-binding event producers and event consumers. Github Source Knative Svc Kafka Source Cloud Events to standardize event data Event Producers (Sources) produce Cloud Events Broker Event Consumer is any Addressable such as Knative Service, K8s Service Trigger Trigger Trigger Broker and Trigger as intermediary Knative Svc K8s Service Addressable Events and Source Registry for discovery. Event Consumers More primitives -Channels, Sequence, Parallel etc google_logo Open Source

  15. Proprietary + Confidential Knative Eventing in Action google_logo Open Source

  16. Proprietary + Confidential Image Processing Pipeline application Image Processing Pipeline GKE Google Kubernetes Engine Resizer Knative service Images input Cloud Storage Images output Cloud Storage End Users End Users Filter Knative service Watermarker Knative service Labeler Knative service https://github.com/meteatamel/cloudrun-tutorial/blob/master/docs/image-processing-pipeline-gke.md

  17. Proprietary + Confidential Image Processing Pipeline application We will setup 1 source + 4 triggers to connect the services via events Image Processing Pipeline GKE Google Kubernetes Engine Resizer Knative service Images input Cloud Storage Images output Cloud Storage End Users End Users Filter Knative service Watermarker Knative service Labeler Knative service

  18. Proprietary + Confidential CloudStorageSource + trigger When an object gets stored in GCS, an event will be sent to the cluster GKE Google Kubernetes Engine Resizer Knative service Images input Cloud Storage Images output Cloud Storage End Users End Users Filter Knative service Watermarker Knative service Labeler Knative service

  19. Proprietary + Confidential CloudStorageSource + trigger Trigger allows Storage Source events to be routed to the Filter service GKE Google Kubernetes Engine Resizer Knative service Images input Cloud Storage Images output Cloud Storage End Users End Users Filter Knative service Watermarker Knative service Labeler Knative service

  20. Proprietary + Confidential Custom Triggers Custom events are sent by the services with a trigger configurd to route the events to other services GKE Google Kubernetes Engine Resizer Knative service Images input Cloud Storage Images output Cloud Storage End Users End Users Filter Knative service Watermarker Knative service Labeler Knative service

  21. Proprietary + Confidential Ready! Image Processing Pipeline GKE Google Kubernetes Engine Resizer Knative service Images input Cloud Storage Images output Cloud Storage End Users End Users Filter Knative service Watermarker Knative service Labeler Knative service

  22. Proprietary + Confidential Knative Eventing Core Concepts google_logo Open Source

  23. Proprietary + Confidential Knative Eventing Source An event Source (https://knative.dev/docs/eventing/sources/) generates events or imports events from external producers Existing Sources Community owned -Kafka, Github, etc. Vendor owned Google: CloudStorage, CloudAuditLog, etc. TriggerMesh: AWS SQS, AWS Kinesis, etc. Custom sources google_logo Open Source

  24. Proprietary + Confidential How are Knative Sources implemented? Use standard way of extending Kubernetes: Custom Resource Definitions (CRDs) CRDs define new resource types Class in a programming language Instances of CRDs are called Custom Objects (COs) Object in a programming language CRD COs definition https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/ google_logo Open Source

  25. Proprietary + Confidential Types of Knative Sources Push Must be exposed to the sender E.g. a publicly exposed URL for GitHub to make requests against Easier to scale Can use Knative Services, scaling down to zero Pull Something must always be running Needs network access to the producer, but does not need to expose an endpoint Harder to scale google_logo Open Source

  26. Proprietary + Confidential Broker & Trigger Broker (https://knative.dev/docs/eventing/broker/) Triggers (https://knative.dev/docs/eventing/triggers/) are the way to subscribe events from a specific Broker Filtering based on CloudEvents attributes Event sink could be any addressable Broker implementations Default Alternative Broker implementations, e.g. GCP, Kafka google_logo Open Source

  27. Proprietary + Confidential consumer group Topic consumer group consumer group Kafka MT Dispatcher Filter T1 MT Ingress Publisher Kafka Topic B1 Consumer google_logo Open Source

  28. PubSub Topic T1 PubSub Topic B1 Filter T1 Pubsub Pull Failure MT Retry Publisher Filter T1 Consumer MT Fanout MT Ingress google_logo Open Source

  29. Proprietary + Confidential Primitives - Messaging Channel (https://knative.dev/docs/eventing/channels/) Subscription Svc Channel Svc Svc Subscriptions google_logo Open Source

  30. Proprietary + Confidential Primitives - Flows Sequence (https://knative.dev/docs/eventing/flows/sequence/) Parallel (https://knative.dev/docs/eventing/flows/parallel/) Svc Svc Svc Svc Svc Svc google_logo Open Source

  31. Proprietary + Confidential Sources Targets Knative-based Broker Trigger 60+ Cloud Sources (via Cloud Audit Logs) Events for Cloud Run for Anthos Cloud Storage, Cloud Scheduler Cloud Run for Anthos Events for Cloud Run for Anthos Custom Applications (publishing to Cloud Pub/Sub) Custom Events ?

  32. Proprietary + Confidential Knative Community google_logo Open Source

  33. Proprietary + Confidential Vibrant community Two core components - Serving and Eventing 10 active Working Groups with 450+ contributors 15+ active repositories 7 knative-based offerings from vendors such as Google, IBM, Red Hat, TriggerMesh, and VMWare. google_logo Open Source

  34. Proprietary + Confidential Knative Partners google_logo Open Source

  35. Proprietary + Confidential What next? Learn About Knative Try our GCP implementation View us on Github https://knative.dev/docs/ https://cloud.google.com/run/d ocs/events/anthos/quickstart https://github.com/knative google_logo Open Source

  36. Proprietary + Confidential Next events on Google Open Source Live Kubernetes Day Go Day Nov 5, 9-11am PT Dec 3, 9-11 am PT https://goo.gle/GoDayNov5 http://goo.gle/k8sDay Golang experts will share updates on everything from Go basics to Package Discovery and Editor Tooling. Our partner, Khan Academy will also walk through an interesting use case about how the organization is using Go to save time and money. At this event, Kubernetes experts at Google will cover the life of a Kubernetes API, admission webhooks, how apply works, and the distributed value store etcd. google_logo Open Source

  37. Proprietary + Confidential Thank you! We want to hear from you! To discuss needs, use cases, or feedback reach out to bryanzimmerman@google.com google_logo Open Source

Related


More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#