SlideShare a Scribd company logo
1 of 43
Casquatch
Josh Turner, June 26th, 2019
Public
2
Who?
Public
3Public
 Josh Turner
 Principal Engineer @ T-Mobile
 Distributed Data Systems
Lead
 Software Development
Engineering
/turnerjosh /tdl-jturner
Who am I & Where do I come from?
4
Why?
Public
55
 Moving from Oracle™ to Cassandra
 High Learning Curve
 Complex Configuration
 Duplicated Code
 Missing Enterprise Best Practices
Why build it?
Public
66
 Versatile Framework
 Reduces Learning Curve
 Success Internally In T-Mobile
 Because We Can. #UnCarrier
Why share it?
Public
77
 Cassandra Is A Name!
 Researched Nicknames
 Sasquatch Is Our Local Legend
 Casquatch Is Born!
Why Casquatch?
Public
8
What?
Public
9
 Distributed, wide column store,
NoSQL Database
 Masterless Architecture
 Tunable Consistency / AP Design
 Query Language : CQL
What is Cassandra?
Public
10
 Cassandra Made Easy!
 Java Abstraction Layer For Cassandra
 Pre-tuned For Enterprise Best
Practices
 Object Oriented Code Generation
 Simple Object Based API
 Java Spring Boot Framework
Integration
What is Casquatch?
Public
11
 Load Balancing / Geo Redundancy
 Connection Pooling
 Reconnection & Retry Policy
 Data Caching
 Workload Filtering
 Security
What do I get?
Public
12
Architecture
Java Application
DSE
Drive
r
Cassandra
Casquatch
POJ
Os
DSE
Object
Mapper
Public
13
 Open Source Only Model
 T-Mobile Open Source Group
 https://opensource.t-mobile.com
 Project Casquatch
 https://github.com/tmobile/casquatch
 JavaDocs
 https://tmobile.github.io/casquatch/
Open Source
Public
14
 We recognize that there is a wide range of
platforms, and T-Mobile can't address them
all. This is why we open sourced
Casquatch -- we hope the community will
be able to expand how Casquatch is
used. As with any tool, consult with your IT
department before using in production.
 All code samples included are for
demonstration purposes only.
 Licensed under Apache 2.0
 https://www.apache.org/licenses/LICENSE-2.0
Open Source
Public
15
 03/05/2018 – 1.0 Internal Release
 04/05/2018 – 1.1 Release
 06/22/2018 – 1.2 Release Open
Sourced!
 09/17/2018 – 1.3 Release
 05/01/2019 – 1.4 Release
Project History
Public
16
How?
Public
1717
 We started with Spring Data
 All the testing went great… Until
production
 We didn’t know what we didn’t
know…
 Tried to fix Spring
 Decided to build and integrate
How did I get here?
Public
1818
 Spring Data
 No High Availability
 No Retry
 Non Industry Best Practices
 Casquatch
 Highly Available
 Automatic Retry
 Follows Industry Best Practices
 Savings
 Significant reduction in support and design cost
 Highly Reliable Architecture
How does it compare?
Public
1919
 Spring Data - Developer Effort
 ~150 Lines For Basic Configuration
 ~100 Lines Per Table
 ~10 Tables Per App
 Casquatch - Developer Effort
 ~10 lines of code
 Savings
 1100+ lines of code and days of developer
time for each application
How muchdo I have to write?
Public
2020
 Command Line Interface
 Driven by Table Metadata
 Annotated Objects
 Customizable
Code Generator
Public
2121
 Hosted by Sonatype
 Available in Maven Central
 Include in pom.xml
Maven
Public
2222
 Optional Spring Boot Integration
 Add Import to Application.java
 Dependency Injection
Spring Boot Integration
Public
2323
 Skip Spring Boot
 Builder Pattern
 CassandraDriver.builder().withUsern
ame() … .build()
 All properties are available
If You BuildIt…
Public
24
SHOW ME!
Public
25Public
 Standard
application.properties
 The Basics
 Credentials, Contact Points,
Keyspace, etc
 The Advanced
 Connection Limits, LoadBalancing,
Timeout, SSL, etc
 Many More in README.md
Spring Boot Configuration:
Code For Demonstration Purposes Only
26Public
 Skip Spring Boot and Do It Yourself
 The Basics
 Credentials, Contact Points,
Keyspace, etc
 The Advanced
 Connection Limits, LoadBalancing,
Timeout, SSL, etc
 Many More in API Docs
Builder Pattern:
Code For Demonstration Purposes Only
27Public
 Create a Cassandra Table
 Columns use _ for spaces
 Supports all data types
 Supports UDT
Create Schema:
Code For Demonstration Purposes Only
28Public
 Run the code generator
 Read in settings on command line
or from properties file
 Configurable options
 More in README.md
Create Some Code:
Code For Demonstration Purposes Only
29Public
 Custom Package
 Only Required Imports
Get Some Code: tableName.java
Code For Demonstration Purposes Only
30Public
 Comments
 Full CQL
 Annotated
Get Some Code: tableName.java
Code For Demonstration Purposes Only
31Public
 JavaDoc
 Constructors
 Getters and Setters
Get Some Code: tableName.java
Code For Demonstration Purposes Only
32Public
 Package option creates pom.xml
 Snippet shorted for slide
 Complete Artifact
Get Some Code: pom.xml
Code For Demonstration Purposes Only
33Public
 T getById(Class<T> c, T o) : Get by passing an object instance with the key
populated.
 void save(Class<T> c, T o) : Save by passing an object instance.
 void delete(Class<T> c, T o): Delete by passing an object instance with the key
populated
Use The Code:
Code For Demonstration Purposes Only
34
Sneak Peak!
The Following FunctionalityIs Not Final
Public
35Public
 Run the code generator with a –
dao
 Generate the Data Access Object
 REST APIs
 Deployable Microservice
 Unit Tested with Mockito
Generate a DAO
Code For Demonstration Purposes Only
36Public
 Swagger UI Integration
 Basic Casquatch APIs exposed
 Wrapped in Request/Response
payload objects
 Simple JSON interface
 Clean error messaging and status
codes
DAO - Swagger
Code For Demonstration Purposes Only
3737 Public
DAO - Exists
Code For Demonstration Purposes Only
3838 Public
DAO - Save
Code For Demonstration Purposes Only
3939 Public
DAO - Get
Code For Demonstration Purposes Only
40Public
 Utilizes generic
AbstractCassandraDAO
 Easily extensible
 Adjust URL through annotation
DAO - Implementation
Code For Demonstration Purposes Only
41Public
 Thin wrapper
 Consistent Request/Response
objects
 Functionality Mirrors Casquatch
API
DAO - Implementation
Code For Demonstration Purposes Only
ClosingSlides
LET’S
TALK
ClosingSlides

More Related Content

What's hot

$10,000 Phantom App & Playbook Contest - F5 and Cisco Meraki
$10,000 Phantom App & Playbook Contest - F5 and Cisco Meraki$10,000 Phantom App & Playbook Contest - F5 and Cisco Meraki
$10,000 Phantom App & Playbook Contest - F5 and Cisco MerakiJoel W. King
 
Riviera jug apicassandra
Riviera jug apicassandraRiviera jug apicassandra
Riviera jug apicassandraCédrick Lunven
 
Building Rich Applications with Appcelerator
Building Rich Applications with AppceleratorBuilding Rich Applications with Appcelerator
Building Rich Applications with AppceleratorMatt Raible
 
Using Go in DevOps
Using Go in DevOpsUsing Go in DevOps
Using Go in DevOpsEficode
 
"The F# Path to Relaxation", Don Syme
"The F# Path to Relaxation", Don Syme"The F# Path to Relaxation", Don Syme
"The F# Path to Relaxation", Don SymeFwdays
 
ADDO 2019 DevOps in a containerized world
ADDO 2019 DevOps in a containerized worldADDO 2019 DevOps in a containerized world
ADDO 2019 DevOps in a containerized worldMartin Alfke
 
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and IstioAdvanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and IstioAnimesh Singh
 
給 RD 的 Kubernetes 初體驗 (GDG Cloud KH 2019-08 version)
給 RD 的 Kubernetes 初體驗 (GDG Cloud KH 2019-08 version) 給 RD 的 Kubernetes 初體驗 (GDG Cloud KH 2019-08 version)
給 RD 的 Kubernetes 初體驗 (GDG Cloud KH 2019-08 version) William Yeh
 
PHP And Silverlight - DevDays session
PHP And Silverlight - DevDays sessionPHP And Silverlight - DevDays session
PHP And Silverlight - DevDays sessionMaarten Balliauw
 
ML Kit , Cloud FF GDSC MESCOE.pdf
ML Kit , Cloud FF GDSC MESCOE.pdfML Kit , Cloud FF GDSC MESCOE.pdf
ML Kit , Cloud FF GDSC MESCOE.pdfAkankshaPathak42
 
Introducing Kubeflow (w. Special Guests Tensorflow and Apache Spark)
Introducing Kubeflow (w. Special Guests Tensorflow and Apache Spark)Introducing Kubeflow (w. Special Guests Tensorflow and Apache Spark)
Introducing Kubeflow (w. Special Guests Tensorflow and Apache Spark)DataWorks Summit
 
gRPC:更高效的微服務介面
gRPC:更高效的微服務介面gRPC:更高效的微服務介面
gRPC:更高效的微服務介面William Yeh
 
Building Translate on Glass
Building Translate on GlassBuilding Translate on Glass
Building Translate on GlassTrish Whetzel
 
Importance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCPImportance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCPAnshTyagi27
 
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)충섭 김
 
Spring framework 5: New Core and Reactive features
Spring framework 5: New Core and Reactive featuresSpring framework 5: New Core and Reactive features
Spring framework 5: New Core and Reactive featuresAliaksei Zhynhiarouski
 

What's hot (20)

$10,000 Phantom App & Playbook Contest - F5 and Cisco Meraki
$10,000 Phantom App & Playbook Contest - F5 and Cisco Meraki$10,000 Phantom App & Playbook Contest - F5 and Cisco Meraki
$10,000 Phantom App & Playbook Contest - F5 and Cisco Meraki
 
Riviera jug apicassandra
Riviera jug apicassandraRiviera jug apicassandra
Riviera jug apicassandra
 
Building Rich Applications with Appcelerator
Building Rich Applications with AppceleratorBuilding Rich Applications with Appcelerator
Building Rich Applications with Appcelerator
 
Using Go in DevOps
Using Go in DevOpsUsing Go in DevOps
Using Go in DevOps
 
"The F# Path to Relaxation", Don Syme
"The F# Path to Relaxation", Don Syme"The F# Path to Relaxation", Don Syme
"The F# Path to Relaxation", Don Syme
 
Compare framework
Compare frameworkCompare framework
Compare framework
 
ADDO 2019 DevOps in a containerized world
ADDO 2019 DevOps in a containerized worldADDO 2019 DevOps in a containerized world
ADDO 2019 DevOps in a containerized world
 
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and IstioAdvanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
Advanced Model Inferencing leveraging Kubeflow Serving, KNative and Istio
 
Animations in Flutter
Animations in FlutterAnimations in Flutter
Animations in Flutter
 
給 RD 的 Kubernetes 初體驗 (GDG Cloud KH 2019-08 version)
給 RD 的 Kubernetes 初體驗 (GDG Cloud KH 2019-08 version) 給 RD 的 Kubernetes 初體驗 (GDG Cloud KH 2019-08 version)
給 RD 的 Kubernetes 初體驗 (GDG Cloud KH 2019-08 version)
 
PHP And Silverlight - DevDays session
PHP And Silverlight - DevDays sessionPHP And Silverlight - DevDays session
PHP And Silverlight - DevDays session
 
ML Kit , Cloud FF GDSC MESCOE.pdf
ML Kit , Cloud FF GDSC MESCOE.pdfML Kit , Cloud FF GDSC MESCOE.pdf
ML Kit , Cloud FF GDSC MESCOE.pdf
 
Introducing Kubeflow (w. Special Guests Tensorflow and Apache Spark)
Introducing Kubeflow (w. Special Guests Tensorflow and Apache Spark)Introducing Kubeflow (w. Special Guests Tensorflow and Apache Spark)
Introducing Kubeflow (w. Special Guests Tensorflow and Apache Spark)
 
gRPC:更高效的微服務介面
gRPC:更高效的微服務介面gRPC:更高效的微服務介面
gRPC:更高效的微服務介面
 
Build 2019 Recap
Build 2019 RecapBuild 2019 Recap
Build 2019 Recap
 
Kubeflow
KubeflowKubeflow
Kubeflow
 
Building Translate on Glass
Building Translate on GlassBuilding Translate on Glass
Building Translate on Glass
 
Importance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCPImportance of GCP: 30 Days of GCP
Importance of GCP: 30 Days of GCP
 
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
쿠버네티스를 이용한 기능 브랜치별 테스트 서버 만들기 (GitOps CI/CD)
 
Spring framework 5: New Core and Reactive features
Spring framework 5: New Core and Reactive featuresSpring framework 5: New Core and Reactive features
Spring framework 5: New Core and Reactive features
 

Similar to Seattle Cassandra Users: An OSS Java Abstraction Layer for Cassandra

Industrializing Machine learning pipelines
Industrializing Machine learning pipelinesIndustrializing Machine learning pipelines
Industrializing Machine learning pipelinesGermain Tanguy
 
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...Boston Data Engineering
 
There and Back Again (My DevOps journey) - DevOps Days Copenhagen 2018
There and Back Again (My DevOps journey) - DevOps Days Copenhagen 2018There and Back Again (My DevOps journey) - DevOps Days Copenhagen 2018
There and Back Again (My DevOps journey) - DevOps Days Copenhagen 2018Giulio Vian
 
Big Data Europe SC6 WS #3: Big Data Europe Platform: Apps, challenges, goals ...
Big Data Europe SC6 WS #3: Big Data Europe Platform: Apps, challenges, goals ...Big Data Europe SC6 WS #3: Big Data Europe Platform: Apps, challenges, goals ...
Big Data Europe SC6 WS #3: Big Data Europe Platform: Apps, challenges, goals ...BigData_Europe
 
Introduction to Telerik OpenAccess ORM
Introduction to Telerik OpenAccess ORMIntroduction to Telerik OpenAccess ORM
Introduction to Telerik OpenAccess ORMpeterbahaa
 
(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel ArchitecturesJoel Falcou
 
WSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer WorkspaceWSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer WorkspaceWSO2
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011YoungSu Son
 
Clean Infrastructure as Code
Clean Infrastructure as CodeClean Infrastructure as Code
Clean Infrastructure as CodeQAware GmbH
 
Tom Mason (Stability AI) - Computing Large Foundational Models Unlisted
Tom Mason (Stability AI) - Computing Large Foundational Models UnlistedTom Mason (Stability AI) - Computing Large Foundational Models Unlisted
Tom Mason (Stability AI) - Computing Large Foundational Models UnlistedTechsylvania
 
CQRS: A More Effective Way of Writing the Same Applications
CQRS: A More Effective Way of Writing the Same ApplicationsCQRS: A More Effective Way of Writing the Same Applications
CQRS: A More Effective Way of Writing the Same ApplicationsCodeFest
 
Developing ML-enabled Data Pipelines on Databricks using IDE & CI/CD at Runta...
Developing ML-enabled Data Pipelines on Databricks using IDE & CI/CD at Runta...Developing ML-enabled Data Pipelines on Databricks using IDE & CI/CD at Runta...
Developing ML-enabled Data Pipelines on Databricks using IDE & CI/CD at Runta...Databricks
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAmazon Web Services
 
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...James Anderson
 
Prepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/GreenPrepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/GreenSonatype
 
All Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue GreenAll Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue GreenFab L
 
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthPittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthGrace Jansen
 
Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]
Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]
Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]Animesh Singh
 
SwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptxSwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptxGrace Jansen
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Bram Adams
 

Similar to Seattle Cassandra Users: An OSS Java Abstraction Layer for Cassandra (20)

Industrializing Machine learning pipelines
Industrializing Machine learning pipelinesIndustrializing Machine learning pipelines
Industrializing Machine learning pipelines
 
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
Boston Data Engineering: Kedro Python Framework for Data Science: Overview an...
 
There and Back Again (My DevOps journey) - DevOps Days Copenhagen 2018
There and Back Again (My DevOps journey) - DevOps Days Copenhagen 2018There and Back Again (My DevOps journey) - DevOps Days Copenhagen 2018
There and Back Again (My DevOps journey) - DevOps Days Copenhagen 2018
 
Big Data Europe SC6 WS #3: Big Data Europe Platform: Apps, challenges, goals ...
Big Data Europe SC6 WS #3: Big Data Europe Platform: Apps, challenges, goals ...Big Data Europe SC6 WS #3: Big Data Europe Platform: Apps, challenges, goals ...
Big Data Europe SC6 WS #3: Big Data Europe Platform: Apps, challenges, goals ...
 
Introduction to Telerik OpenAccess ORM
Introduction to Telerik OpenAccess ORMIntroduction to Telerik OpenAccess ORM
Introduction to Telerik OpenAccess ORM
 
(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures(Costless) Software Abstractions for Parallel Architectures
(Costless) Software Abstractions for Parallel Architectures
 
WSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer WorkspaceWSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
WSO2Con EU 2015: Keynote - The Containerization of the Developer Workspace
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
 
Clean Infrastructure as Code
Clean Infrastructure as CodeClean Infrastructure as Code
Clean Infrastructure as Code
 
Tom Mason (Stability AI) - Computing Large Foundational Models Unlisted
Tom Mason (Stability AI) - Computing Large Foundational Models UnlistedTom Mason (Stability AI) - Computing Large Foundational Models Unlisted
Tom Mason (Stability AI) - Computing Large Foundational Models Unlisted
 
CQRS: A More Effective Way of Writing the Same Applications
CQRS: A More Effective Way of Writing the Same ApplicationsCQRS: A More Effective Way of Writing the Same Applications
CQRS: A More Effective Way of Writing the Same Applications
 
Developing ML-enabled Data Pipelines on Databricks using IDE & CI/CD at Runta...
Developing ML-enabled Data Pipelines on Databricks using IDE & CI/CD at Runta...Developing ML-enabled Data Pipelines on Databricks using IDE & CI/CD at Runta...
Developing ML-enabled Data Pipelines on Databricks using IDE & CI/CD at Runta...
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
GDG Cloud Southlake #16: Priyanka Vergadia: Scalable Data Analytics in Google...
 
Prepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/GreenPrepare to defend thyself with Blue/Green
Prepare to defend thyself with Blue/Green
 
All Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue GreenAll Day DevOps 2016 Fabian - Defending Thyself with Blue Green
All Day DevOps 2016 Fabian - Defending Thyself with Blue Green
 
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earthPittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
PittsburgJUG_Cloud-Native Dev Tools: Bringing the cloud back to earth
 
Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]
Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]
Hybrid Cloud, Kubeflow and Tensorflow Extended [TFX]
 
SwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptxSwissJUG_Bringing the cloud back down to earth.pptx
SwissJUG_Bringing the cloud back down to earth.pptx
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 

Recently uploaded

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 

Seattle Cassandra Users: An OSS Java Abstraction Layer for Cassandra

  • 1. Casquatch Josh Turner, June 26th, 2019 Public
  • 3. 3Public  Josh Turner  Principal Engineer @ T-Mobile  Distributed Data Systems Lead  Software Development Engineering /turnerjosh /tdl-jturner Who am I & Where do I come from?
  • 5. 55  Moving from Oracle™ to Cassandra  High Learning Curve  Complex Configuration  Duplicated Code  Missing Enterprise Best Practices Why build it? Public
  • 6. 66  Versatile Framework  Reduces Learning Curve  Success Internally In T-Mobile  Because We Can. #UnCarrier Why share it? Public
  • 7. 77  Cassandra Is A Name!  Researched Nicknames  Sasquatch Is Our Local Legend  Casquatch Is Born! Why Casquatch? Public
  • 9. 9  Distributed, wide column store, NoSQL Database  Masterless Architecture  Tunable Consistency / AP Design  Query Language : CQL What is Cassandra? Public
  • 10. 10  Cassandra Made Easy!  Java Abstraction Layer For Cassandra  Pre-tuned For Enterprise Best Practices  Object Oriented Code Generation  Simple Object Based API  Java Spring Boot Framework Integration What is Casquatch? Public
  • 11. 11  Load Balancing / Geo Redundancy  Connection Pooling  Reconnection & Retry Policy  Data Caching  Workload Filtering  Security What do I get? Public
  • 13. 13  Open Source Only Model  T-Mobile Open Source Group  https://opensource.t-mobile.com  Project Casquatch  https://github.com/tmobile/casquatch  JavaDocs  https://tmobile.github.io/casquatch/ Open Source Public
  • 14. 14  We recognize that there is a wide range of platforms, and T-Mobile can't address them all. This is why we open sourced Casquatch -- we hope the community will be able to expand how Casquatch is used. As with any tool, consult with your IT department before using in production.  All code samples included are for demonstration purposes only.  Licensed under Apache 2.0  https://www.apache.org/licenses/LICENSE-2.0 Open Source Public
  • 15. 15  03/05/2018 – 1.0 Internal Release  04/05/2018 – 1.1 Release  06/22/2018 – 1.2 Release Open Sourced!  09/17/2018 – 1.3 Release  05/01/2019 – 1.4 Release Project History Public
  • 17. 1717  We started with Spring Data  All the testing went great… Until production  We didn’t know what we didn’t know…  Tried to fix Spring  Decided to build and integrate How did I get here? Public
  • 18. 1818  Spring Data  No High Availability  No Retry  Non Industry Best Practices  Casquatch  Highly Available  Automatic Retry  Follows Industry Best Practices  Savings  Significant reduction in support and design cost  Highly Reliable Architecture How does it compare? Public
  • 19. 1919  Spring Data - Developer Effort  ~150 Lines For Basic Configuration  ~100 Lines Per Table  ~10 Tables Per App  Casquatch - Developer Effort  ~10 lines of code  Savings  1100+ lines of code and days of developer time for each application How muchdo I have to write? Public
  • 20. 2020  Command Line Interface  Driven by Table Metadata  Annotated Objects  Customizable Code Generator Public
  • 21. 2121  Hosted by Sonatype  Available in Maven Central  Include in pom.xml Maven Public
  • 22. 2222  Optional Spring Boot Integration  Add Import to Application.java  Dependency Injection Spring Boot Integration Public
  • 23. 2323  Skip Spring Boot  Builder Pattern  CassandraDriver.builder().withUsern ame() … .build()  All properties are available If You BuildIt… Public
  • 25. 25Public  Standard application.properties  The Basics  Credentials, Contact Points, Keyspace, etc  The Advanced  Connection Limits, LoadBalancing, Timeout, SSL, etc  Many More in README.md Spring Boot Configuration: Code For Demonstration Purposes Only
  • 26. 26Public  Skip Spring Boot and Do It Yourself  The Basics  Credentials, Contact Points, Keyspace, etc  The Advanced  Connection Limits, LoadBalancing, Timeout, SSL, etc  Many More in API Docs Builder Pattern: Code For Demonstration Purposes Only
  • 27. 27Public  Create a Cassandra Table  Columns use _ for spaces  Supports all data types  Supports UDT Create Schema: Code For Demonstration Purposes Only
  • 28. 28Public  Run the code generator  Read in settings on command line or from properties file  Configurable options  More in README.md Create Some Code: Code For Demonstration Purposes Only
  • 29. 29Public  Custom Package  Only Required Imports Get Some Code: tableName.java Code For Demonstration Purposes Only
  • 30. 30Public  Comments  Full CQL  Annotated Get Some Code: tableName.java Code For Demonstration Purposes Only
  • 31. 31Public  JavaDoc  Constructors  Getters and Setters Get Some Code: tableName.java Code For Demonstration Purposes Only
  • 32. 32Public  Package option creates pom.xml  Snippet shorted for slide  Complete Artifact Get Some Code: pom.xml Code For Demonstration Purposes Only
  • 33. 33Public  T getById(Class<T> c, T o) : Get by passing an object instance with the key populated.  void save(Class<T> c, T o) : Save by passing an object instance.  void delete(Class<T> c, T o): Delete by passing an object instance with the key populated Use The Code: Code For Demonstration Purposes Only
  • 34. 34 Sneak Peak! The Following FunctionalityIs Not Final Public
  • 35. 35Public  Run the code generator with a – dao  Generate the Data Access Object  REST APIs  Deployable Microservice  Unit Tested with Mockito Generate a DAO Code For Demonstration Purposes Only
  • 36. 36Public  Swagger UI Integration  Basic Casquatch APIs exposed  Wrapped in Request/Response payload objects  Simple JSON interface  Clean error messaging and status codes DAO - Swagger Code For Demonstration Purposes Only
  • 37. 3737 Public DAO - Exists Code For Demonstration Purposes Only
  • 38. 3838 Public DAO - Save Code For Demonstration Purposes Only
  • 39. 3939 Public DAO - Get Code For Demonstration Purposes Only
  • 40. 40Public  Utilizes generic AbstractCassandraDAO  Easily extensible  Adjust URL through annotation DAO - Implementation Code For Demonstration Purposes Only
  • 41. 41Public  Thin wrapper  Consistent Request/Response objects  Functionality Mirrors Casquatch API DAO - Implementation Code For Demonstration Purposes Only

Editor's Notes

  1. 03/05/2018 – 1.0 Internal Release 04/05/2018 – 1.1 Release Highlights: ASync calls and Solr support added 06/22/2018 – 1.2 Release Open Sourced! Highlights: Added Spring Config, open source optimizations 09/17/2018 – 1.3 Release Highlights: Added SSL, Updated Driver, Optional DSE Licensed Driver, Solr Search By Object (Req 6.0+) 05/01/2018 – 1.4 Release Highlights: Generate CLI, Enhanced Filter policies
  2. curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"payload": {"keyOne": 1,"keyTwo": 1}}' 'http://localhost:8080/daodemo/v1/myapp/table_name/exists' -v POST /daodemo/v1/myapp/table_name/exists HTTP/1.1 Host: localhost:8080 User-Agent: curl/7.54.0 Content-Type: application/json Accept: application/json Content-Length: 38 { "payload": { "keyOne": 1, "keyTwo": 1 } } HTTP/1.1 200 Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Tue, 04 Jun 2019 16:19:41 GMT { "status":"SUCCCES", "payloadClass":"class java.lang.Boolean", "payload":[false], "timestamp":1559665181509 }
  3. curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"payload": {"keyOne": 1,"keyTwo": 1,"colOne":"column one", "colTwo":"column two"}}' 'http://localhost:8080/daodemo/v1/myapp/table_name/save' -v POST /daodemo/v1/myapp/table_name/save HTTP/1.1 Host: localhost:8080 User-Agent: curl/7.54.0 Content-Type: application/json Accept: application/json Content-Length: 83 { "payload": { "keyOne": 1, "keyTwo": 1, "colOne":"column two", "colTwo":"column 2" } } HTTP/1.1 200 Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Tue, 04 Jun 2019 16:22:30 GMT { "status":"SUCCCES", "payloadClass":null, "payload":null, "timestamp":1559665350588 }
  4. POST /daodemo/v1/myapp/table_name/get HTTP/1.1 Host: localhost:8080 User-Agent: curl/7.54.0 Content-Type: application/json Accept: application/json Content-Length: 38 { "payload": { "keyOne": 1, "keyTwo": 1 } } HTTP/1.1 200 Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Tue, 04 Jun 2019 16:26:09 GMT { "status":"SUCCCES", "payloadClass":"class com.demo.myapp.TableName", "payload":[ { "colOne":"column one", "colTwo":"column 2", "keyOne":1, "keyTwo":1 } ], "timestamp":1559665569202 }