SlideShare a Scribd company logo
1 of 22
Using Redis for Kiosk Registration
Command and Control
Ted Knudsen - CTO Smartwaiver
Smartwaiver - Online Digital Waivers
• Founded in April 2012
• Over 20+ million digital waivers created
• Corporate Headquarters in Bend OR (in Old Mill District)
• Customers all over the world but majority are US based.
• Saturday is always the busiest day of the week for waivers.
Background
• Started at Autodesk in 1993 with SAP Enterprise software
• Tealeaf Technology (online user experience) from 2000-2010
• Message Bus (email service) - Cofounder 2010 - 2015
• Smartwaiver (digital waivers) - Dec 2015
• Hobbies: Trail running and climbing
• Favorite Brewery - Crux
My Redis History
• My first NoSQL experience started in Dec 2010 with Redis 2.0
• I have used every major release of Redis over the past 7 years in a
production environment
• With Message Bus, Redis was a critical component in the infrastructure
used to send billions of emails
• Current Production version: 3.2.6 with Redis Enterprise self hosted at
AWS
Smartwaiver Stack
Cloud – AWS
DB – MySQL on RDS
Caching – Redis Enterprise
Queues – Simple Queue Service (SQS)
Storage – S3
Deployment – Ansible
Languages – PHP (5.6) and Python (Ansible)
Waivers at Kiosks
Smartwaiver provides to customers an
app (iOS or Android) to create a kiosk
for signing waivers.
In most cases, the kiosk is an Apple
iPad locked in a case and the users
are directed to sign the waiver before
participating in an event.
We currently have over 4000 active
kiosks creating waivers.
Kiosk 2.0 – Command and Control
Goals for Kiosk 2.0
• Auto registration
• Ability to prepopulate a waiver with a participant’s information from a
remote source
We’ll take a look at how we solved these problems with Redis.
Kiosk 2.0 – Hack Day
I knew I wanted to have Redis at the heart of the communications between
the kiosks and the control center. But I wasn’t sure exactly how to do it
and decided to dedicate a day to explore the possibilities. It was a
productive Hack Day!
Kiosk 2.0 – Kiosk Registration
The registration process was loosely modeled after the process some
SmartTV’s use to link a service to the device.
• The kiosk makes the registration call to the API (/kiosks/xyz-123/register)
• This creates a key which is the registration code and the unique ID of the
device
• Entering the registration code in the kiosk manager on the website then
links the device to the account in the database.
Kiosk Registration
This is the high level view of how the
kiosk registration works.
Kiosk 1
Kiosk Manager
Enters: 453212
/kiosks/xyz-1234/register
KEY: 453212
VALUE: xyz-1234
Expires: 300
Kiosk Registration
After starting the application on the
iPad the user is prompted with the
following screen. They then press on
the “I Have a Smartwaiver Account”
button to create a registration code.
Kiosk Registration
The registration code is presented to
the user which is used in the kiosk
manager screen to link the kiosk to the
account.
In Redis – the registration code is the
key and has a 5 minute expiration
This simple solution requires no
backend “cleanup” for missed
registrations.
And another added benefit is the kiosk
never requires any data input.
Kiosk Registration
In the kiosk manager, the user enters
the registration code.
In the backend, the API checks for the
key with the registration code in Redis
and if found it then links the device to
the account in the database with the
device ID.
Kiosk 2.0 – Kiosk “Commands” in Redis
The second goal was to create a way to send commands to a kiosk to control
its behavior.
• Each kiosk checks on a timer for a “command”.
• A “command” is just a hash key with an expiration of 5 minutes. The key
is the device ID of the kiosk.
• The hash contains the action and JSON data payload.
Kiosk 2.0 – Pre-Populating a Waiver
The first command we have implemented is to pre-populate a waiver with
participant information.
Pre-populating a waiver with a participant’s information speeds up the
process of completing a waiver. Making the process as easy as possible is a
goal for Smartwaiver.
Kiosk Control
This is the high level view of how the
kiosks communicate back to Redis for
a command.
Load Balancer – ELB
API Server – EC2 Instance
Redis
Enterprise
Kiosk 1
Action: autofill
Payload: JSON
Kiosk 2 Kiosk 3
Kiosks check for a
command
Load Balancer
API Server
Kiosk Control
To make it easy to send participant
information to a kiosk we created a
Chrome Extension that can be used to
enter the information from just about
any source (online CRM, registration
form, etc) with some simple
copy/paste operations.
Kiosk Control
The extension shows which kiosk is
available for receiving a command.
Kiosk availability is determined via
data from Redis. Each kiosk updates
its status (when online) via the API on
a regular basis.
Kiosk Control
After confirming the data the
information is stored in Redis as a
command with the data from the
participant.
The kiosk from Step 3 will read the
command and start the waiver process
for that participant.
Demo with a Kiosk
Smartwaiver and Redis
Of the 4000 active Kiosks, over 2000 have now
updated to the new version 2.0
We will be releasing the Chrome extension in
June and we will see what the adoption rate is
over the summer (which is the busiest time of
the year for us).
I always use Redis in my development tool kit
and while there are always many ways to solve
a problem I have found that using Redis is
usually the cleanest and easiest.
Thanks!
Contact us:
Smartwaiver
626 NW Arizona Ave Ste #2
Bend, OR 97702
ted@smartwaiver.com
www.smartwaiver.com

More Related Content

What's hot

SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
Redis Labs
 
Redis Tames The Caching Herd: Jon Hyman
Redis Tames The Caching Herd: Jon HymanRedis Tames The Caching Herd: Jon Hyman
Redis Tames The Caching Herd: Jon Hyman
Redis Labs
 
Creating an Elastic Platform Using Kafka and Microservices in OpenShift
Creating an Elastic Platform Using Kafka and Microservices in OpenShift Creating an Elastic Platform Using Kafka and Microservices in OpenShift
Creating an Elastic Platform Using Kafka and Microservices in OpenShift
confluent
 
RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...
RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...
RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...
Redis Labs
 

What's hot (20)

RedisConf17 - Amadeus - Redis-Cluster operator
RedisConf17 - Amadeus - Redis-Cluster operatorRedisConf17 - Amadeus - Redis-Cluster operator
RedisConf17 - Amadeus - Redis-Cluster operator
 
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
SQL, Redis and Kubernetes by Paul Stanton of Windocks - Redis Day Seattle 2020
 
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
Leveraging Redis for System Monitoring by Adam McCormick of SBG - Redis Day S...
 
Bank of China Tech Talk 2: Introduction to Streaming Data and Stream Processi...
Bank of China Tech Talk 2: Introduction to Streaming Data and Stream Processi...Bank of China Tech Talk 2: Introduction to Streaming Data and Stream Processi...
Bank of China Tech Talk 2: Introduction to Streaming Data and Stream Processi...
 
RedisConf17 - Redis Powers Next-gen Ambient Intelligence Platform
RedisConf17 - Redis Powers Next-gen Ambient Intelligence PlatformRedisConf17 - Redis Powers Next-gen Ambient Intelligence Platform
RedisConf17 - Redis Powers Next-gen Ambient Intelligence Platform
 
Redis Tames The Caching Herd: Jon Hyman
Redis Tames The Caching Herd: Jon HymanRedis Tames The Caching Herd: Jon Hyman
Redis Tames The Caching Herd: Jon Hyman
 
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
Event-driven Applications with Kafka, Micronaut, and AWS Lambda | Dave Klein,...
 
Building Microservices with Apache Kafka by Colin McCabe
Building Microservices with Apache Kafka by Colin McCabeBuilding Microservices with Apache Kafka by Colin McCabe
Building Microservices with Apache Kafka by Colin McCabe
 
Supercharge Your Real-time Event Processing with Neo4j's Streams Kafka Connec...
Supercharge Your Real-time Event Processing with Neo4j's Streams Kafka Connec...Supercharge Your Real-time Event Processing with Neo4j's Streams Kafka Connec...
Supercharge Your Real-time Event Processing with Neo4j's Streams Kafka Connec...
 
Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...
Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...
Kubernetes connectivity to Cloud Native Kafka | Evan Shortiss and Hugo Guerre...
 
Low-latency real-time data processing at giga-scale with Kafka | John DesJard...
Low-latency real-time data processing at giga-scale with Kafka | John DesJard...Low-latency real-time data processing at giga-scale with Kafka | John DesJard...
Low-latency real-time data processing at giga-scale with Kafka | John DesJard...
 
Redis Streams for Event-Driven Microservices
Redis Streams for Event-Driven MicroservicesRedis Streams for Event-Driven Microservices
Redis Streams for Event-Driven Microservices
 
Data in Motion: Building Stream-Based Architectures with Qlik Replicate & Kaf...
Data in Motion: Building Stream-Based Architectures with Qlik Replicate & Kaf...Data in Motion: Building Stream-Based Architectures with Qlik Replicate & Kaf...
Data in Motion: Building Stream-Based Architectures with Qlik Replicate & Kaf...
 
Building Scalable Real-Time Data Pipelines with the Couchbase Kafka Connector...
Building Scalable Real-Time Data Pipelines with the Couchbase Kafka Connector...Building Scalable Real-Time Data Pipelines with the Couchbase Kafka Connector...
Building Scalable Real-Time Data Pipelines with the Couchbase Kafka Connector...
 
5 lessons learned for successful migration to Confluent cloud | Natan Silinit...
5 lessons learned for successful migration to Confluent cloud | Natan Silinit...5 lessons learned for successful migration to Confluent cloud | Natan Silinit...
5 lessons learned for successful migration to Confluent cloud | Natan Silinit...
 
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
Making your Life Easier with MongoDB and Kafka (Robert Walters, MongoDB) Kafk...
 
Creating an Elastic Platform Using Kafka and Microservices in OpenShift
Creating an Elastic Platform Using Kafka and Microservices in OpenShift Creating an Elastic Platform Using Kafka and Microservices in OpenShift
Creating an Elastic Platform Using Kafka and Microservices in OpenShift
 
Stream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NETStream Processing with Apache Kafka and .NET
Stream Processing with Apache Kafka and .NET
 
Navigating the obdervability storm with Kafka | Jose Manuel Cristobal, Adidas
Navigating the obdervability storm with Kafka | Jose Manuel Cristobal, AdidasNavigating the obdervability storm with Kafka | Jose Manuel Cristobal, Adidas
Navigating the obdervability storm with Kafka | Jose Manuel Cristobal, Adidas
 
RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...
RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...
RedisConf17 - Building Large High Performance Redis Databases with Redis Ente...
 

Similar to RedisConf17 - Smartwaiver - Using Redis for Kiosk Registration Command and Control

App-First & Cloud-Native: How InterMiles Boosted CX with AWS & Infostretch
App-First & Cloud-Native: How InterMiles Boosted CX with AWS & InfostretchApp-First & Cloud-Native: How InterMiles Boosted CX with AWS & Infostretch
App-First & Cloud-Native: How InterMiles Boosted CX with AWS & Infostretch
Infostretch
 

Similar to RedisConf17 - Smartwaiver - Using Redis for Kiosk Registration Command and Control (20)

Design - Start Your API Journey Today
Design - Start Your API Journey TodayDesign - Start Your API Journey Today
Design - Start Your API Journey Today
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
 
Coinbase Node
Coinbase NodeCoinbase Node
Coinbase Node
 
Get Ready for Coinbase Node
Get Ready for Coinbase NodeGet Ready for Coinbase Node
Get Ready for Coinbase Node
 
DACHNUG50 HCL Volt MX Go.pdf
DACHNUG50 HCL Volt MX Go.pdfDACHNUG50 HCL Volt MX Go.pdf
DACHNUG50 HCL Volt MX Go.pdf
 
Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch Application to the Next Level...
Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch Application to the Next Level...Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch Application to the Next Level...
Ch-Ch-Ch-Ch-Changes: Taking Your MongoDB Stitch Application to the Next Level...
 
vinay-mittal-new
vinay-mittal-newvinay-mittal-new
vinay-mittal-new
 
Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...
Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...
Transforming Consumer Banking with a 100% Cloud-Based Bank (FSV204) - AWS re:...
 
z Technical Summit Track 3 Session 4 Developing mobilefirst app for z
z Technical Summit Track 3 Session 4 Developing mobilefirst app for zz Technical Summit Track 3 Session 4 Developing mobilefirst app for z
z Technical Summit Track 3 Session 4 Developing mobilefirst app for z
 
AWS Summit Singapore Webinar Edition | More Containers, Less Operations & Mig...
AWS Summit Singapore Webinar Edition | More Containers, Less Operations & Mig...AWS Summit Singapore Webinar Edition | More Containers, Less Operations & Mig...
AWS Summit Singapore Webinar Edition | More Containers, Less Operations & Mig...
 
Modern EPOS System for Retail business
Modern EPOS System for Retail businessModern EPOS System for Retail business
Modern EPOS System for Retail business
 
How HSBC Uses Serverless to Process Millions of Transactions in Real Time (FS...
How HSBC Uses Serverless to Process Millions of Transactions in Real Time (FS...How HSBC Uses Serverless to Process Millions of Transactions in Real Time (FS...
How HSBC Uses Serverless to Process Millions of Transactions in Real Time (FS...
 
Docker12 factor
Docker12 factorDocker12 factor
Docker12 factor
 
Design - Start Your API Journey Today
Design - Start Your API Journey TodayDesign - Start Your API Journey Today
Design - Start Your API Journey Today
 
J-Spring 2018 - A journey from Java EE to Cloud Native microservices
J-Spring 2018 - A journey from Java EE to Cloud Native microservicesJ-Spring 2018 - A journey from Java EE to Cloud Native microservices
J-Spring 2018 - A journey from Java EE to Cloud Native microservices
 
Design - Start Your API Journey Today
Design - Start Your API Journey TodayDesign - Start Your API Journey Today
Design - Start Your API Journey Today
 
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
 
App-First & Cloud-Native: How InterMiles Boosted CX with AWS & Infostretch
App-First & Cloud-Native: How InterMiles Boosted CX with AWS & InfostretchApp-First & Cloud-Native: How InterMiles Boosted CX with AWS & Infostretch
App-First & Cloud-Native: How InterMiles Boosted CX with AWS & Infostretch
 
Bina systems Cloud Applications
Bina systems Cloud ApplicationsBina systems Cloud Applications
Bina systems Cloud Applications
 
Delivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing ChoreoDelivering New Digital Experiences Fast - Introducing Choreo
Delivering New Digital Experiences Fast - Introducing Choreo
 

More from Redis Labs

Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Redis Labs
 
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
Redis Labs
 
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
Redis Labs
 

More from Redis Labs (20)

Redis Day Bangalore 2020 - Session state caching with redis
Redis Day Bangalore 2020 - Session state caching with redisRedis Day Bangalore 2020 - Session state caching with redis
Redis Day Bangalore 2020 - Session state caching with redis
 
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
Protecting Your API with Redis by Jane Paek - Redis Day Seattle 2020
 
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
The Happy Marriage of Redis and Protobuf by Scott Haines of Twilio - Redis Da...
 
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
Rust and Redis - Solving Problems for Kubernetes by Ravi Jagannathan of VMwar...
 
Redis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
Redis for Data Science and Engineering by Dmitry Polyakovsky of OracleRedis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
Redis for Data Science and Engineering by Dmitry Polyakovsky of Oracle
 
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
Practical Use Cases for ACLs in Redis 6 by Jamie Scott - Redis Day Seattle 2020
 
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
Moving Beyond Cache by Yiftach Shoolman Redis Labs - Redis Day Seattle 2020
 
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
JSON in Redis - When to use RedisJSON by Jay Won of Coupang - Redis Day Seatt...
 
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
Highly Available Persistent Session Management Service by Mohamed Elmergawi o...
 
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
Anatomy of a Redis Command by Madelyn Olson of Amazon Web Services - Redis Da...
 
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
Building a Multi-dimensional Analytics Engine with RedisGraph by Matthew Goos...
 
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
RediSearch 1.6 by Pieter Cailliau - Redis Day Bangalore 2020
 
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
RedisGraph 2.0 by Pieter Cailliau - Redis Day Bangalore 2020
 
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
RedisTimeSeries 1.2 by Pieter Cailliau - Redis Day Bangalore 2020
 
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
RedisAI 0.9 by Sherin Thomas of Tensorwerk - Redis Day Bangalore 2020
 
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
Rate-Limiting 30 Million requests by Vijay Lakshminarayanan and Girish Koundi...
 
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
Three Pillars of Observability by Rajalakshmi Raji Srinivasan of Site24x7 Zoh...
 
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
Solving Complex Scaling Problems by Prashant Kumar and Abhishek Jain of Myntr...
 
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
Redis as a High Scale Swiss Army Knife by Rahul Dagar and Abhishek Gupta of G...
 
Deploying Redis as a Sidecar in Kubernetes by Janakiram MSV - Redis Day Banga...
Deploying Redis as a Sidecar in Kubernetes by Janakiram MSV - Redis Day Banga...Deploying Redis as a Sidecar in Kubernetes by Janakiram MSV - Redis Day Banga...
Deploying Redis as a Sidecar in Kubernetes by Janakiram MSV - Redis Day Banga...
 

Recently uploaded

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
Enterprise Knowledge
 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

RedisConf17 - Smartwaiver - Using Redis for Kiosk Registration Command and Control

  • 1. Using Redis for Kiosk Registration Command and Control Ted Knudsen - CTO Smartwaiver
  • 2. Smartwaiver - Online Digital Waivers • Founded in April 2012 • Over 20+ million digital waivers created • Corporate Headquarters in Bend OR (in Old Mill District) • Customers all over the world but majority are US based. • Saturday is always the busiest day of the week for waivers.
  • 3. Background • Started at Autodesk in 1993 with SAP Enterprise software • Tealeaf Technology (online user experience) from 2000-2010 • Message Bus (email service) - Cofounder 2010 - 2015 • Smartwaiver (digital waivers) - Dec 2015 • Hobbies: Trail running and climbing • Favorite Brewery - Crux
  • 4. My Redis History • My first NoSQL experience started in Dec 2010 with Redis 2.0 • I have used every major release of Redis over the past 7 years in a production environment • With Message Bus, Redis was a critical component in the infrastructure used to send billions of emails • Current Production version: 3.2.6 with Redis Enterprise self hosted at AWS
  • 5. Smartwaiver Stack Cloud – AWS DB – MySQL on RDS Caching – Redis Enterprise Queues – Simple Queue Service (SQS) Storage – S3 Deployment – Ansible Languages – PHP (5.6) and Python (Ansible)
  • 6. Waivers at Kiosks Smartwaiver provides to customers an app (iOS or Android) to create a kiosk for signing waivers. In most cases, the kiosk is an Apple iPad locked in a case and the users are directed to sign the waiver before participating in an event. We currently have over 4000 active kiosks creating waivers.
  • 7. Kiosk 2.0 – Command and Control Goals for Kiosk 2.0 • Auto registration • Ability to prepopulate a waiver with a participant’s information from a remote source We’ll take a look at how we solved these problems with Redis.
  • 8. Kiosk 2.0 – Hack Day I knew I wanted to have Redis at the heart of the communications between the kiosks and the control center. But I wasn’t sure exactly how to do it and decided to dedicate a day to explore the possibilities. It was a productive Hack Day!
  • 9. Kiosk 2.0 – Kiosk Registration The registration process was loosely modeled after the process some SmartTV’s use to link a service to the device. • The kiosk makes the registration call to the API (/kiosks/xyz-123/register) • This creates a key which is the registration code and the unique ID of the device • Entering the registration code in the kiosk manager on the website then links the device to the account in the database.
  • 10. Kiosk Registration This is the high level view of how the kiosk registration works. Kiosk 1 Kiosk Manager Enters: 453212 /kiosks/xyz-1234/register KEY: 453212 VALUE: xyz-1234 Expires: 300
  • 11. Kiosk Registration After starting the application on the iPad the user is prompted with the following screen. They then press on the “I Have a Smartwaiver Account” button to create a registration code.
  • 12. Kiosk Registration The registration code is presented to the user which is used in the kiosk manager screen to link the kiosk to the account. In Redis – the registration code is the key and has a 5 minute expiration This simple solution requires no backend “cleanup” for missed registrations. And another added benefit is the kiosk never requires any data input.
  • 13. Kiosk Registration In the kiosk manager, the user enters the registration code. In the backend, the API checks for the key with the registration code in Redis and if found it then links the device to the account in the database with the device ID.
  • 14. Kiosk 2.0 – Kiosk “Commands” in Redis The second goal was to create a way to send commands to a kiosk to control its behavior. • Each kiosk checks on a timer for a “command”. • A “command” is just a hash key with an expiration of 5 minutes. The key is the device ID of the kiosk. • The hash contains the action and JSON data payload.
  • 15. Kiosk 2.0 – Pre-Populating a Waiver The first command we have implemented is to pre-populate a waiver with participant information. Pre-populating a waiver with a participant’s information speeds up the process of completing a waiver. Making the process as easy as possible is a goal for Smartwaiver.
  • 16. Kiosk Control This is the high level view of how the kiosks communicate back to Redis for a command. Load Balancer – ELB API Server – EC2 Instance Redis Enterprise Kiosk 1 Action: autofill Payload: JSON Kiosk 2 Kiosk 3 Kiosks check for a command Load Balancer API Server
  • 17. Kiosk Control To make it easy to send participant information to a kiosk we created a Chrome Extension that can be used to enter the information from just about any source (online CRM, registration form, etc) with some simple copy/paste operations.
  • 18. Kiosk Control The extension shows which kiosk is available for receiving a command. Kiosk availability is determined via data from Redis. Each kiosk updates its status (when online) via the API on a regular basis.
  • 19. Kiosk Control After confirming the data the information is stored in Redis as a command with the data from the participant. The kiosk from Step 3 will read the command and start the waiver process for that participant.
  • 20. Demo with a Kiosk
  • 21. Smartwaiver and Redis Of the 4000 active Kiosks, over 2000 have now updated to the new version 2.0 We will be releasing the Chrome extension in June and we will see what the adoption rate is over the summer (which is the busiest time of the year for us). I always use Redis in my development tool kit and while there are always many ways to solve a problem I have found that using Redis is usually the cleanest and easiest.
  • 22. Thanks! Contact us: Smartwaiver 626 NW Arizona Ave Ste #2 Bend, OR 97702 ted@smartwaiver.com www.smartwaiver.com