SlideShare uma empresa Scribd logo
1 de 79
Creating a Python Microservice
Tier in Four Sprints with
Cassandra, Kafka, and DSE
Graph
Jeff Carpenter, Director of Developer Advocacy, DataStax
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
community.datastax.com | @jscarp
Prhotoshopping
by Steve
Halladay
© DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
Language of
the year 2018
https://www.tiobe.com/tiobe-index/
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
KillrVideo – A video sharing application
https://github.com/KillrVideohttps://killrvideo.github.io
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
KillrVideo High Level Architecture
KillrVideo
Services
Your Browser
Web Application
Technology Choices
• Node.js
• Falcor
• Java / C# / Node.js / Python
• GRPC
• Etcd
• DataStax Drivers
• DataStax Enterprise
including Apache Cassandra
& Spark, Graph
Deployment
• Download and run locally
via Docker
• Deployed in AWS using
DataStax Managed
Services:
http://killrvideo.com/
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
KillrVideo Python Services – Sprint 1
User
Management
Service
Web Application
community.datastax.com | @jscarp
Video
Catalog
Service
Comments
Service
Rating
Service
Search
Service
Statistics
Service
Suggested
Videos
Service
Generator
Integration
Tests
© DataStax, All Rights Reserved.
KillrVideo Python Services – Sprint 2a
User
Management
Service
Web Application
community.datastax.com | @jscarp
Video
Catalog
Service
Comments
Service
Rating
Service
Search
Service
Statistics
Service
Suggested
Videos
Service
Generator
Integration
Tests
© DataStax, All Rights Reserved.
KillrVideo Python Services – Sprint 2b
User
Management
Service
Web Application
community.datastax.com | @jscarp
Video
Catalog
Service
Comments
Service
Rating
Service
Search
Service
Statistics
Service
Suggested
Videos
Service
Generator
Integration
Tests
© DataStax, All Rights Reserved.
KillrVideo Python Services – Sprint 3
User
Management
Service
Web Application
community.datastax.com | @jscarp
Video
Catalog
Service
Comments
Service
Rating
Service
Search
Service
Statistics
Service
Suggested
Videos
Service
Generator
Integration
Tests
© DataStax, All Rights Reserved.
KillrVideo Python Services – Sprint 4
User
Management
Service
Web Application
community.datastax.com | @jscarp
Video
Catalog
Service
Comments
Service
Rating
Service
Search
Service
Statistics
Service
Suggested
Videos
Service
Generator
Integration
Tests
© DataStax, All Rights Reserved.
KillrVideo Python - Givens
• Overall Architecture
• Infrastructure Selection
• User Interface Design / Web Application
• Service Design / APIs
• Data Models - CQL and Gremlin
• Infrastructure Configuration / Docker Compose
• Integration tests
• Logo
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
WEB
WEB Client
bootstrap react redux falcor
Service
Registry
KillrVideo Services
CASSANDRA
Microservices
(Service
requests)
9091
SEARCH
GRAPH
ANALYTICS
DRIVERS
9042
2379
registrator
3000
Register videos
Killrvideo Integration
Test client
(cucumber)
WEB Server
falcor
Component
Runtime
Customer
Browser
GENERATOR
Killrvideo-generator
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
+ +
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
Service Interfaces?
• Pro
– Great for cross
language support
– Stub generation
– Compact
• Con
– Generation with
common files
– Debugging
• Pro
– Easy to understand
– Easy to test (curl)
• Con
– HTTP Status codes
– Consistency
• Pro
– Great at composing
across multiple
smaller services
• Con
– Overkill for CRUD
style services?
community.datastax.com | @jscarp
User Management Service – Protobuf service definition
https://github.com/KillrVideo/killrvideo-service-protos/blob/master/src/user-management/user_management_service.proto
© DataStax, All Rights Reserved.
GRPC / Protobuf to Python Source
https://github.com/KillrVideo/killrvideo-service-protos/tree/master/src/user-management
user_management_service_pb2.py
user_management_service_pb2_grpc.py
user_management_service_grpc.py
user_management_service.py
Protobuf
definition
Generated
stubs
GRPC-specific
code
Service
implementation
user_management_service.proto
Python grpc_tools
Extend
https://github.com/KillrVideo/killrvideo-python/tree/master/killrvideo/user_management
Call
community.datastax.com | @jscarp
Initializing GRPC Server / registering services in etcd (__init__.py)
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/__init__.py
Success! Integration tests all fail!
https://github.com/KillrVideo/killrvideo-integration-tests
© DataStax, All Rights Reserved.
KillrVideo Python Services – Sprint 1
User
Management
Service
Web Application
community.datastax.com | @jscarp
Video
Catalog
Service
Comments
Service
Rating
Service
Search
Service
Statistics
Service
Suggested
Videos
Service
Generator
Integration
Tests
© DataStax, All Rights Reserved.
Sprint 1 – The Plumbing
• Results:
– Services up and running, exposed via GRPC, registered in etcd, all integration tests FAILING!
• Lessons Learned:
– Decouple all the things
• Service interfaces, service implementations, service discovery, properties, etc.
– Multiple service interface styles 👍
– Consider monorepo for new work
– The levels of testing blur as services get smaller
• Microservices, serverless…
• Component testing vs. unit testing
– Vertical slices FTW!
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
+ +
++
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
Application Workflow in KillrVideo
User Logs
into site
Show basic
information
about user
Show videos
added by a
user
Show
comments
posted by a
user
Search for a
video by tag
Show latest
videos added
to the site
Show
comments for
a video
Show ratings
for a video
Show video
and its details
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
Queries in KillrVideo to Support Workflows
Users
User Logs into
site
Find user by email
address
Show basic
information
about user
Find user by id
Comments
Show
comments for
a video
Find comments by
video (latest first)
Show
comments
posted by a
user
Find comments by
user (latest first)
Ratings
Show ratings
for a video Find ratings by video
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
Designing Tables Based on Queries
Show video
and its details
Find video by id
Show videos
added by a
user
Find videos by user (latest
first)
CREATE TABLE videos (
videoid uuid,
userid uuid,
name text,
description text,
location text,
location_type int,
preview_image_location text,
tags set<text>,
added_date timestamp,
PRIMARY KEY (videoid)
);
CREATE TABLE user_videos (
userid uuid,
added_date timestamp,
videoid uuid,
name text,
preview_image_location text,
PRIMARY KEY (userid,
added_date, videoid)
)
WITH CLUSTERING ORDER BY (
added_date DESC,
videoid ASC);
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
KillrVideo Schema in DataStax Studio
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
Implementing Data Access and Business Logic
• Data Access
– Driver installation
– Driver initialization
– Writing and reading data
– Search
• Business Logic
– Input validation
– Email address format check
– Encoding / decoding page state
– Stop word removal
– Password encryption
Initializing DSE Driver and Mapper (__init__.py)
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/__init__.py
Video Catalog Service – Creating Prepared Statements
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_service.py
Video Catalog Service - Model classes used with Mapper
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_service.py
Video Catalog Service – adding a video
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_service.py
Video Catalog Service - Retrieving Latest Videos (paging)
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_service.py
© DataStax, All Rights Reserved.
Paging Blog Post
https://academy.datastax.com/content/paging-killrvideo
© DataStax, All Rights Reserved.
KillrVideo Python Services – Sprint 2a
User
Management
Service
Web Application
community.datastax.com | @jscarp
Video
Catalog
Service
Comments
Service
Rating
Service
Search
Service
Statistics
Service
Suggested
Videos
Service
Generator
Integration
Tests
Search Service – Finding Videos based on Keyword
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/search/search_service.py
© DataStax, All Rights Reserved.
KillrVideo Python Services – Sprint 2b
User
Management
Service
Web Application
community.datastax.com | @jscarp
Video
Catalog
Service
Comments
Service
Rating
Service
Search
Service
Statistics
Service
Suggested
Videos
Service
Generator
Integration
Tests
© DataStax, All Rights Reserved.
Sprint 2 – Data access and business logic
• Results
– DSE DB (Apache Cassandra) integration in multiple services
– DSE Search integration in Search Service
• Lessons Learned
– The Cassandra development methodology works!
• application data flows ➡️ data modeling ➡️ implementation
– Use multiple methods of driver interaction
• Mapper for simple reads/writes
• Prepared statements for paging
– Search is a powerful thing
• Added value beyond just avoiding denormalization
– Friction logging as a time capsule
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
+ +
+ +
+
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
KillrVideo Services Suggested
Videos
Service
DataStax Enterprise
DSE Graph
• UserCreated
• YouTubeVideoAdded
• UserRatedVideo • Populate graph
• Graph recommender
traversal
• Read and write
data
User Management, Video
Catalog, Ratings
KillrVideo Services and Events
community.datastax.com | @jscarp
Kafka / Zookeeper Docker Configuration
https://github.com/KillrVideo/killrvideo-python/blob/master/docker-compose.yaml
Video Catalog Service – Producing YouTubeVideoAdded
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_events_kafka.py
Suggested Video Service – Consuming Events
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/suggested_videos/suggested_videos_events_kafka.py
© DataStax, All Rights Reserved.
Uh oh
https://timber.io/blog/multiprocessing-vs-multithreading-in-python-what-you-need-to-know/
© DataStax, All Rights Reserved.
Sprint 3 – Kafka messaging
• Results
– Events produced by Comments Service, Ratings Service, User Management Service, Video
Catalog Service
– Events consumed by Suggested Videos Service
• Lessons Learned
– Example code – buyer beware!
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
+ +
+ +
+ +
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
Live Coding on Twitch
• Live coding sessions with advocates and
guests
• Working through the challenges of
building distributed systems
• Join the conversation and ask questions
• Twitch Rewind: KillrVideo Python Graph
Recommender
– https://www.youtube.com/watch?v=jK1J4sb
6qP0
https://www.twitch.tv/datastaxdevs
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
community.datastax.com | @jscarp
KillrVideo Graph Schema - Groovy
© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
Adding vertexes to the graph
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/suggested_videos/suggested_videos_service.py
Generating Video Recommendations
https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/suggested_videos/suggested_videos_service.py
© DataStax, All Rights Reserved.
Sprint 4 – Graph Recommender
• Results
– Graph recommender MVP in Suggested Videos Service
• Lessons Learned
– Graph way of thinking
• One traversal, many steps
– One learning curve at a time
• Graph learning curve ➡️ DataStax Studio
• DataStax Python Driver Graph Extension ➡️ command line
• Then add traversals to app
– New language, new process?
• Scripting languages – use the command line to prototype
– Live coding is like pair programming++
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
KillrVideo Python – Remaining Work
• Running Python services in Docker / Integration with killrvideo-all-in-one
• Graph recommender optimization
• Authenticating to DSE
• Upgrade to Python 3
• Feedback to docs/driver teams
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
https://trello.com/b/nlbJQfup
© DataStax, All Rights Reserved.
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
Stepping back - what did I learn??
• Decouple all the things
• Multiple service interface styles 👍
• Consider monorepo for new work
• The levels of testing blur as services get
smaller
• Vertical slices FTW!
• Friction logging as a time capsule
• Example code – buyer beware!
• One learning curve at a time
• New language, new process?
• Live coding is like pair programming++
• The Cassandra development
methodology works!
• Use multiple methods of driver interaction
• Search is a powerful thing
• Graph way of thinking
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
© DataStax, All Rights Reserved.
Getting involved
• Download and run
– All in one
• File an issue / Fix an issue
• Ask a question
• Weekly Coding Twitch Streams
• Coordination – every other Wednesday
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
Blogs
• KillrVideo Python Pt. 1— the Backstory
• Python App Dev with ProtoBuf and GRPC
• Advertising Python services via etcd
• Who needs unit tests? I’m building microservices!
• When data access is the easiest part of a microservice
• Cassandra with Python: Simple to Complex
• Kafka + Cassandra — like peanut butter and chocolate?
• + Post in progress on graph recommender
– https://medium.com/@jscarp
community.datastax.com | @jscarp
© DataStax, All Rights Reserved.
Thanks / Credits
• Collaborators!
– David Gilardi - @SonicDMG
– Amanda Moran - @AmandaK_Data
• Python driver guru
– Alan Boudreault
community.datastax.com | @jscarp
THANK YOU
community.datastax.com | @jscarp

Mais conteúdo relacionado

Mais procurados

Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Jeffrey Holden
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2makker_nl
 
Stangel open stack community activity board and metrics 041513
Stangel open stack community activity board and metrics 041513Stangel open stack community activity board and metrics 041513
Stangel open stack community activity board and metrics 041513OpenStack Foundation
 
Kubecon US 2019: Kubernetes Multitenancy WG Deep Dive
Kubecon US 2019: Kubernetes Multitenancy WG Deep DiveKubecon US 2019: Kubernetes Multitenancy WG Deep Dive
Kubecon US 2019: Kubernetes Multitenancy WG Deep DiveSanjeev Rampal
 
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...Yahoo!デベロッパーネットワーク
 
Big Data Certification
Big Data CertificationBig Data Certification
Big Data CertificationAdam Doyle
 
DCEU 18: Provisioning and Managing Storage for Docker Containers
DCEU 18: Provisioning and Managing Storage for Docker ContainersDCEU 18: Provisioning and Managing Storage for Docker Containers
DCEU 18: Provisioning and Managing Storage for Docker ContainersDocker, Inc.
 
Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018CodeOps Technologies LLP
 
Application Modernization with PKS / Kubernetes
Application Modernization with PKS / KubernetesApplication Modernization with PKS / Kubernetes
Application Modernization with PKS / KubernetesPaul Czarkowski
 
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...scalaconfjp
 
MongoDB, Cloudformation and Chef
MongoDB, Cloudformation and ChefMongoDB, Cloudformation and Chef
MongoDB, Cloudformation and ChefMongoDB
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDocker, Inc.
 
Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...
Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...
Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...DevOps.com
 
An Early Evaluation of Running Spark on Kubernetes
An Early Evaluation of Running Spark on KubernetesAn Early Evaluation of Running Spark on Kubernetes
An Early Evaluation of Running Spark on KubernetesDataWorks Summit
 
Oracle Code in Seoul: Provisioning of Cloud Resource
Oracle Code in Seoul: Provisioning of Cloud ResourceOracle Code in Seoul: Provisioning of Cloud Resource
Oracle Code in Seoul: Provisioning of Cloud ResourceTaewan Kim
 
AWS實際架構實踐演化與解決方案
AWS實際架構實踐演化與解決方案AWS實際架構實踐演化與解決方案
AWS實際架構實踐演化與解決方案CKmates
 
Build Smart Service on GCP - Google DevFest 2018 Taiwan
Build Smart Service on GCP - Google DevFest 2018 TaiwanBuild Smart Service on GCP - Google DevFest 2018 Taiwan
Build Smart Service on GCP - Google DevFest 2018 TaiwanDavid Chen
 
The Chef Prince of Azure - ChefConf 2015
The Chef Prince of Azure - ChefConf 2015The Chef Prince of Azure - ChefConf 2015
The Chef Prince of Azure - ChefConf 2015Chef
 
DCEU 18: Designing a Global Centralized Container Platform for a Multi-Cluste...
DCEU 18: Designing a Global Centralized Container Platform for a Multi-Cluste...DCEU 18: Designing a Global Centralized Container Platform for a Multi-Cluste...
DCEU 18: Designing a Global Centralized Container Platform for a Multi-Cluste...Docker, Inc.
 

Mais procurados (20)

Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
Deploying Cloud Native Red Team Infrastructure with Kubernetes, Istio and Envoy
 
20191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 220191201 kubernetes managed weblogic revival - part 2
20191201 kubernetes managed weblogic revival - part 2
 
Stangel open stack community activity board and metrics 041513
Stangel open stack community activity board and metrics 041513Stangel open stack community activity board and metrics 041513
Stangel open stack community activity board and metrics 041513
 
Kubecon US 2019: Kubernetes Multitenancy WG Deep Dive
Kubecon US 2019: Kubernetes Multitenancy WG Deep DiveKubecon US 2019: Kubernetes Multitenancy WG Deep Dive
Kubecon US 2019: Kubernetes Multitenancy WG Deep Dive
 
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...   Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
Dragon: A Distributed Object Storage at Yahoo! JAPAN (WebDB Forum 2017 / E...
 
Big Data Certification
Big Data CertificationBig Data Certification
Big Data Certification
 
Top 8 WCM Trends 2010
Top 8 WCM Trends 2010Top 8 WCM Trends 2010
Top 8 WCM Trends 2010
 
DCEU 18: Provisioning and Managing Storage for Docker Containers
DCEU 18: Provisioning and Managing Storage for Docker ContainersDCEU 18: Provisioning and Managing Storage for Docker Containers
DCEU 18: Provisioning and Managing Storage for Docker Containers
 
Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018Java is Container Ready - Vaibhav - Container Conference 2018
Java is Container Ready - Vaibhav - Container Conference 2018
 
Application Modernization with PKS / Kubernetes
Application Modernization with PKS / KubernetesApplication Modernization with PKS / Kubernetes
Application Modernization with PKS / Kubernetes
 
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
Run Scala Faster with GraalVM on any Platform / GraalVMで、どこでもScalaを高速実行しよう by...
 
MongoDB, Cloudformation and Chef
MongoDB, Cloudformation and ChefMongoDB, Cloudformation and Chef
MongoDB, Cloudformation and Chef
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
 
Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...
Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...
Comparing Microsoft SQL Server 2019 Performance Across Various Kubernetes Pla...
 
An Early Evaluation of Running Spark on Kubernetes
An Early Evaluation of Running Spark on KubernetesAn Early Evaluation of Running Spark on Kubernetes
An Early Evaluation of Running Spark on Kubernetes
 
Oracle Code in Seoul: Provisioning of Cloud Resource
Oracle Code in Seoul: Provisioning of Cloud ResourceOracle Code in Seoul: Provisioning of Cloud Resource
Oracle Code in Seoul: Provisioning of Cloud Resource
 
AWS實際架構實踐演化與解決方案
AWS實際架構實踐演化與解決方案AWS實際架構實踐演化與解決方案
AWS實際架構實踐演化與解決方案
 
Build Smart Service on GCP - Google DevFest 2018 Taiwan
Build Smart Service on GCP - Google DevFest 2018 TaiwanBuild Smart Service on GCP - Google DevFest 2018 Taiwan
Build Smart Service on GCP - Google DevFest 2018 Taiwan
 
The Chef Prince of Azure - ChefConf 2015
The Chef Prince of Azure - ChefConf 2015The Chef Prince of Azure - ChefConf 2015
The Chef Prince of Azure - ChefConf 2015
 
DCEU 18: Designing a Global Centralized Container Platform for a Multi-Cluste...
DCEU 18: Designing a Global Centralized Container Platform for a Multi-Cluste...DCEU 18: Designing a Global Centralized Container Platform for a Multi-Cluste...
DCEU 18: Designing a Global Centralized Container Platform for a Multi-Cluste...
 

Semelhante a Creating a Python Microservice Tier in Four Sprints with Cassandra, Kafka, and DSE Graph

WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationAmir Zmora
 
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...ITCamp
 
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Sadaaki HIRAI
 
Building your First Application with Cassandra
Building your First Application with CassandraBuilding your First Application with Cassandra
Building your First Application with CassandraLuke Tillman
 
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Amazon Web Services
 
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891Cisco DevNet
 
Sitecore Install Extensions in Action
Sitecore Install Extensions in ActionSitecore Install Extensions in Action
Sitecore Install Extensions in ActionRobert Senktas
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeADLINK Technology IoT
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféAngelo Corsaro
 
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...DataStax Academy
 
Cassandra Day Chicago 2015: Building Your First Application with Apache Cassa...
Cassandra Day Chicago 2015: Building Your First Application with Apache Cassa...Cassandra Day Chicago 2015: Building Your First Application with Apache Cassa...
Cassandra Day Chicago 2015: Building Your First Application with Apache Cassa...DataStax Academy
 
Cassandra Day London 2015: Building Your First Application in Apache Cassandra
Cassandra Day London 2015: Building Your First Application in Apache CassandraCassandra Day London 2015: Building Your First Application in Apache Cassandra
Cassandra Day London 2015: Building Your First Application in Apache CassandraDataStax Academy
 
Super-NetOps Source of Truth
Super-NetOps Source of TruthSuper-NetOps Source of Truth
Super-NetOps Source of TruthJoel W. King
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...Amir Zmora
 
DICE & Cloudify – Quality Big Data Made Easy
DICE & Cloudify – Quality Big Data Made EasyDICE & Cloudify – Quality Big Data Made Easy
DICE & Cloudify – Quality Big Data Made EasyCloudify Community
 
Patterns for Persistence and Streaming in Microservice Architectures
Patterns for Persistence and Streaming in Microservice ArchitecturesPatterns for Persistence and Streaming in Microservice Architectures
Patterns for Persistence and Streaming in Microservice ArchitecturesJeffrey Carpenter
 
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Jaime Martin Losa
 
First in Class: Optimizing the Data Lake for Tighter Integration
First in Class: Optimizing the Data Lake for Tighter IntegrationFirst in Class: Optimizing the Data Lake for Tighter Integration
First in Class: Optimizing the Data Lake for Tighter IntegrationInside Analysis
 

Semelhante a Creating a Python Microservice Tier in Four Sprints with Cassandra, Kafka, and DSE Graph (20)

WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & ImplementationWebRTC Webinar & Q&A - Sumilcast Standards & Implementation
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
 
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
Building and Managing your Virtual Datacenter using PowerShell DSC - Florin L...
 
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
 
Fast RTPS
Fast RTPSFast RTPS
Fast RTPS
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
Building your First Application with Cassandra
Building your First Application with CassandraBuilding your First Application with Cassandra
Building your First Application with Cassandra
 
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
 
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891
Webex Teams Widgets Technical Drill down - Cisco Live Orlando 2018 - DEVNET-3891
 
Sitecore Install Extensions in Action
Sitecore Install Extensions in ActionSitecore Install Extensions in Action
Sitecore Install Extensions in Action
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex Café
 
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
Cassandra Day Atlanta 2015: Building Your First Application with Apache Cassa...
 
Cassandra Day Chicago 2015: Building Your First Application with Apache Cassa...
Cassandra Day Chicago 2015: Building Your First Application with Apache Cassa...Cassandra Day Chicago 2015: Building Your First Application with Apache Cassa...
Cassandra Day Chicago 2015: Building Your First Application with Apache Cassa...
 
Cassandra Day London 2015: Building Your First Application in Apache Cassandra
Cassandra Day London 2015: Building Your First Application in Apache CassandraCassandra Day London 2015: Building Your First Application in Apache Cassandra
Cassandra Day London 2015: Building Your First Application in Apache Cassandra
 
Super-NetOps Source of Truth
Super-NetOps Source of TruthSuper-NetOps Source of Truth
Super-NetOps Source of Truth
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
 
DICE & Cloudify – Quality Big Data Made Easy
DICE & Cloudify – Quality Big Data Made EasyDICE & Cloudify – Quality Big Data Made Easy
DICE & Cloudify – Quality Big Data Made Easy
 
Patterns for Persistence and Streaming in Microservice Architectures
Patterns for Persistence and Streaming in Microservice ArchitecturesPatterns for Persistence and Streaming in Microservice Architectures
Patterns for Persistence and Streaming in Microservice Architectures
 
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
 
First in Class: Optimizing the Data Lake for Tighter Integration
First in Class: Optimizing the Data Lake for Tighter IntegrationFirst in Class: Optimizing the Data Lake for Tighter Integration
First in Class: Optimizing the Data Lake for Tighter Integration
 

Último

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 

Último (20)

Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 

Creating a Python Microservice Tier in Four Sprints with Cassandra, Kafka, and DSE Graph

  • 1. Creating a Python Microservice Tier in Four Sprints with Cassandra, Kafka, and DSE Graph Jeff Carpenter, Director of Developer Advocacy, DataStax community.datastax.com | @jscarp
  • 2. © DataStax, All Rights Reserved. community.datastax.com | @jscarp Prhotoshopping by Steve Halladay
  • 3. © DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
  • 4. © DataStax, All Rights Reserved.© DataStax, All Rights Reserved. Language of the year 2018 https://www.tiobe.com/tiobe-index/ community.datastax.com | @jscarp
  • 5. © DataStax, All Rights Reserved.
  • 6. © DataStax, All Rights Reserved. KillrVideo – A video sharing application https://github.com/KillrVideohttps://killrvideo.github.io community.datastax.com | @jscarp
  • 7. © DataStax, All Rights Reserved. KillrVideo High Level Architecture KillrVideo Services Your Browser Web Application Technology Choices • Node.js • Falcor • Java / C# / Node.js / Python • GRPC • Etcd • DataStax Drivers • DataStax Enterprise including Apache Cassandra & Spark, Graph Deployment • Download and run locally via Docker • Deployed in AWS using DataStax Managed Services: http://killrvideo.com/ community.datastax.com | @jscarp
  • 8. © DataStax, All Rights Reserved. KillrVideo Python Services – Sprint 1 User Management Service Web Application community.datastax.com | @jscarp Video Catalog Service Comments Service Rating Service Search Service Statistics Service Suggested Videos Service Generator Integration Tests
  • 9. © DataStax, All Rights Reserved. KillrVideo Python Services – Sprint 2a User Management Service Web Application community.datastax.com | @jscarp Video Catalog Service Comments Service Rating Service Search Service Statistics Service Suggested Videos Service Generator Integration Tests
  • 10. © DataStax, All Rights Reserved. KillrVideo Python Services – Sprint 2b User Management Service Web Application community.datastax.com | @jscarp Video Catalog Service Comments Service Rating Service Search Service Statistics Service Suggested Videos Service Generator Integration Tests
  • 11. © DataStax, All Rights Reserved. KillrVideo Python Services – Sprint 3 User Management Service Web Application community.datastax.com | @jscarp Video Catalog Service Comments Service Rating Service Search Service Statistics Service Suggested Videos Service Generator Integration Tests
  • 12. © DataStax, All Rights Reserved. KillrVideo Python Services – Sprint 4 User Management Service Web Application community.datastax.com | @jscarp Video Catalog Service Comments Service Rating Service Search Service Statistics Service Suggested Videos Service Generator Integration Tests
  • 13. © DataStax, All Rights Reserved. KillrVideo Python - Givens • Overall Architecture • Infrastructure Selection • User Interface Design / Web Application • Service Design / APIs • Data Models - CQL and Gremlin • Infrastructure Configuration / Docker Compose • Integration tests • Logo community.datastax.com | @jscarp
  • 14. © DataStax, All Rights Reserved. WEB WEB Client bootstrap react redux falcor Service Registry KillrVideo Services CASSANDRA Microservices (Service requests) 9091 SEARCH GRAPH ANALYTICS DRIVERS 9042 2379 registrator 3000 Register videos Killrvideo Integration Test client (cucumber) WEB Server falcor Component Runtime Customer Browser GENERATOR Killrvideo-generator community.datastax.com | @jscarp
  • 15. © DataStax, All Rights Reserved.
  • 16. © DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
  • 17. © DataStax, All Rights Reserved.
  • 18. © DataStax, All Rights Reserved. community.datastax.com | @jscarp
  • 19. © DataStax, All Rights Reserved. + + community.datastax.com | @jscarp
  • 20. © DataStax, All Rights Reserved. Service Interfaces? • Pro – Great for cross language support – Stub generation – Compact • Con – Generation with common files – Debugging • Pro – Easy to understand – Easy to test (curl) • Con – HTTP Status codes – Consistency • Pro – Great at composing across multiple smaller services • Con – Overkill for CRUD style services? community.datastax.com | @jscarp
  • 21. User Management Service – Protobuf service definition https://github.com/KillrVideo/killrvideo-service-protos/blob/master/src/user-management/user_management_service.proto
  • 22. © DataStax, All Rights Reserved. GRPC / Protobuf to Python Source https://github.com/KillrVideo/killrvideo-service-protos/tree/master/src/user-management user_management_service_pb2.py user_management_service_pb2_grpc.py user_management_service_grpc.py user_management_service.py Protobuf definition Generated stubs GRPC-specific code Service implementation user_management_service.proto Python grpc_tools Extend https://github.com/KillrVideo/killrvideo-python/tree/master/killrvideo/user_management Call community.datastax.com | @jscarp
  • 23. Initializing GRPC Server / registering services in etcd (__init__.py) https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/__init__.py
  • 24. Success! Integration tests all fail! https://github.com/KillrVideo/killrvideo-integration-tests
  • 25. © DataStax, All Rights Reserved. KillrVideo Python Services – Sprint 1 User Management Service Web Application community.datastax.com | @jscarp Video Catalog Service Comments Service Rating Service Search Service Statistics Service Suggested Videos Service Generator Integration Tests
  • 26. © DataStax, All Rights Reserved. Sprint 1 – The Plumbing • Results: – Services up and running, exposed via GRPC, registered in etcd, all integration tests FAILING! • Lessons Learned: – Decouple all the things • Service interfaces, service implementations, service discovery, properties, etc. – Multiple service interface styles 👍 – Consider monorepo for new work – The levels of testing blur as services get smaller • Microservices, serverless… • Component testing vs. unit testing – Vertical slices FTW! community.datastax.com | @jscarp
  • 27. © DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
  • 28. © DataStax, All Rights Reserved. + + ++ community.datastax.com | @jscarp
  • 29. © DataStax, All Rights Reserved.
  • 30. © DataStax, All Rights Reserved. Application Workflow in KillrVideo User Logs into site Show basic information about user Show videos added by a user Show comments posted by a user Search for a video by tag Show latest videos added to the site Show comments for a video Show ratings for a video Show video and its details community.datastax.com | @jscarp
  • 31. © DataStax, All Rights Reserved. Queries in KillrVideo to Support Workflows Users User Logs into site Find user by email address Show basic information about user Find user by id Comments Show comments for a video Find comments by video (latest first) Show comments posted by a user Find comments by user (latest first) Ratings Show ratings for a video Find ratings by video community.datastax.com | @jscarp
  • 32. © DataStax, All Rights Reserved. Designing Tables Based on Queries Show video and its details Find video by id Show videos added by a user Find videos by user (latest first) CREATE TABLE videos ( videoid uuid, userid uuid, name text, description text, location text, location_type int, preview_image_location text, tags set<text>, added_date timestamp, PRIMARY KEY (videoid) ); CREATE TABLE user_videos ( userid uuid, added_date timestamp, videoid uuid, name text, preview_image_location text, PRIMARY KEY (userid, added_date, videoid) ) WITH CLUSTERING ORDER BY ( added_date DESC, videoid ASC); community.datastax.com | @jscarp
  • 33. © DataStax, All Rights Reserved. KillrVideo Schema in DataStax Studio community.datastax.com | @jscarp
  • 34. © DataStax, All Rights Reserved. Implementing Data Access and Business Logic • Data Access – Driver installation – Driver initialization – Writing and reading data – Search • Business Logic – Input validation – Email address format check – Encoding / decoding page state – Stop word removal – Password encryption
  • 35. Initializing DSE Driver and Mapper (__init__.py) https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/__init__.py
  • 36. Video Catalog Service – Creating Prepared Statements https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_service.py
  • 37. Video Catalog Service - Model classes used with Mapper https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_service.py
  • 38. Video Catalog Service – adding a video https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_service.py
  • 39. Video Catalog Service - Retrieving Latest Videos (paging) https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_service.py
  • 40. © DataStax, All Rights Reserved. Paging Blog Post https://academy.datastax.com/content/paging-killrvideo
  • 41. © DataStax, All Rights Reserved. KillrVideo Python Services – Sprint 2a User Management Service Web Application community.datastax.com | @jscarp Video Catalog Service Comments Service Rating Service Search Service Statistics Service Suggested Videos Service Generator Integration Tests
  • 42. Search Service – Finding Videos based on Keyword https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/search/search_service.py
  • 43. © DataStax, All Rights Reserved. KillrVideo Python Services – Sprint 2b User Management Service Web Application community.datastax.com | @jscarp Video Catalog Service Comments Service Rating Service Search Service Statistics Service Suggested Videos Service Generator Integration Tests
  • 44. © DataStax, All Rights Reserved. Sprint 2 – Data access and business logic • Results – DSE DB (Apache Cassandra) integration in multiple services – DSE Search integration in Search Service • Lessons Learned – The Cassandra development methodology works! • application data flows ➡️ data modeling ➡️ implementation – Use multiple methods of driver interaction • Mapper for simple reads/writes • Prepared statements for paging – Search is a powerful thing • Added value beyond just avoiding denormalization – Friction logging as a time capsule community.datastax.com | @jscarp
  • 45. © DataStax, All Rights Reserved.
  • 46. © DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
  • 47. © DataStax, All Rights Reserved. + + + + + community.datastax.com | @jscarp
  • 48. © DataStax, All Rights Reserved. KillrVideo Services Suggested Videos Service DataStax Enterprise DSE Graph • UserCreated • YouTubeVideoAdded • UserRatedVideo • Populate graph • Graph recommender traversal • Read and write data User Management, Video Catalog, Ratings KillrVideo Services and Events community.datastax.com | @jscarp
  • 49. Kafka / Zookeeper Docker Configuration https://github.com/KillrVideo/killrvideo-python/blob/master/docker-compose.yaml
  • 50. Video Catalog Service – Producing YouTubeVideoAdded https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/video_catalog/video_catalog_events_kafka.py
  • 51. Suggested Video Service – Consuming Events https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/suggested_videos/suggested_videos_events_kafka.py
  • 52. © DataStax, All Rights Reserved. Uh oh https://timber.io/blog/multiprocessing-vs-multithreading-in-python-what-you-need-to-know/
  • 53. © DataStax, All Rights Reserved. Sprint 3 – Kafka messaging • Results – Events produced by Comments Service, Ratings Service, User Management Service, Video Catalog Service – Events consumed by Suggested Videos Service • Lessons Learned – Example code – buyer beware! community.datastax.com | @jscarp
  • 54. © DataStax, All Rights Reserved.© DataStax, All Rights Reserved.
  • 55. © DataStax, All Rights Reserved. + + + + + + community.datastax.com | @jscarp
  • 56. © DataStax, All Rights Reserved. community.datastax.com | @jscarp
  • 57. © DataStax, All Rights Reserved.
  • 58. © DataStax, All Rights Reserved. Live Coding on Twitch • Live coding sessions with advocates and guests • Working through the challenges of building distributed systems • Join the conversation and ask questions • Twitch Rewind: KillrVideo Python Graph Recommender – https://www.youtube.com/watch?v=jK1J4sb 6qP0 https://www.twitch.tv/datastaxdevs community.datastax.com | @jscarp
  • 59. © DataStax, All Rights Reserved. community.datastax.com | @jscarp
  • 60. © DataStax, All Rights Reserved. community.datastax.com | @jscarp
  • 61. © DataStax, All Rights Reserved. community.datastax.com | @jscarp
  • 62. © DataStax, All Rights Reserved. community.datastax.com | @jscarp
  • 63. © DataStax, All Rights Reserved. community.datastax.com | @jscarp
  • 65. © DataStax, All Rights Reserved.
  • 66. © DataStax, All Rights Reserved.
  • 67. Adding vertexes to the graph https://github.com/KillrVideo/killrvideo-python/blob/master/killrvideo/suggested_videos/suggested_videos_service.py
  • 69. © DataStax, All Rights Reserved. Sprint 4 – Graph Recommender • Results – Graph recommender MVP in Suggested Videos Service • Lessons Learned – Graph way of thinking • One traversal, many steps – One learning curve at a time • Graph learning curve ➡️ DataStax Studio • DataStax Python Driver Graph Extension ➡️ command line • Then add traversals to app – New language, new process? • Scripting languages – use the command line to prototype – Live coding is like pair programming++ community.datastax.com | @jscarp
  • 70. © DataStax, All Rights Reserved.
  • 71. © DataStax, All Rights Reserved. KillrVideo Python – Remaining Work • Running Python services in Docker / Integration with killrvideo-all-in-one • Graph recommender optimization • Authenticating to DSE • Upgrade to Python 3 • Feedback to docs/driver teams community.datastax.com | @jscarp
  • 72. © DataStax, All Rights Reserved. https://trello.com/b/nlbJQfup
  • 73. © DataStax, All Rights Reserved. community.datastax.com | @jscarp
  • 74. © DataStax, All Rights Reserved. Stepping back - what did I learn?? • Decouple all the things • Multiple service interface styles 👍 • Consider monorepo for new work • The levels of testing blur as services get smaller • Vertical slices FTW! • Friction logging as a time capsule • Example code – buyer beware! • One learning curve at a time • New language, new process? • Live coding is like pair programming++ • The Cassandra development methodology works! • Use multiple methods of driver interaction • Search is a powerful thing • Graph way of thinking community.datastax.com | @jscarp
  • 75. © DataStax, All Rights Reserved.
  • 76. © DataStax, All Rights Reserved. Getting involved • Download and run – All in one • File an issue / Fix an issue • Ask a question • Weekly Coding Twitch Streams • Coordination – every other Wednesday community.datastax.com | @jscarp
  • 77. © DataStax, All Rights Reserved. Blogs • KillrVideo Python Pt. 1— the Backstory • Python App Dev with ProtoBuf and GRPC • Advertising Python services via etcd • Who needs unit tests? I’m building microservices! • When data access is the easiest part of a microservice • Cassandra with Python: Simple to Complex • Kafka + Cassandra — like peanut butter and chocolate? • + Post in progress on graph recommender – https://medium.com/@jscarp community.datastax.com | @jscarp
  • 78. © DataStax, All Rights Reserved. Thanks / Credits • Collaborators! – David Gilardi - @SonicDMG – Amanda Moran - @AmandaK_Data • Python driver guru – Alan Boudreault community.datastax.com | @jscarp

Notas do Editor

  1. What is KillrVideo?
  2. So what is behind the system We built a microservice application
  3. So what is behind the system We built a microservice application
  4. So what is behind the system We built a microservice application
  5. So what is behind the system We built a microservice application
  6. So what is behind the system We built a microservice application
  7. So what is behind the system We built a microservice application
  8. Sometimes you just need to get out of the blocks
  9. And now a comment about monorepos You’ll notice in this presentation that code snips I share are from different repos within the KV org If we were starting over, we might have done a monorepo
  10. So what is behind the system We built a microservice application
  11. contradiction
  12. The second sprint was the easy part – adding Cassandra
  13. What is KillrVideo?
  14. Theres an additional table for latest videos
  15. So what is behind the system We built a microservice application
  16. I thought this might be a separate sprint, but turned out to be simple I’ve abstracted the paging details for simplicity
  17. So what is behind the system We built a microservice application
  18. In the third sprint I tacked a new challenge - Kafka
  19. Multiple patterns exist for integrating Kafka and Cassandra – this is just one – using Kafka as a message bus between services.
  20. For the last sprint I had a little help from my friends
  21. Deliberately used the most complex insert example Single traversal but multiple concatenated steps Locate user, add video, user to video, add tags, video to tag