SlideShare uma empresa Scribd logo
1 de 42
Making Non-Distributed Databases, Distributed
- Ioannis Papapanagiotou, PhD
- Gim Mahasintunan
- Viren Baraiya
Dynomite/Redis Ecosystem
● Dynomite - Proxy Layer
● Dyno - Redis based Client
● Dynomite-manager - Ecosystem Orchestrator
● Dynomite-Explorer - Redis based UI
● Dyno-queues - Redis based keys
● Conductor - Workflow engine
● NDBench - Netflix Data Benchmark (for Redis)
● Needed a data store:
o Scalable & highly available
o High throughput, low latency
o Netflix use case is active-active
● Master-slave storage engines:
o Do not support bi-directional replication
o Cannot withstand a Monkey attack
o Cannot easily perform maintenance
Problems & Observations
What is Dynomite?
● A framework that makes non-distributed data
stores, distributed.
Features: highly available, automatic failover, node
warmup, tunable consistency, backups/restores
Dynomite @ Netflix
● Running around 2.5 years in PROD
● 70 clusters (100% Y/Y)
● ~1000 nodes used by internal microservices
● Microservices based on Java, Python,
NodeJS
Pluggable Storage Engines
● Layer on top of a non-distributed key value data store
○ Peer-peer, Shared Nothing
○ Auto Sharding
○ Multi-datacenter
○ Linear scale
○ Replication(Encrypted)
○ Gossiping
Replication
● A client can connect to any node on
the Dynomite cluster when sending
requests.
o If node owns the data,
▪ data are written in local
data-store and
asynchronously replicated.
o If node does not own the data
▪ node acts as a coordinator
and sends the data in the
same rack & replicates to
other nodes in other racks
and DC.
● Each rack contains one
copy of data, partitioned
across multiple nodes in
that rack
● Multiple Racks == Higher
Availability (HA)
Topology
Dynomite on the Cloud
Discovery Service
Insights (Metrics)
Continuous Delivery
Healthcheck
Backups & Restores
Dynomite Manager
RESP = Redis Serialization Protocol
REST/HTTP
Dyno Client - Java API
● Connection Pooling
● Load Balancing
● Effective failover
● Pipelining
● Scatter/Gather
● Metrics, e.g. Netflix Insights
Dyno Load Balancing
● Dyno client employs token
aware load balancing.
● Dyno client is aware of the
cluster topology of Dynomite
within the region,
can write to specific node
using consistent
hashing.
Moving across Storage Engines
Netflix Data Benchmark
● Benchmarking Dynomite with
Redis on the Cloud
Netflix Data Benchmark for Redis
● Dynamically change the benchmark configurations,
○ perform tests along with our production microservices.
● Be able to integrate with platform cloud services
○ dynamic configurations, discovery, metrics, etc.
● Run for an infinite duration in order to introduce failure scenarios
● Provide pluggable patterns and loads.
● Support different client APIs.
● Deploy, manage and monitor multiple instances from a single entry point.
How everything comes together?
Netflix Data Explorer - Dynomite
● Exploring Netflix Data Sources
● Providing a UI for Dynomite
and Redis
Netflix Data Explorer - Use Cases
Netflix needed a client to satisfy the following requirements:
● Support Redis API
● Avoid blocking calls (e.g. Redis KEYS *)
● UI needs to scale to millions of keys
● Customizable UI
● Ability to share UI components amongst Netflix projects
● Provide extensive logging for audit trail purposes
Architecture
Cluster Listing
● Multi-tenant system
● Each application
has a dedicated
Dynomite cluster
● Access controls
restrict cluster
visibility
Scanning for Keys
JSON and XML
Creating Complex Types
TTL Support
Audit Trail and Logging
eu-west
c
b
a
us-east
c
b
a
us-west
b
a
Elasticsearch
Conductor
● Orchestration Engine
● Redis for Storage and Queues
● Open Source (Apache 2.0)
Orchestration - Use Cases
● Content Ingest & Delivery
● Title Setup
● Studio Deliveries
● Content Quality Checks
● Content Localization
Once Upon A Time...
● Peer to Peer Messaging
● 10’s MM messages per day
● Process flows embedded in applications
● Lack of control (STOP deployment!)
● Lack of visibility into progress
Peer to Peer
Application C Application BApplication BApplication A
Request Content Content Inspection Result Encode Publish
Events / API calls Events / API calls Events / API calls
Peer to Peer
Application C Application BApplication BApplication A
Request Content Content Inspection Result Encode Publish
Events / API calls Events / API calls Events / API calls
● Logical flow is not easily trackable
● Modifying steps is not easy (tightly coupled)
● Controlling flow is not possible
Conductor
● BYO Task (Reuse existing code)
● REST/HTTP support
● Extensible and Hackable
● JSON based DSL to define blueprint
● Scale Out Horizontally
● Visibility, Traceability & Control
Same Flow - New Flavor
Request
Content
Content
Inspection
Result Encode PublishStart
Stop
Conductor
Application A
Task
Request
Content
Application B
Task
Content
Inspection
Application C
Task
Encode
Application B
Task
Publish
OrchestrationExecution
Developer Workflow
High Level Architecture
API
Workflows Metadata Tasks
SERVICE
Workflow Service Task Service
Decider Service Queue Service
STORE
Storage (Redis /Dynomite)
Start and manage
workflows
Define blueprints
and tasks
Gets tasks from
queue and execute
Index (Elasticsearch)
Conductor - Scale
● Peer-to-Peer - Scale horizontally
● Stateless server - state is persisted in Redis
● Storage scalability : Dynomite
● Workload scale: Dyno-Queues
Storage Layer
● Dynomite
○ Generic Dynamo implementation (Redis, Memcache)
○ Multi-datacenter
○ Highly available
○ Peer-to-Peer
● Elasticsearch
○ Indexing workflow and task executions
Dyno-Queues
● Distributed lock free queues used by Conductor
● OSS
○ Apache 2.0 License
○ https://github.com/Netflix/dyno-queues
● Delayed Queues
● Loose priorities and FIFO
Dyno-Queues
Conductor @ Netflix
● In production > 1.5 year
● Used by Content Platform Engineering
○ Content Ingest & Encoding
○ Content Processing
● ~150 Process Flows & ~300 Tasks / Services
● 1+ MM Executions / Month
More information
● Dynomite Ecosystem:
o https://github.com/Netflix/dynomite
o https://github.com/Netflix/dyno
o https://github.com/Netflix/dyno-queues
o https://github.com/Netflix/dynomite-manager
● NDBench:
o https://github.com/Netflix/ndbench
● Conductor:
o https://github.com/Netflix/Conductor
● Chat:
o https://gitter.im/Netflix/dynomite
o https://gitter.im/Netflix/conductor
Dynomite @ RedisConf 2017

Mais conteúdo relacionado

Mais procurados

Load Balancing for Containers and Cloud Native Architecture
Load Balancing for Containers and Cloud Native ArchitectureLoad Balancing for Containers and Cloud Native Architecture
Load Balancing for Containers and Cloud Native ArchitectureChiradeep Vittal
 
Learnings from the Field. Lessons from Working with Dozens of Small & Large D...
Learnings from the Field. Lessons from Working with Dozens of Small & Large D...Learnings from the Field. Lessons from Working with Dozens of Small & Large D...
Learnings from the Field. Lessons from Working with Dozens of Small & Large D...HostedbyConfluent
 
Concurrency, Parallelism And IO
Concurrency,  Parallelism And IOConcurrency,  Parallelism And IO
Concurrency, Parallelism And IOPiyush Katariya
 
Architectural caching patterns for kubernetes
Architectural caching patterns for kubernetesArchitectural caching patterns for kubernetes
Architectural caching patterns for kubernetesRafał Leszko
 
Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2aspyker
 
Kubernetes Networking - Sreenivas Makam - Google - CC18
Kubernetes Networking - Sreenivas Makam - Google - CC18Kubernetes Networking - Sreenivas Makam - Google - CC18
Kubernetes Networking - Sreenivas Makam - Google - CC18CodeOps Technologies LLP
 
5 Levels of High Availability: From Multi-instance to Hybrid Cloud
5 Levels of High Availability: From Multi-instance to Hybrid Cloud5 Levels of High Availability: From Multi-instance to Hybrid Cloud
5 Levels of High Availability: From Multi-instance to Hybrid CloudRafał Leszko
 
Introduction to container mangement
Introduction to container mangementIntroduction to container mangement
Introduction to container mangementMartin Marcher
 
Multi-Cloud Orchestration for Kubernetes with Cloudify
Multi-Cloud Orchestration for Kubernetes with CloudifyMulti-Cloud Orchestration for Kubernetes with Cloudify
Multi-Cloud Orchestration for Kubernetes with CloudifyCloudify Community
 
Database experiences designing cassandra schema for keystone
Database experiences designing cassandra schema for keystone Database experiences designing cassandra schema for keystone
Database experiences designing cassandra schema for keystone openstackindia
 
Netflix Open Source Meetup Season 3 Episode 2
Netflix Open Source Meetup Season 3 Episode 2Netflix Open Source Meetup Season 3 Episode 2
Netflix Open Source Meetup Season 3 Episode 2aspyker
 
Kafka on Kubernetes—From Evaluation to Production at Intuit
Kafka on Kubernetes—From Evaluation to Production at Intuit Kafka on Kubernetes—From Evaluation to Production at Intuit
Kafka on Kubernetes—From Evaluation to Production at Intuit confluent
 
Where is my cache architectural patterns for caching microservices by example
Where is my cache  architectural patterns for caching microservices by exampleWhere is my cache  architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by exampleRafał Leszko
 
OSDC 2018 | Scaling & High Availability MySQL learnings from the past decade+...
OSDC 2018 | Scaling & High Availability MySQL learnings from the past decade+...OSDC 2018 | Scaling & High Availability MySQL learnings from the past decade+...
OSDC 2018 | Scaling & High Availability MySQL learnings from the past decade+...NETWAYS
 
How Apache Kafka® Works
How Apache Kafka® WorksHow Apache Kafka® Works
How Apache Kafka® Worksconfluent
 
Build your operator with the right tool
Build your operator with the right toolBuild your operator with the right tool
Build your operator with the right toolRafał Leszko
 
Designing Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with KubernetesDesigning Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with KubernetesBilgin Ibryam
 
RedisConf18 - Designing a Redis Client for Humans
RedisConf18 - Designing a Redis Client for Humans RedisConf18 - Designing a Redis Client for Humans
RedisConf18 - Designing a Redis Client for Humans Redis Labs
 

Mais procurados (20)

Load Balancing for Containers and Cloud Native Architecture
Load Balancing for Containers and Cloud Native ArchitectureLoad Balancing for Containers and Cloud Native Architecture
Load Balancing for Containers and Cloud Native Architecture
 
Learnings from the Field. Lessons from Working with Dozens of Small & Large D...
Learnings from the Field. Lessons from Working with Dozens of Small & Large D...Learnings from the Field. Lessons from Working with Dozens of Small & Large D...
Learnings from the Field. Lessons from Working with Dozens of Small & Large D...
 
Samuel Bercovici - lbaaS for Havana
Samuel Bercovici - lbaaS for HavanaSamuel Bercovici - lbaaS for Havana
Samuel Bercovici - lbaaS for Havana
 
Concurrency, Parallelism And IO
Concurrency,  Parallelism And IOConcurrency,  Parallelism And IO
Concurrency, Parallelism And IO
 
Architectural caching patterns for kubernetes
Architectural caching patterns for kubernetesArchitectural caching patterns for kubernetes
Architectural caching patterns for kubernetes
 
Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2
 
Kubernetes Networking - Sreenivas Makam - Google - CC18
Kubernetes Networking - Sreenivas Makam - Google - CC18Kubernetes Networking - Sreenivas Makam - Google - CC18
Kubernetes Networking - Sreenivas Makam - Google - CC18
 
5 Levels of High Availability: From Multi-instance to Hybrid Cloud
5 Levels of High Availability: From Multi-instance to Hybrid Cloud5 Levels of High Availability: From Multi-instance to Hybrid Cloud
5 Levels of High Availability: From Multi-instance to Hybrid Cloud
 
Introduction to container mangement
Introduction to container mangementIntroduction to container mangement
Introduction to container mangement
 
Multi-Cloud Orchestration for Kubernetes with Cloudify
Multi-Cloud Orchestration for Kubernetes with CloudifyMulti-Cloud Orchestration for Kubernetes with Cloudify
Multi-Cloud Orchestration for Kubernetes with Cloudify
 
Tce automation-d4
Tce automation-d4Tce automation-d4
Tce automation-d4
 
Database experiences designing cassandra schema for keystone
Database experiences designing cassandra schema for keystone Database experiences designing cassandra schema for keystone
Database experiences designing cassandra schema for keystone
 
Netflix Open Source Meetup Season 3 Episode 2
Netflix Open Source Meetup Season 3 Episode 2Netflix Open Source Meetup Season 3 Episode 2
Netflix Open Source Meetup Season 3 Episode 2
 
Kafka on Kubernetes—From Evaluation to Production at Intuit
Kafka on Kubernetes—From Evaluation to Production at Intuit Kafka on Kubernetes—From Evaluation to Production at Intuit
Kafka on Kubernetes—From Evaluation to Production at Intuit
 
Where is my cache architectural patterns for caching microservices by example
Where is my cache  architectural patterns for caching microservices by exampleWhere is my cache  architectural patterns for caching microservices by example
Where is my cache architectural patterns for caching microservices by example
 
OSDC 2018 | Scaling & High Availability MySQL learnings from the past decade+...
OSDC 2018 | Scaling & High Availability MySQL learnings from the past decade+...OSDC 2018 | Scaling & High Availability MySQL learnings from the past decade+...
OSDC 2018 | Scaling & High Availability MySQL learnings from the past decade+...
 
How Apache Kafka® Works
How Apache Kafka® WorksHow Apache Kafka® Works
How Apache Kafka® Works
 
Build your operator with the right tool
Build your operator with the right toolBuild your operator with the right tool
Build your operator with the right tool
 
Designing Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with KubernetesDesigning Cloud Native Applications with Kubernetes
Designing Cloud Native Applications with Kubernetes
 
RedisConf18 - Designing a Redis Client for Humans
RedisConf18 - Designing a Redis Client for Humans RedisConf18 - Designing a Redis Client for Humans
RedisConf18 - Designing a Redis Client for Humans
 

Destaque

Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)Lucas Jellema
 
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedis Labs
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop AtlantaJeremy Davis
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for MicroservicesChris Richardson
 
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration MicroservicesWSO2
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterJulien Dubois
 

Destaque (7)

Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
 
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases DistributedRedisConf17 - Dynomite - Making Non-distributed Databases Distributed
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
 
Agile integration workshop Atlanta
Agile integration workshop   AtlantaAgile integration workshop   Atlanta
Agile integration workshop Atlanta
 
Netflix conductor
Netflix conductorNetflix conductor
Netflix conductor
 
A Pattern Language for Microservices
A Pattern Language for MicroservicesA Pattern Language for Microservices
A Pattern Language for Microservices
 
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
[WSO2Con EU 2017] Microservice Architecture (MSA) and Integration Microservices
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipster
 

Semelhante a Dynomite @ RedisConf 2017

NetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & ContainersNetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & Containersaspyker
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open SourceAll Things Open
 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesAlexander Penev
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsFedir RYKHTIK
 
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a MonthUSENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a MonthNicolas Brousse
 
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 MeetupPreparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 MeetupYashrajNayak4
 
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...Pavel Pratyush
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro servicesSpyros Lambrinidis
 
Introduction to PaaS and Heroku
Introduction to PaaS and HerokuIntroduction to PaaS and Heroku
Introduction to PaaS and HerokuTapio Rautonen
 
Fighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFabio Pellegrini
 
Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Deepu K Sasidharan
 
Introducing TiDB Operator [Cologne, Germany]
Introducing TiDB Operator [Cologne, Germany]Introducing TiDB Operator [Cologne, Germany]
Introducing TiDB Operator [Cologne, Germany]Kevin Xu
 
Challenges In Modern Application
Challenges In Modern ApplicationChallenges In Modern Application
Challenges In Modern ApplicationRahul Kumar Gupta
 
Cloud Native Application Integration With APIs
Cloud Native Application Integration With APIsCloud Native Application Integration With APIs
Cloud Native Application Integration With APIsNirmal Fernando
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservicesRon Barabash
 
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps WayDevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Waysmalltown
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014Hojoong Kim
 
#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPR#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPRCamille Salas
 

Semelhante a Dynomite @ RedisConf 2017 (20)

NetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & ContainersNetflixOSS Meetup S6E1 - Titus & Containers
NetflixOSS Meetup S6E1 - Titus & Containers
 
Dynomite - PerconaLive 2017
Dynomite  - PerconaLive 2017Dynomite  - PerconaLive 2017
Dynomite - PerconaLive 2017
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open Source
 
Zero Downtime JEE Architectures
Zero Downtime JEE ArchitecturesZero Downtime JEE Architectures
Zero Downtime JEE Architectures
 
DevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and ProjectsDevOps for TYPO3 Teams and Projects
DevOps for TYPO3 Teams and Projects
 
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a MonthUSENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
 
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 MeetupPreparing for Neo - Singapore OutSystems User Group October 2022 Meetup
Preparing for Neo - Singapore OutSystems User Group October 2022 Meetup
 
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
Migration of a high-traffic E-commerce website from Legacy Monolith to Micros...
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro services
 
Introduction to PaaS and Heroku
Introduction to PaaS and HerokuIntroduction to PaaS and Heroku
Introduction to PaaS and Heroku
 
Fighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless phpFighting legacy with hexagonal architecture and frameworkless php
Fighting legacy with hexagonal architecture and frameworkless php
 
Node.js scaling in highload
Node.js scaling in highloadNode.js scaling in highload
Node.js scaling in highload
 
Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017
 
Introducing TiDB Operator [Cologne, Germany]
Introducing TiDB Operator [Cologne, Germany]Introducing TiDB Operator [Cologne, Germany]
Introducing TiDB Operator [Cologne, Germany]
 
Challenges In Modern Application
Challenges In Modern ApplicationChallenges In Modern Application
Challenges In Modern Application
 
Cloud Native Application Integration With APIs
Cloud Native Application Integration With APIsCloud Native Application Integration With APIs
Cloud Native Application Integration With APIs
 
Yotpo microservices
Yotpo microservicesYotpo microservices
Yotpo microservices
 
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps WayDevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
 
Open shift and docker - october,2014
Open shift and docker - october,2014Open shift and docker - october,2014
Open shift and docker - october,2014
 
#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPR#RADC4L16: An API-First Archives Approach at NPR
#RADC4L16: An API-First Archives Approach at NPR
 

Mais de Ioannis Papapanagiotou

Fast and Scalable Authentication for Vehicular Internet of Things
Fast and Scalable Authentication for Vehicular Internet of ThingsFast and Scalable Authentication for Vehicular Internet of Things
Fast and Scalable Authentication for Vehicular Internet of ThingsIoannis Papapanagiotou
 
Internet of Things @ Purdue University
Internet of Things @ Purdue UniversityInternet of Things @ Purdue University
Internet of Things @ Purdue UniversityIoannis Papapanagiotou
 

Mais de Ioannis Papapanagiotou (6)

Graph Databases at Netflix
Graph Databases at NetflixGraph Databases at Netflix
Graph Databases at Netflix
 
Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017Netflix Data Benchmark @ HPTS 2017
Netflix Data Benchmark @ HPTS 2017
 
Dynomite @ Redis Conference 2016
Dynomite @ Redis Conference 2016Dynomite @ Redis Conference 2016
Dynomite @ Redis Conference 2016
 
Fast and Scalable Authentication for Vehicular Internet of Things
Fast and Scalable Authentication for Vehicular Internet of ThingsFast and Scalable Authentication for Vehicular Internet of Things
Fast and Scalable Authentication for Vehicular Internet of Things
 
Internet of Things @ Purdue University
Internet of Things @ Purdue UniversityInternet of Things @ Purdue University
Internet of Things @ Purdue University
 
Microservices, Containers and Docker
Microservices, Containers and DockerMicroservices, Containers and Docker
Microservices, Containers and Docker
 

Último

Introduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptxIntroduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptxfirstjob4
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998YohFuh
 
Ukraine War presentation: KNOW THE BASICS
Ukraine War presentation: KNOW THE BASICSUkraine War presentation: KNOW THE BASICS
Ukraine War presentation: KNOW THE BASICSAishani27
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfLars Albertsson
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysismanisha194592
 
Data-Analysis for Chicago Crime Data 2023
Data-Analysis for Chicago Crime Data  2023Data-Analysis for Chicago Crime Data  2023
Data-Analysis for Chicago Crime Data 2023ymrp368
 
代办国外大学文凭《原版美国UCLA文凭证书》加州大学洛杉矶分校毕业证制作成绩单修改
代办国外大学文凭《原版美国UCLA文凭证书》加州大学洛杉矶分校毕业证制作成绩单修改代办国外大学文凭《原版美国UCLA文凭证书》加州大学洛杉矶分校毕业证制作成绩单修改
代办国外大学文凭《原版美国UCLA文凭证书》加州大学洛杉矶分校毕业证制作成绩单修改atducpo
 
Smarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptxSmarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptxolyaivanovalion
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz1
 
Brighton SEO | April 2024 | Data Storytelling
Brighton SEO | April 2024 | Data StorytellingBrighton SEO | April 2024 | Data Storytelling
Brighton SEO | April 2024 | Data StorytellingNeil Barnes
 
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Delhi Call girls
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusTimothy Spann
 
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
定制英国白金汉大学毕业证(UCB毕业证书) 成绩单原版一比一
定制英国白金汉大学毕业证(UCB毕业证书)																			成绩单原版一比一定制英国白金汉大学毕业证(UCB毕业证书)																			成绩单原版一比一
定制英国白金汉大学毕业证(UCB毕业证书) 成绩单原版一比一ffjhghh
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130Suhani Kapoor
 
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...Suhani Kapoor
 

Último (20)

Introduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptxIntroduction-to-Machine-Learning (1).pptx
Introduction-to-Machine-Learning (1).pptx
 
RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998RA-11058_IRR-COMPRESS Do 198 series of 1998
RA-11058_IRR-COMPRESS Do 198 series of 1998
 
Ukraine War presentation: KNOW THE BASICS
Ukraine War presentation: KNOW THE BASICSUkraine War presentation: KNOW THE BASICS
Ukraine War presentation: KNOW THE BASICS
 
Industrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdfIndustrialised data - the key to AI success.pdf
Industrialised data - the key to AI success.pdf
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysis
 
Data-Analysis for Chicago Crime Data 2023
Data-Analysis for Chicago Crime Data  2023Data-Analysis for Chicago Crime Data  2023
Data-Analysis for Chicago Crime Data 2023
 
代办国外大学文凭《原版美国UCLA文凭证书》加州大学洛杉矶分校毕业证制作成绩单修改
代办国外大学文凭《原版美国UCLA文凭证书》加州大学洛杉矶分校毕业证制作成绩单修改代办国外大学文凭《原版美国UCLA文凭证书》加州大学洛杉矶分校毕业证制作成绩单修改
代办国外大学文凭《原版美国UCLA文凭证书》加州大学洛杉矶分校毕业证制作成绩单修改
 
Smarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptxSmarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptx
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signals
 
Brighton SEO | April 2024 | Data Storytelling
Brighton SEO | April 2024 | Data StorytellingBrighton SEO | April 2024 | Data Storytelling
Brighton SEO | April 2024 | Data Storytelling
 
꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...
꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...
꧁❤ Aerocity Call Girls Service Aerocity Delhi ❤꧂ 9999965857 ☎️ Hard And Sexy ...
 
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Punjabi Bagh 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and Milvus
 
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
(PARI) Call Girls Wanowrie ( 7001035870 ) HI-Fi Pune Escorts Service
 
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls CP 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
定制英国白金汉大学毕业证(UCB毕业证书) 成绩单原版一比一
定制英国白金汉大学毕业证(UCB毕业证书)																			成绩单原版一比一定制英国白金汉大学毕业证(UCB毕业证书)																			成绩单原版一比一
定制英国白金汉大学毕业证(UCB毕业证书) 成绩单原版一比一
 
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
VIP Call Girls Service Miyapur Hyderabad Call +91-8250192130
 
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
VIP High Profile Call Girls Amravati Aarushi 8250192130 Independent Escort Se...
 
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in Kishangarh
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in  KishangarhDelhi 99530 vip 56974 Genuine Escort Service Call Girls in  Kishangarh
Delhi 99530 vip 56974 Genuine Escort Service Call Girls in Kishangarh
 

Dynomite @ RedisConf 2017

  • 1. Making Non-Distributed Databases, Distributed - Ioannis Papapanagiotou, PhD - Gim Mahasintunan - Viren Baraiya
  • 2.
  • 3. Dynomite/Redis Ecosystem ● Dynomite - Proxy Layer ● Dyno - Redis based Client ● Dynomite-manager - Ecosystem Orchestrator ● Dynomite-Explorer - Redis based UI ● Dyno-queues - Redis based keys ● Conductor - Workflow engine ● NDBench - Netflix Data Benchmark (for Redis)
  • 4. ● Needed a data store: o Scalable & highly available o High throughput, low latency o Netflix use case is active-active ● Master-slave storage engines: o Do not support bi-directional replication o Cannot withstand a Monkey attack o Cannot easily perform maintenance Problems & Observations
  • 5. What is Dynomite? ● A framework that makes non-distributed data stores, distributed. Features: highly available, automatic failover, node warmup, tunable consistency, backups/restores
  • 6. Dynomite @ Netflix ● Running around 2.5 years in PROD ● 70 clusters (100% Y/Y) ● ~1000 nodes used by internal microservices ● Microservices based on Java, Python, NodeJS
  • 7. Pluggable Storage Engines ● Layer on top of a non-distributed key value data store ○ Peer-peer, Shared Nothing ○ Auto Sharding ○ Multi-datacenter ○ Linear scale ○ Replication(Encrypted) ○ Gossiping
  • 8. Replication ● A client can connect to any node on the Dynomite cluster when sending requests. o If node owns the data, ▪ data are written in local data-store and asynchronously replicated. o If node does not own the data ▪ node acts as a coordinator and sends the data in the same rack & replicates to other nodes in other racks and DC.
  • 9. ● Each rack contains one copy of data, partitioned across multiple nodes in that rack ● Multiple Racks == Higher Availability (HA) Topology
  • 10. Dynomite on the Cloud Discovery Service Insights (Metrics) Continuous Delivery Healthcheck Backups & Restores Dynomite Manager RESP = Redis Serialization Protocol REST/HTTP
  • 11. Dyno Client - Java API ● Connection Pooling ● Load Balancing ● Effective failover ● Pipelining ● Scatter/Gather ● Metrics, e.g. Netflix Insights
  • 12. Dyno Load Balancing ● Dyno client employs token aware load balancing. ● Dyno client is aware of the cluster topology of Dynomite within the region, can write to specific node using consistent hashing.
  • 14. Netflix Data Benchmark ● Benchmarking Dynomite with Redis on the Cloud
  • 15. Netflix Data Benchmark for Redis ● Dynamically change the benchmark configurations, ○ perform tests along with our production microservices. ● Be able to integrate with platform cloud services ○ dynamic configurations, discovery, metrics, etc. ● Run for an infinite duration in order to introduce failure scenarios ● Provide pluggable patterns and loads. ● Support different client APIs. ● Deploy, manage and monitor multiple instances from a single entry point.
  • 16.
  • 17. How everything comes together?
  • 18. Netflix Data Explorer - Dynomite ● Exploring Netflix Data Sources ● Providing a UI for Dynomite and Redis
  • 19. Netflix Data Explorer - Use Cases Netflix needed a client to satisfy the following requirements: ● Support Redis API ● Avoid blocking calls (e.g. Redis KEYS *) ● UI needs to scale to millions of keys ● Customizable UI ● Ability to share UI components amongst Netflix projects ● Provide extensive logging for audit trail purposes
  • 21. Cluster Listing ● Multi-tenant system ● Each application has a dedicated Dynomite cluster ● Access controls restrict cluster visibility
  • 26. Audit Trail and Logging eu-west c b a us-east c b a us-west b a Elasticsearch
  • 27. Conductor ● Orchestration Engine ● Redis for Storage and Queues ● Open Source (Apache 2.0)
  • 28. Orchestration - Use Cases ● Content Ingest & Delivery ● Title Setup ● Studio Deliveries ● Content Quality Checks ● Content Localization
  • 29. Once Upon A Time... ● Peer to Peer Messaging ● 10’s MM messages per day ● Process flows embedded in applications ● Lack of control (STOP deployment!) ● Lack of visibility into progress
  • 30. Peer to Peer Application C Application BApplication BApplication A Request Content Content Inspection Result Encode Publish Events / API calls Events / API calls Events / API calls
  • 31. Peer to Peer Application C Application BApplication BApplication A Request Content Content Inspection Result Encode Publish Events / API calls Events / API calls Events / API calls ● Logical flow is not easily trackable ● Modifying steps is not easy (tightly coupled) ● Controlling flow is not possible
  • 32. Conductor ● BYO Task (Reuse existing code) ● REST/HTTP support ● Extensible and Hackable ● JSON based DSL to define blueprint ● Scale Out Horizontally ● Visibility, Traceability & Control
  • 33. Same Flow - New Flavor Request Content Content Inspection Result Encode PublishStart Stop Conductor Application A Task Request Content Application B Task Content Inspection Application C Task Encode Application B Task Publish OrchestrationExecution
  • 35. High Level Architecture API Workflows Metadata Tasks SERVICE Workflow Service Task Service Decider Service Queue Service STORE Storage (Redis /Dynomite) Start and manage workflows Define blueprints and tasks Gets tasks from queue and execute Index (Elasticsearch)
  • 36. Conductor - Scale ● Peer-to-Peer - Scale horizontally ● Stateless server - state is persisted in Redis ● Storage scalability : Dynomite ● Workload scale: Dyno-Queues
  • 37. Storage Layer ● Dynomite ○ Generic Dynamo implementation (Redis, Memcache) ○ Multi-datacenter ○ Highly available ○ Peer-to-Peer ● Elasticsearch ○ Indexing workflow and task executions
  • 38. Dyno-Queues ● Distributed lock free queues used by Conductor ● OSS ○ Apache 2.0 License ○ https://github.com/Netflix/dyno-queues ● Delayed Queues ● Loose priorities and FIFO
  • 40. Conductor @ Netflix ● In production > 1.5 year ● Used by Content Platform Engineering ○ Content Ingest & Encoding ○ Content Processing ● ~150 Process Flows & ~300 Tasks / Services ● 1+ MM Executions / Month
  • 41. More information ● Dynomite Ecosystem: o https://github.com/Netflix/dynomite o https://github.com/Netflix/dyno o https://github.com/Netflix/dyno-queues o https://github.com/Netflix/dynomite-manager ● NDBench: o https://github.com/Netflix/ndbench ● Conductor: o https://github.com/Netflix/Conductor ● Chat: o https://gitter.im/Netflix/dynomite o https://gitter.im/Netflix/conductor

Notas do Editor

  1. By a show of hands, how many people have seen this? Great. we have 60-90 seconds before you ditch us and do something else. Obviously the choice of content plays a big role, but just as important is a seamless user experience. Netflix has both. Our job is to deliver that to the members and keep them happy and streaming. The use cases for data caching range from session storage, managing viewing history, tracking bookmarks, managing playlist, ratings, and personalized recommendations to name a few.
  2. Our business use case is to stream movies at any cost. Hence we moved from the SQL to Cassandra in order to have high availability. We are very sensitive to 99th latencies, Cassandra Started Migrating to NoSQL Quickly Became the Defacto standard for data storage Scaled out Cassandra to reduce data per node and reduce latency Definitely Not economical. Needed something in memory to meet the throughput and latency Needed: Typical deployment is in 3 data centers and 3 availability zones in each Redis: Kong exercises: Monkey, Gorilla and Kong
  3. Two types of use cases : As a Cache and As a datastore
  4. Use Master branch of github since that is the stable one and thats what we run in production
  5. Fix errors in arrows - Minh has source :) and rack names
  6. All nodes know the topology in the system
  7. Dynomite customer base was growing rapidly and introducing new users to Redis Dynomite supports most native Redis commands Users new to Redis might not follow best practices and perform KEYS *. Scalable UI mandatory. Storing session data is a common use case. Within the Netflix Cloud Engineering organization we have many projects where we try to share Web Components.
  8. The UI leverages Polymer to build reusable Web Components that can be shared among other Netflix projects. The Server is a Node.js Express app Supports pluggable discovery modules Netflix Discovery Local Redis environment File system based configuration Supports pluggable Authentication using Passport. Netflix uses Meechum for authentication. Can be extended for other passport-based auth like facebook Supports pluggable ACL modules Currently integrates with other Netflix services to get access control information for all Dynomite clusters Currently supports the Redis/Dynomite API
  9. Typically each application/team has a dedicated Dynomite cluster (confirm with Ioannis). The list of visible clusters is restricted by user group membership
  10. Hashes are great for representing objects Commands for manipulating hashes: HMSET, HSET, HGET, HGETALL
  11. As we mentioned, session storage is a common use case for Dynomite. Using Redis’ TTL provides a convenient way to expire data.
  12. App is deployed in multiple regions and multiple availability zones for resiliency Wanted to consolidate logging across all app instances to provide an audit trail FileBeat runs on each instance and ships logs to an ElasticSearch cluster which allows us to create a variety of dashboards using Kibana.