SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
Reactive Retail 
Big Retail Goes Reactive at Walmart 
NOVEMBER 2014 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Agenda 
Introduction 
Walmart.ca re-architecture 
Move to Functional Programming 
Technical Tips & Features 
Experiences and Impressions 
Outlook 
Q&A 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
About Nurun 
AREAS OF EXPERTISE 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
12 
San Francisco 
Atlanta 
Nancy 
Shanghai 
Quebec Turin 
Montreal 
Paris 
Milan 
Toronto 
Chicoutimi 
Madrid 
1,200+ 
Employees 
14 Years 
In Business 
Retail 
Automotive 
Financial Services 
Media & Entertainment 
Fashion & Beauty 
Utilities 
Government 
Telecommunications 
Travel & Hospitality 
Health & Pharma 
3 
We are a global design & 
technology consultancy 
with 12 offices worldwide.
Introduction 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Introduction 
TYPICAL LARGE ECOMMERCE ENVIRONMENTS 
CDN 
JSPs 
E-Commerce 
Platform 
RDBMS 
Product content management 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Introduction 
TYPICAL LARGE ECOMMERCE ENVIRONMENTS 
CDN 
JSPs 
E-Commerce 
Platform Search & 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
merchandizing 
RDBMS 
Product content management
Introduction 
INCUMBENT PLATFORM 
• ATG, Oracle 
• Fairly monolithic 
• Rapidly evolving 
merchandising needs 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Introduction 
INCUMBENT PLATFORM 
• ATG, Oracle 
• Fairly monolithic 
• Rapidly evolving 
merchandising needs 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Introduction 
INCUMBENT PLATFORM 
• ATG, Oracle 
• Fairly monolithic 
• Rapidly evolving 
merchandising needs 
• Scalability issues 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Retail priorities 
EFFICIENT & SCALABLE 
Need to handle large volumes 
RESILIENT 
Downtime is expensive 
FLEXIBLE & MAINTAINABLE 
Business requirements change 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Need to go Reactive to be … 
RESPONSIVE 
Customer experience, brand promise 
RESILIENT 
Handle failure at multiple levels 
ELASTIC 
Handle traffic spikes (without breaking the bank) 
MESSAGE-DRIVEN 
Enable all of the above 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Walmart.ca Re-architecture 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Walmart.ca re-architecture 
JSPs 
ATG 
Oracle 
Product content management 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Walmart.ca re-architecture 
REST API 
JSPs 
ATG 
Oracle 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
REST API 
Endeca search & 
merchandizing 
Product content management
Walmart.ca re-architecture 
JSPs 
ATG 
Oracle 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
REST API 
Endeca search & 
merchandizing 
Akka, Redis 
Product content management
Walmart.ca re-architecture 
JSPs 
ATG 
Oracle 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
JSON 
REST API 
Endeca search & 
merchandizing 
Play 
Akka, Redis 
Product content management
Walmart.ca re-architecture 
JSON 
REST API 
ATG 
Oracle 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
JSON 
REST API 
Endeca search & 
merchandizing 
Play 
Akka, Redis 
Product content management
Walmart.ca re-architecture 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
No. 1 +20% 
Canada’s first responsively 
designed e-commerce site 
for a big box retailer 
+98% 
Increase in conversion in the 
first 4 weeks after launch 
Increase in mobile orders 
-36% 
Decrease in average page 
load time 
Awarded 
BEST E-COMMERCE SITE in large 
retailers by 
Retail Council of Canada
Walmart.ca re-architecture 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
No. 1 +20% 
Canada’s first responsively 
designed e-commerce site 
for a big box retailer 
+98% 
Increase in conversion in the 
first 4 weeks after launch 
Increase in mobile orders 
-36% 
Decrease in average page 
load time 
NO SYSTEM OUTAGES! 
Awarded 
BEST E-COMMERCE SITE in large 
retailers by 
Retail Council of Canada
Move to Functional Programming 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Move to Functional Programming 
● Majority of the team are developers with a Java background 
● Play provides an easy entry path to Scala / Reactive / Functional: 
§ Based on familiar MVC patterns 
§ Can start with Java style, mutation, blocking 
§ Incrementally transition to Scala style, immutable, non-blocking 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Move to Functional Programming 
1. No nulls (use Option) 
2. No vars, mutable state* 
3. Use higher-order functions (map, flatMap, filter, for-yield, etc.) 
4. Business logic should be side-effect free (testability!) 
5. Create and use strong types 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
*unless well justified (e.g. much clearer), and as small a scope as possible
Move to Functional Programming 
● Code should be a clear and concise as possible 
● Types should be express intent and fit tightly 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Move to Functional Programming: Strong Types 
sealed trait Language 
case object English extends Language 
case object French extends Language 
def formatPrice(price: Price, lang: Language) = lang match { 
case English => … 
case French => … 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
} 
implicit val binder = new PathBindable[Language] { 
… 
}
Technical Tips & Features 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Tips & Features: Caching Futures (on-heap) 
● Several concurrent requests for same data 
● Whoever requests first initiates the Future (Promise) 
● No locking required (narrow window between first request and when 
Future is cached) 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Tips & Features: Handling JSON 
P lay Application Makes Heavy Use of JSON 
• Consumes JSON view advice from Endeca 
• Proxy & augment JSON data for web service calls 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Tips & Features: Play JSON macro 
Consuming JSON (e.g. Endeca cartridges) 
case class Product(id: Long, name: String, …) 
object Product { 
implicit val formats = Json.format[Product] 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
} 
Json.toJson(product) 
productJson.asOpt[Product]
Tips & Features: ‘Almost Default’ Reads/Writes 
OPEN CHALLENGE 
Sometime we want an ‘almost default’ Reads/Writes 
• e.g. use a default 
• Read/write a few fields in a particular way 
• e.g. format two dates in different ways 
• (Could Shapeless case class generics macro help?) 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Tips & Features: Proxying and Augmenting JSON 
Proxying JSON (e.g. most web services) 
• Might want to augment a JSON response 
• Don’t need to care about knowing the entire structure 
• Play JSON transformers 
• play-json-zipper can be helpful (github: mandubian) 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Tips & Features: Dependency Injection 
CONTROLLER DEPENDENCIES (SERVICES) 
• Use structural types for DI at the controller level 
• Create a services module for each request 
• Want access to request header (logging) 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Tips & Features: Dependency Injection 
THREADLOCAL 
• Inject dependencies in Global.getControllerInstance 
• Initialize services module in Global.onRouteRequest, add to 
ThreadLocal 
• Pick up this value in the getControllerInstance and provide it to our 
controller 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Tips & Features: Monadic Rendering 
Page Model 
• Template 
• Zones 
• Cartridges 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Rendering View Advice: Templates & Zones 
The business user selects a template: 
• Determines the page layout 
• Each template has ~12 zones 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Rendering View Advice: Cartridges 
… adds cartridges to the zones: 
• ~100 cartridges 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
ProductImage 
ProductDescription 
ProductPurchase
Rendering View Advice: Whole Page 
• Endeca fills in data (product info) 
• Play renders the cartridge as HTML 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Rendering View Advice: JSON to Visual Page 
• Tmpl1 
• Header 
• Car1 
• Car2 
• LeftNav 
• Car3 
• MainContent 
• Car4 
• Car5 
• Car6 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Rendering View Advice: JSON to HTML 
• Tmpl1 
• Header 
• Car1 
• Car2 
• LeftNav 
• Car3 
• MainContent 
• Car4 
• Car5 
• Car6 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
<body>! 
<div class=“header”>! 
! !…! 
</div>! 
<div class=“leftNav”>! 
! !…! 
</div>! 
!<div class=“main”>! 
! !…! 
</div>! 
</body>!
Rendering View Advice: Auxiliary Information 
• Tmpl1 
• Header 
• Car1 
• Car2 
• LeftNav 
• Car3 
• MainContent 
• Car4 
• Car5 
• Car6 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
<head>! 
! 
</head>! 
<body>! 
<div class=“header”>! 
! !…! 
</div>! 
<div class=“leftNav”>! 
! !…! 
</div>! 
!<div class=“main”>! 
! !…! 
</div>! 
! 
! 
</body>!
Rendering View Advice: Auxiliary Information 
• Tmpl1 
• Header 
• Car1 
• Car2 
• LeftNav 
• Car3 
• MainContent 
• Car4 
• Car5 
• Car6 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
<head>! 
! 
</head>! 
<body>! 
<div class=“header”>! 
! !…! 
</div>! 
<div class=“leftNav”>! 
! !…! 
</div>! 
!<div class=“main”>! 
! !…! 
</div>! 
! 
! 
</body>! 
CSS / JavaScript / RJS modules
Rendering View Advice: Auxiliary Information 
• Tmpl1 
• Header 
• Car1 
• Car2 
• LeftNav 
• Car3 
• MainContent 
• Car4 
• Car5 
• Car6 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
<head>! 
! 
</head>! 
<body>! 
<div class=“header”>! 
! !…! 
</div>! 
<div class=“leftNav”>! 
! !…! 
</div>! 
!<div class=“main”>! 
! !…! 
</div>! 
! 
! 
</body>! 
CSS / JavaScript / RJS modules 
JavaScript / RJS modules
Rendering View Advice: Auxiliary Information 
• Tmpl1 
• Header 
• Car1 
• Car2 
• LeftNav 
• Car3 
• MainContent 
• Car4 
• Car5 
• Car6 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
<head>! 
! 
</head>! 
<body>! 
<div class=“header”>! 
! !…! 
</div>! 
<div class=“leftNav”>! 
! !…! 
</div>! 
!<div class=“main”>! 
! !…! 
</div>! 
! 
! 
</body>! 
CSS / JavaScript / RJS modules 
JavaScript / RJS modules 
Cache control
Monadic Rendering: ValidatedBuilder Monad 
ValidatedBuilder[X] 
• “Parse/process” X 
• ≅ Future[(X, Boolean, Resources)] 
• Error flag: 
• Determine if page should be cached 
• Front-end resources 
• CSS 
• RequireJS modules 
• JavaScript snippets (+ page location requirements) 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Monadic Rendering: ValidatedBuilder Monad 
ValidatedBuilder[X] 
• map and flatMap handle combining and propagating validity and 
front-end resources 
• Code focuses on the essential task (JSON -> HTML) without clutter 
• Error prone ‘plumbing’ is handled by the monad abstraction 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Monadic Rendering: ValidatedBuilder Zone 
v al headerContent: VB[Seq[Cartridge]] = 
(viewAdvice  “header”) 
.as[Seq[JsValue]] // Seq[JsValue] 
.map(Cartridge.parse) // Seq[VB[Cartridge]] 
.vbSeq // VB[Seq[Cartridge]] 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Monadic Rendering: ValidatedBuilder Template 
val template: VB[Template] = for { 
header <- headerContent : VB[Seq[Cartridge]] 
leftNav <- leftNavContent 
… 
templateResult <- CayenneTemplate(header, leftNav, …) 
} yield templateResult 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Monadic Rendering: ValidatedBuilder Page 
for { 
content <- template.contents : Future[Template] 
resources <- template.resources : Future[Resources] 
isCacheable <- template.isValid : Future[Boolean] 
yield { 
val result = template.render(resources) 
if (isCacheable) 
result 
else 
result.withHeaders(noCache: _*) 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 
}
Tips & Features: Dynamic Configuration 
• Ops can make on the fly configuration changes 
• Enable/disable services and site features 
• Change endpoints 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Tips & Features: Dynamic Configuration 
• Sends configuration delta to Play (JSON object) 
• Play verifies the change (initialize services module) 
• Each request sees a snapshot of the configuration 
• Uses standard Play HOCON API 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Experience and Impressions 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Experience and Impressions 
● Never need to say “no” to a client due to technical limitations, 
● Heavily concurrency / parallelism, with very little headaches, 
● Aggressive refactorings are surprisingly easy (thank you strong types). 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Outlook 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Outlook 
NEW BREED OF PRODUCTS 
Reactive core 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Outlook 
NEW BREED OF PRODUCTS 
Reactive core 
Middleware 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Outlook 
NEW BREED OF PRODUCTS 
Reactive core 
Middleware 
Omnichannel CE 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Outlook 
NEW BREED OF PRODUCTS 
Reactive core 
Middleware 
Omnichannel CE 
Streaming big data 
Machine intelligence 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Outlook 
NEW BREED OF PRODUCTS 
Reactive core 
Middleware 
Omnichannel CE 
Streaming big data 
Machine intelligence 
CMS 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Outlook 
NEW BREED OF PRODUCTS 
Reactive core 
Middleware 
Omnichannel CE 
Streaming big data 
Machine intelligence 
CMS 
BAAS 
REsponsiveSS 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Outlook 
NEW BREED OF PRODUCTS 
Reactive core 
Middleware 
Omnichannel CE 
Streaming big data 
Machine intelligence 
CMS 
BAAS 
REsponsiveSS 
In store tech, IoT… 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
Q & A 
Ankur Mathur @anchormath 
Dana Harrington @danagharrington https://github.com/dana-harrington 
REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART

Contenu connexe

Tendances

Confluent Kafka and KSQL: Streaming Data Pipelines Made Easy
Confluent Kafka and KSQL: Streaming Data Pipelines Made EasyConfluent Kafka and KSQL: Streaming Data Pipelines Made Easy
Confluent Kafka and KSQL: Streaming Data Pipelines Made EasyKairo Tavares
 
Can Apache Kafka Replace a Database?
Can Apache Kafka Replace a Database?Can Apache Kafka Replace a Database?
Can Apache Kafka Replace a Database?Kai Wähner
 
From data stream management to distributed dataflows and beyond
From data stream management to distributed dataflows and beyondFrom data stream management to distributed dataflows and beyond
From data stream management to distributed dataflows and beyondVasia Kalavri
 
Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
Pivoting Spring XD to Spring Cloud Data Flow with Sabby AnandanPivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
Pivoting Spring XD to Spring Cloud Data Flow with Sabby AnandanPivotalOpenSourceHub
 
Kafka Summit SF 2017 - Riot's Journey to Global Kafka Aggregation
Kafka Summit SF 2017 - Riot's Journey to Global Kafka AggregationKafka Summit SF 2017 - Riot's Journey to Global Kafka Aggregation
Kafka Summit SF 2017 - Riot's Journey to Global Kafka Aggregationconfluent
 
Hybrid Kafka, Taking Real-time Analytics to the Business (Cody Irwin, Google ...
Hybrid Kafka, Taking Real-time Analytics to the Business (Cody Irwin, Google ...Hybrid Kafka, Taking Real-time Analytics to the Business (Cody Irwin, Google ...
Hybrid Kafka, Taking Real-time Analytics to the Business (Cody Irwin, Google ...HostedbyConfluent
 
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The EssentialsBuilding a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The EssentialsC4Media
 
Scala eXchange: Building robust data pipelines in Scala
Scala eXchange: Building robust data pipelines in ScalaScala eXchange: Building robust data pipelines in Scala
Scala eXchange: Building robust data pipelines in ScalaAlexander Dean
 
Pragmatic CQRS with existing applications and databases (Digital Xchange, May...
Pragmatic CQRS with existing applications and databases (Digital Xchange, May...Pragmatic CQRS with existing applications and databases (Digital Xchange, May...
Pragmatic CQRS with existing applications and databases (Digital Xchange, May...Lucas Jellema
 
Data Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDBData Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDBconfluent
 
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and moreTypesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and moreLegacy Typesafe (now Lightbend)
 
Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent) K...
Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent)  K...Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent)  K...
Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent) K...confluent
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...confluent
 
Kafka Summit NYC 2017 - Apache Kafka in the Enterprise: What if it Fails?
Kafka Summit NYC 2017 - Apache Kafka in the Enterprise: What if it Fails? Kafka Summit NYC 2017 - Apache Kafka in the Enterprise: What if it Fails?
Kafka Summit NYC 2017 - Apache Kafka in the Enterprise: What if it Fails? confluent
 
Writing Blazing Fast, and Production-Ready Kafka Streams apps in less than 30...
Writing Blazing Fast, and Production-Ready Kafka Streams apps in less than 30...Writing Blazing Fast, and Production-Ready Kafka Streams apps in less than 30...
Writing Blazing Fast, and Production-Ready Kafka Streams apps in less than 30...HostedbyConfluent
 
Real-World Pulsar Architectural Patterns
Real-World Pulsar Architectural PatternsReal-World Pulsar Architectural Patterns
Real-World Pulsar Architectural PatternsDevin Bost
 
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0Legacy Typesafe (now Lightbend)
 
Pakk Your Alpakka: Reactive Streams Integrations For AWS, Azure, & Google Cloud
Pakk Your Alpakka: Reactive Streams Integrations For AWS, Azure, & Google CloudPakk Your Alpakka: Reactive Streams Integrations For AWS, Azure, & Google Cloud
Pakk Your Alpakka: Reactive Streams Integrations For AWS, Azure, & Google CloudLightbend
 
Building a Web Application with Kafka as your Database
Building a Web Application with Kafka as your DatabaseBuilding a Web Application with Kafka as your Database
Building a Web Application with Kafka as your Databaseconfluent
 
Apache Kafka and API Management / API Gateway – Friends, Enemies or Frenemies?
Apache Kafka and API Management / API Gateway – Friends, Enemies or Frenemies?Apache Kafka and API Management / API Gateway – Friends, Enemies or Frenemies?
Apache Kafka and API Management / API Gateway – Friends, Enemies or Frenemies?Kai Wähner
 

Tendances (20)

Confluent Kafka and KSQL: Streaming Data Pipelines Made Easy
Confluent Kafka and KSQL: Streaming Data Pipelines Made EasyConfluent Kafka and KSQL: Streaming Data Pipelines Made Easy
Confluent Kafka and KSQL: Streaming Data Pipelines Made Easy
 
Can Apache Kafka Replace a Database?
Can Apache Kafka Replace a Database?Can Apache Kafka Replace a Database?
Can Apache Kafka Replace a Database?
 
From data stream management to distributed dataflows and beyond
From data stream management to distributed dataflows and beyondFrom data stream management to distributed dataflows and beyond
From data stream management to distributed dataflows and beyond
 
Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
Pivoting Spring XD to Spring Cloud Data Flow with Sabby AnandanPivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
 
Kafka Summit SF 2017 - Riot's Journey to Global Kafka Aggregation
Kafka Summit SF 2017 - Riot's Journey to Global Kafka AggregationKafka Summit SF 2017 - Riot's Journey to Global Kafka Aggregation
Kafka Summit SF 2017 - Riot's Journey to Global Kafka Aggregation
 
Hybrid Kafka, Taking Real-time Analytics to the Business (Cody Irwin, Google ...
Hybrid Kafka, Taking Real-time Analytics to the Business (Cody Irwin, Google ...Hybrid Kafka, Taking Real-time Analytics to the Business (Cody Irwin, Google ...
Hybrid Kafka, Taking Real-time Analytics to the Business (Cody Irwin, Google ...
 
Building a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The EssentialsBuilding a Modern Microservices Architecture at Gilt: The Essentials
Building a Modern Microservices Architecture at Gilt: The Essentials
 
Scala eXchange: Building robust data pipelines in Scala
Scala eXchange: Building robust data pipelines in ScalaScala eXchange: Building robust data pipelines in Scala
Scala eXchange: Building robust data pipelines in Scala
 
Pragmatic CQRS with existing applications and databases (Digital Xchange, May...
Pragmatic CQRS with existing applications and databases (Digital Xchange, May...Pragmatic CQRS with existing applications and databases (Digital Xchange, May...
Pragmatic CQRS with existing applications and databases (Digital Xchange, May...
 
Data Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDBData Streaming with Apache Kafka & MongoDB
Data Streaming with Apache Kafka & MongoDB
 
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and moreTypesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and more
 
Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent) K...
Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent)  K...Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent)  K...
Event Sourcing, Stream Processing and Serverless (Ben Stopford, Confluent) K...
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
 
Kafka Summit NYC 2017 - Apache Kafka in the Enterprise: What if it Fails?
Kafka Summit NYC 2017 - Apache Kafka in the Enterprise: What if it Fails? Kafka Summit NYC 2017 - Apache Kafka in the Enterprise: What if it Fails?
Kafka Summit NYC 2017 - Apache Kafka in the Enterprise: What if it Fails?
 
Writing Blazing Fast, and Production-Ready Kafka Streams apps in less than 30...
Writing Blazing Fast, and Production-Ready Kafka Streams apps in less than 30...Writing Blazing Fast, and Production-Ready Kafka Streams apps in less than 30...
Writing Blazing Fast, and Production-Ready Kafka Streams apps in less than 30...
 
Real-World Pulsar Architectural Patterns
Real-World Pulsar Architectural PatternsReal-World Pulsar Architectural Patterns
Real-World Pulsar Architectural Patterns
 
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
 
Pakk Your Alpakka: Reactive Streams Integrations For AWS, Azure, & Google Cloud
Pakk Your Alpakka: Reactive Streams Integrations For AWS, Azure, & Google CloudPakk Your Alpakka: Reactive Streams Integrations For AWS, Azure, & Google Cloud
Pakk Your Alpakka: Reactive Streams Integrations For AWS, Azure, & Google Cloud
 
Building a Web Application with Kafka as your Database
Building a Web Application with Kafka as your DatabaseBuilding a Web Application with Kafka as your Database
Building a Web Application with Kafka as your Database
 
Apache Kafka and API Management / API Gateway – Friends, Enemies or Frenemies?
Apache Kafka and API Management / API Gateway – Friends, Enemies or Frenemies?Apache Kafka and API Management / API Gateway – Friends, Enemies or Frenemies?
Apache Kafka and API Management / API Gateway – Friends, Enemies or Frenemies?
 

En vedette

Revitalizing Walmart's Aging Architecture for Web Scale
Revitalizing Walmart's Aging Architecture for Web ScaleRevitalizing Walmart's Aging Architecture for Web Scale
Revitalizing Walmart's Aging Architecture for Web ScaleKevin Webber
 
MUTATION - Multi-écrans : concevoir l’expérience sans perdre le consommateur
MUTATION - Multi-écrans : concevoir l’expérience sans perdre le consommateurMUTATION - Multi-écrans : concevoir l’expérience sans perdre le consommateur
MUTATION - Multi-écrans : concevoir l’expérience sans perdre le consommateurNurun
 
MUTATION - Générer des affaires par le contenu : entre créativité et performance
MUTATION - Générer des affaires par le contenu : entre créativité et performanceMUTATION - Générer des affaires par le contenu : entre créativité et performance
MUTATION - Générer des affaires par le contenu : entre créativité et performanceNurun
 
CHI 2014
CHI 2014CHI 2014
CHI 2014Nurun
 
MUTATION - Objets et corps connectés : de la science-fiction dans nos réalité...
MUTATION - Objets et corps connectés : de la science-fiction dans nos réalité...MUTATION - Objets et corps connectés : de la science-fiction dans nos réalité...
MUTATION - Objets et corps connectés : de la science-fiction dans nos réalité...Nurun
 
Brick-and-Mortar vs. Online Only: How to Win the Omni-channel Battle Webinar
Brick-and-Mortar vs. Online Only: How to Win the Omni-channel Battle WebinarBrick-and-Mortar vs. Online Only: How to Win the Omni-channel Battle Webinar
Brick-and-Mortar vs. Online Only: How to Win the Omni-channel Battle WebinarNurun
 
Integrate your mojo - Unity platform - Research Research ltd
Integrate your mojo - Unity platform - Research Research ltdIntegrate your mojo - Unity platform - Research Research ltd
Integrate your mojo - Unity platform - Research Research ltdaadamishmael
 
walmart closes up their shops in germany
walmart closes up their shops in germanywalmart closes up their shops in germany
walmart closes up their shops in germanyaditi sehgal
 
Android Platform Overview - Azercell Barama
Android Platform Overview - Azercell BaramaAndroid Platform Overview - Azercell Barama
Android Platform Overview - Azercell BaramaRamin Orujov
 
Case study - Walmart (Philip Kotler 14th Edition, Chapter 3)
Case study - Walmart (Philip Kotler 14th Edition, Chapter 3)Case study - Walmart (Philip Kotler 14th Edition, Chapter 3)
Case study - Walmart (Philip Kotler 14th Edition, Chapter 3)Darshak Kamani
 
Reactive Programming in Spring 5
Reactive Programming in Spring 5Reactive Programming in Spring 5
Reactive Programming in Spring 5poutsma
 
Wal mart case_study
Wal mart case_studyWal mart case_study
Wal mart case_studyucmbnko
 
Building a Reactive RESTful API with Akka Http & Slick
Building a Reactive RESTful API with Akka Http & SlickBuilding a Reactive RESTful API with Akka Http & Slick
Building a Reactive RESTful API with Akka Http & SlickZalando Technology
 
NRF Big Show - FINAL
NRF Big Show - FINALNRF Big Show - FINAL
NRF Big Show - FINALDrew Green
 
NRF Big Show
NRF Big ShowNRF Big Show
NRF Big ShowNurun
 
eCommerce Trends for 2015
eCommerce Trends for 2015eCommerce Trends for 2015
eCommerce Trends for 2015Grant Morrow
 

En vedette (20)

Revitalizing Walmart's Aging Architecture for Web Scale
Revitalizing Walmart's Aging Architecture for Web ScaleRevitalizing Walmart's Aging Architecture for Web Scale
Revitalizing Walmart's Aging Architecture for Web Scale
 
Revitalizing Aging Architectures with Microservices
Revitalizing Aging Architectures with MicroservicesRevitalizing Aging Architectures with Microservices
Revitalizing Aging Architectures with Microservices
 
MUTATION - Multi-écrans : concevoir l’expérience sans perdre le consommateur
MUTATION - Multi-écrans : concevoir l’expérience sans perdre le consommateurMUTATION - Multi-écrans : concevoir l’expérience sans perdre le consommateur
MUTATION - Multi-écrans : concevoir l’expérience sans perdre le consommateur
 
MUTATION - Générer des affaires par le contenu : entre créativité et performance
MUTATION - Générer des affaires par le contenu : entre créativité et performanceMUTATION - Générer des affaires par le contenu : entre créativité et performance
MUTATION - Générer des affaires par le contenu : entre créativité et performance
 
CHI 2014
CHI 2014CHI 2014
CHI 2014
 
MUTATION - Objets et corps connectés : de la science-fiction dans nos réalité...
MUTATION - Objets et corps connectés : de la science-fiction dans nos réalité...MUTATION - Objets et corps connectés : de la science-fiction dans nos réalité...
MUTATION - Objets et corps connectés : de la science-fiction dans nos réalité...
 
Brick-and-Mortar vs. Online Only: How to Win the Omni-channel Battle Webinar
Brick-and-Mortar vs. Online Only: How to Win the Omni-channel Battle WebinarBrick-and-Mortar vs. Online Only: How to Win the Omni-channel Battle Webinar
Brick-and-Mortar vs. Online Only: How to Win the Omni-channel Battle Webinar
 
Integrate your mojo - Unity platform - Research Research ltd
Integrate your mojo - Unity platform - Research Research ltdIntegrate your mojo - Unity platform - Research Research ltd
Integrate your mojo - Unity platform - Research Research ltd
 
walmart closes up their shops in germany
walmart closes up their shops in germanywalmart closes up their shops in germany
walmart closes up their shops in germany
 
Android Platform Overview - Azercell Barama
Android Platform Overview - Azercell BaramaAndroid Platform Overview - Azercell Barama
Android Platform Overview - Azercell Barama
 
Unity 3d
Unity 3dUnity 3d
Unity 3d
 
Case study - Walmart (Philip Kotler 14th Edition, Chapter 3)
Case study - Walmart (Philip Kotler 14th Edition, Chapter 3)Case study - Walmart (Philip Kotler 14th Edition, Chapter 3)
Case study - Walmart (Philip Kotler 14th Edition, Chapter 3)
 
Reactive Programming in Spring 5
Reactive Programming in Spring 5Reactive Programming in Spring 5
Reactive Programming in Spring 5
 
Android Platform Architecture
Android Platform ArchitectureAndroid Platform Architecture
Android Platform Architecture
 
Wal mart case_study
Wal mart case_studyWal mart case_study
Wal mart case_study
 
Building a Reactive RESTful API with Akka Http & Slick
Building a Reactive RESTful API with Akka Http & SlickBuilding a Reactive RESTful API with Akka Http & Slick
Building a Reactive RESTful API with Akka Http & Slick
 
NRF Big Show - FINAL
NRF Big Show - FINALNRF Big Show - FINAL
NRF Big Show - FINAL
 
NRF Big Show
NRF Big ShowNRF Big Show
NRF Big Show
 
Unity 3d Basics
Unity 3d BasicsUnity 3d Basics
Unity 3d Basics
 
eCommerce Trends for 2015
eCommerce Trends for 2015eCommerce Trends for 2015
eCommerce Trends for 2015
 

Similaire à Big Retail Goes Reactive at Walmart

Hadoop and the Relational Database: The Best of Both Worlds
Hadoop and the Relational Database: The Best of Both WorldsHadoop and the Relational Database: The Best of Both Worlds
Hadoop and the Relational Database: The Best of Both WorldsInside Analysis
 
Coll presentation-typesafe-case study-walmart
Coll presentation-typesafe-case study-walmartColl presentation-typesafe-case study-walmart
Coll presentation-typesafe-case study-walmartDwayne Ingram
 
The Next Generation IT Department MUST HAVE CLOUD
The Next Generation IT Department MUST HAVE CLOUDThe Next Generation IT Department MUST HAVE CLOUD
The Next Generation IT Department MUST HAVE CLOUDRackspace
 
Moving existing apps to the cloud
 Moving existing apps to the cloud Moving existing apps to the cloud
Moving existing apps to the cloudRam Maddali
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkRed Hat Developers
 
Successful Scalability Principles - Part 1
Successful Scalability Principles - Part 1Successful Scalability Principles - Part 1
Successful Scalability Principles - Part 1Ronald Bradford
 
Journey of Implementing Solr at Target: Presented by Raja Ramachandran, Target
Journey of Implementing Solr at Target: Presented by Raja Ramachandran, TargetJourney of Implementing Solr at Target: Presented by Raja Ramachandran, Target
Journey of Implementing Solr at Target: Presented by Raja Ramachandran, TargetLucidworks
 
Fearless From Monolith to Serverless with Dynatrace
Fearless From Monolith to Serverless with DynatraceFearless From Monolith to Serverless with Dynatrace
Fearless From Monolith to Serverless with DynatraceAmazon Web Services
 
GraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
GraphQL Munich Meetup #1 - How We Use GraphQL At CommercetoolsGraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
GraphQL Munich Meetup #1 - How We Use GraphQL At CommercetoolsNicola Molinari
 
SimplifyStreamingArchitecture
SimplifyStreamingArchitectureSimplifyStreamingArchitecture
SimplifyStreamingArchitectureMaheedhar Gunturu
 
Become an IT Service Broker
Become an IT Service BrokerBecome an IT Service Broker
Become an IT Service BrokerRackspace
 
Event-Driven Architecture (EDA)
Event-Driven Architecture (EDA)Event-Driven Architecture (EDA)
Event-Driven Architecture (EDA)WSO2
 
[db tech showcase Tokyo 2018] #dbts2018 #B33 『DBA 18.0 - Life after 18c』
[db tech showcase Tokyo 2018] #dbts2018 #B33 『DBA 18.0 - Life after 18c』[db tech showcase Tokyo 2018] #dbts2018 #B33 『DBA 18.0 - Life after 18c』
[db tech showcase Tokyo 2018] #dbts2018 #B33 『DBA 18.0 - Life after 18c』Insight Technology, Inc.
 
The Value of Reactive
The Value of ReactiveThe Value of Reactive
The Value of ReactiveVMware Tanzu
 
The Anchor Store: Four Confluence Examples to Root Your Deployment
The Anchor Store: Four Confluence Examples to Root Your DeploymentThe Anchor Store: Four Confluence Examples to Root Your Deployment
The Anchor Store: Four Confluence Examples to Root Your DeploymentAtlassian
 
Webinar Replay: How to Build a $10M SaaS Business Into a $6B Unicorn With MyS...
Webinar Replay: How to Build a $10M SaaS Business Into a $6B Unicorn With MyS...Webinar Replay: How to Build a $10M SaaS Business Into a $6B Unicorn With MyS...
Webinar Replay: How to Build a $10M SaaS Business Into a $6B Unicorn With MyS...Continuent
 
Webinar Slides: High Volume MySQL HA: SaaS Continuous Operations with Terabyt...
Webinar Slides: High Volume MySQL HA: SaaS Continuous Operations with Terabyt...Webinar Slides: High Volume MySQL HA: SaaS Continuous Operations with Terabyt...
Webinar Slides: High Volume MySQL HA: SaaS Continuous Operations with Terabyt...Continuent
 
How To Manage Sites At Scale With Acquia Cohesion and SiteFactory
How To Manage Sites At Scale With Acquia Cohesion and SiteFactoryHow To Manage Sites At Scale With Acquia Cohesion and SiteFactory
How To Manage Sites At Scale With Acquia Cohesion and SiteFactoryAcquia
 
Evolve 2014 experience driven commerce
Evolve 2014 experience driven commerceEvolve 2014 experience driven commerce
Evolve 2014 experience driven commerceElastic Path
 

Similaire à Big Retail Goes Reactive at Walmart (20)

Hadoop and the Relational Database: The Best of Both Worlds
Hadoop and the Relational Database: The Best of Both WorldsHadoop and the Relational Database: The Best of Both Worlds
Hadoop and the Relational Database: The Best of Both Worlds
 
Coll presentation-typesafe-case study-walmart
Coll presentation-typesafe-case study-walmartColl presentation-typesafe-case study-walmart
Coll presentation-typesafe-case study-walmart
 
The Next Generation IT Department MUST HAVE CLOUD
The Next Generation IT Department MUST HAVE CLOUDThe Next Generation IT Department MUST HAVE CLOUD
The Next Generation IT Department MUST HAVE CLOUD
 
Moving existing apps to the cloud
 Moving existing apps to the cloud Moving existing apps to the cloud
Moving existing apps to the cloud
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
 
Successful Scalability Principles - Part 1
Successful Scalability Principles - Part 1Successful Scalability Principles - Part 1
Successful Scalability Principles - Part 1
 
Journey of Implementing Solr at Target: Presented by Raja Ramachandran, Target
Journey of Implementing Solr at Target: Presented by Raja Ramachandran, TargetJourney of Implementing Solr at Target: Presented by Raja Ramachandran, Target
Journey of Implementing Solr at Target: Presented by Raja Ramachandran, Target
 
Fearless From Monolith to Serverless with Dynatrace
Fearless From Monolith to Serverless with DynatraceFearless From Monolith to Serverless with Dynatrace
Fearless From Monolith to Serverless with Dynatrace
 
GraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
GraphQL Munich Meetup #1 - How We Use GraphQL At CommercetoolsGraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
GraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
 
SimplifyStreamingArchitecture
SimplifyStreamingArchitectureSimplifyStreamingArchitecture
SimplifyStreamingArchitecture
 
Become an IT Service Broker
Become an IT Service BrokerBecome an IT Service Broker
Become an IT Service Broker
 
Event-Driven Architecture (EDA)
Event-Driven Architecture (EDA)Event-Driven Architecture (EDA)
Event-Driven Architecture (EDA)
 
[db tech showcase Tokyo 2018] #dbts2018 #B33 『DBA 18.0 - Life after 18c』
[db tech showcase Tokyo 2018] #dbts2018 #B33 『DBA 18.0 - Life after 18c』[db tech showcase Tokyo 2018] #dbts2018 #B33 『DBA 18.0 - Life after 18c』
[db tech showcase Tokyo 2018] #dbts2018 #B33 『DBA 18.0 - Life after 18c』
 
The value of reactive
The value of reactiveThe value of reactive
The value of reactive
 
The Value of Reactive
The Value of ReactiveThe Value of Reactive
The Value of Reactive
 
The Anchor Store: Four Confluence Examples to Root Your Deployment
The Anchor Store: Four Confluence Examples to Root Your DeploymentThe Anchor Store: Four Confluence Examples to Root Your Deployment
The Anchor Store: Four Confluence Examples to Root Your Deployment
 
Webinar Replay: How to Build a $10M SaaS Business Into a $6B Unicorn With MyS...
Webinar Replay: How to Build a $10M SaaS Business Into a $6B Unicorn With MyS...Webinar Replay: How to Build a $10M SaaS Business Into a $6B Unicorn With MyS...
Webinar Replay: How to Build a $10M SaaS Business Into a $6B Unicorn With MyS...
 
Webinar Slides: High Volume MySQL HA: SaaS Continuous Operations with Terabyt...
Webinar Slides: High Volume MySQL HA: SaaS Continuous Operations with Terabyt...Webinar Slides: High Volume MySQL HA: SaaS Continuous Operations with Terabyt...
Webinar Slides: High Volume MySQL HA: SaaS Continuous Operations with Terabyt...
 
How To Manage Sites At Scale With Acquia Cohesion and SiteFactory
How To Manage Sites At Scale With Acquia Cohesion and SiteFactoryHow To Manage Sites At Scale With Acquia Cohesion and SiteFactory
How To Manage Sites At Scale With Acquia Cohesion and SiteFactory
 
Evolve 2014 experience driven commerce
Evolve 2014 experience driven commerceEvolve 2014 experience driven commerce
Evolve 2014 experience driven commerce
 

Plus de Nurun

E-TAIL QA: Approach to E-commerce testing in an Agile environment
E-TAIL QA: Approach to E-commerce testing in an Agile environmentE-TAIL QA: Approach to E-commerce testing in an Agile environment
E-TAIL QA: Approach to E-commerce testing in an Agile environmentNurun
 
The Future of Retail - Business Model Trend Report
The Future of Retail - Business Model Trend ReportThe Future of Retail - Business Model Trend Report
The Future of Retail - Business Model Trend ReportNurun
 
The Future of Retail - Marketing and Merchandising Trend Report
The Future of Retail - Marketing and Merchandising Trend ReportThe Future of Retail - Marketing and Merchandising Trend Report
The Future of Retail - Marketing and Merchandising Trend ReportNurun
 
Objets et Corps Connectés de la Science-Fiction Dans Nos Réalités D’Affaires
Objets et Corps Connectés de la Science-Fiction Dans Nos Réalités D’AffairesObjets et Corps Connectés de la Science-Fiction Dans Nos Réalités D’Affaires
Objets et Corps Connectés de la Science-Fiction Dans Nos Réalités D’AffairesNurun
 
Creating Great Analog Souvenirs for a Digital Era
Creating Great Analog Souvenirs for a Digital EraCreating Great Analog Souvenirs for a Digital Era
Creating Great Analog Souvenirs for a Digital EraNurun
 
TV CONNECTÉE & SECOND ÉCRAN. LE DESIGN PARADOXAL
TV CONNECTÉE & SECOND ÉCRAN. LE DESIGN PARADOXALTV CONNECTÉE & SECOND ÉCRAN. LE DESIGN PARADOXAL
TV CONNECTÉE & SECOND ÉCRAN. LE DESIGN PARADOXALNurun
 
RDV_Media 2012 - Context: A Personalization Engine
RDV_Media 2012 - Context: A Personalization EngineRDV_Media 2012 - Context: A Personalization Engine
RDV_Media 2012 - Context: A Personalization EngineNurun
 
Rethinking online checkout
Rethinking online checkoutRethinking online checkout
Rethinking online checkoutNurun
 
Culture : sur place ou à emporter
Culture : sur place ou à emporterCulture : sur place ou à emporter
Culture : sur place ou à emporterNurun
 
Nurun lab sprint commuting
Nurun lab sprint   commutingNurun lab sprint   commuting
Nurun lab sprint commutingNurun
 
Nurun lab sprint commuting
Nurun lab sprint   commutingNurun lab sprint   commuting
Nurun lab sprint commutingNurun
 
Nurun lab sprint commuting
Nurun lab sprint   commutingNurun lab sprint   commuting
Nurun lab sprint commutingNurun
 
Nurun lab christmas sprint
Nurun lab   christmas sprintNurun lab   christmas sprint
Nurun lab christmas sprintNurun
 
L'avènement de nouveaux systèmes créatifs
L'avènement de nouveaux systèmes créatifsL'avènement de nouveaux systèmes créatifs
L'avènement de nouveaux systèmes créatifsNurun
 
Nurun Lab Insights - Television
Nurun Lab Insights - TelevisionNurun Lab Insights - Television
Nurun Lab Insights - TelevisionNurun
 
Nurun google+ overview
Nurun google+ overviewNurun google+ overview
Nurun google+ overviewNurun
 
Media in Canada
Media in CanadaMedia in Canada
Media in CanadaNurun
 
Avant de vous lancer dans la jungle électronique : évaluez la pertinence des ...
Avant de vous lancer dans la jungle électronique : évaluez la pertinence des ...Avant de vous lancer dans la jungle électronique : évaluez la pertinence des ...
Avant de vous lancer dans la jungle électronique : évaluez la pertinence des ...Nurun
 
Social Media Trends
Social Media TrendsSocial Media Trends
Social Media TrendsNurun
 
Brand Content Digital
Brand Content DigitalBrand Content Digital
Brand Content DigitalNurun
 

Plus de Nurun (20)

E-TAIL QA: Approach to E-commerce testing in an Agile environment
E-TAIL QA: Approach to E-commerce testing in an Agile environmentE-TAIL QA: Approach to E-commerce testing in an Agile environment
E-TAIL QA: Approach to E-commerce testing in an Agile environment
 
The Future of Retail - Business Model Trend Report
The Future of Retail - Business Model Trend ReportThe Future of Retail - Business Model Trend Report
The Future of Retail - Business Model Trend Report
 
The Future of Retail - Marketing and Merchandising Trend Report
The Future of Retail - Marketing and Merchandising Trend ReportThe Future of Retail - Marketing and Merchandising Trend Report
The Future of Retail - Marketing and Merchandising Trend Report
 
Objets et Corps Connectés de la Science-Fiction Dans Nos Réalités D’Affaires
Objets et Corps Connectés de la Science-Fiction Dans Nos Réalités D’AffairesObjets et Corps Connectés de la Science-Fiction Dans Nos Réalités D’Affaires
Objets et Corps Connectés de la Science-Fiction Dans Nos Réalités D’Affaires
 
Creating Great Analog Souvenirs for a Digital Era
Creating Great Analog Souvenirs for a Digital EraCreating Great Analog Souvenirs for a Digital Era
Creating Great Analog Souvenirs for a Digital Era
 
TV CONNECTÉE & SECOND ÉCRAN. LE DESIGN PARADOXAL
TV CONNECTÉE & SECOND ÉCRAN. LE DESIGN PARADOXALTV CONNECTÉE & SECOND ÉCRAN. LE DESIGN PARADOXAL
TV CONNECTÉE & SECOND ÉCRAN. LE DESIGN PARADOXAL
 
RDV_Media 2012 - Context: A Personalization Engine
RDV_Media 2012 - Context: A Personalization EngineRDV_Media 2012 - Context: A Personalization Engine
RDV_Media 2012 - Context: A Personalization Engine
 
Rethinking online checkout
Rethinking online checkoutRethinking online checkout
Rethinking online checkout
 
Culture : sur place ou à emporter
Culture : sur place ou à emporterCulture : sur place ou à emporter
Culture : sur place ou à emporter
 
Nurun lab sprint commuting
Nurun lab sprint   commutingNurun lab sprint   commuting
Nurun lab sprint commuting
 
Nurun lab sprint commuting
Nurun lab sprint   commutingNurun lab sprint   commuting
Nurun lab sprint commuting
 
Nurun lab sprint commuting
Nurun lab sprint   commutingNurun lab sprint   commuting
Nurun lab sprint commuting
 
Nurun lab christmas sprint
Nurun lab   christmas sprintNurun lab   christmas sprint
Nurun lab christmas sprint
 
L'avènement de nouveaux systèmes créatifs
L'avènement de nouveaux systèmes créatifsL'avènement de nouveaux systèmes créatifs
L'avènement de nouveaux systèmes créatifs
 
Nurun Lab Insights - Television
Nurun Lab Insights - TelevisionNurun Lab Insights - Television
Nurun Lab Insights - Television
 
Nurun google+ overview
Nurun google+ overviewNurun google+ overview
Nurun google+ overview
 
Media in Canada
Media in CanadaMedia in Canada
Media in Canada
 
Avant de vous lancer dans la jungle électronique : évaluez la pertinence des ...
Avant de vous lancer dans la jungle électronique : évaluez la pertinence des ...Avant de vous lancer dans la jungle électronique : évaluez la pertinence des ...
Avant de vous lancer dans la jungle électronique : évaluez la pertinence des ...
 
Social Media Trends
Social Media TrendsSocial Media Trends
Social Media Trends
 
Brand Content Digital
Brand Content DigitalBrand Content Digital
Brand Content Digital
 

Dernier

The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)codyslingerland1
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveIES VE
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2DianaGray10
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxNeo4j
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTopCSSGallery
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingMAGNIntelligence
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInThousandEyes
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FESTBillieHyde
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)IES VE
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024Brian Pichman
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl
 
Flow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First FrameFlow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First FrameKapil Thakar
 
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Alkin Tezuysal
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1DianaGray10
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsDianaGray10
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 

Dernier (20)

The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)The New Cloud World Order Is FinOps (Slideshow)
The New Cloud World Order Is FinOps (Slideshow)
 
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES LiveKeep Your Finger on the Pulse of Your Building's Performance with IES Live
Keep Your Finger on the Pulse of Your Building's Performance with IES Live
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptxEmil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
Emil Eifrem at GraphSummit Copenhagen 2024 - The Art of the Possible.pptx
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development Companies
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced Computing
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FEST
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)
 
SheDev 2024
SheDev 2024SheDev 2024
SheDev 2024
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024
 
Planetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile BrochurePlanetek Italia Srl - Corporate Profile Brochure
Planetek Italia Srl - Corporate Profile Brochure
 
Flow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First FrameFlow Control | Block Size | ST Min | First Frame
Flow Control | Block Size | ST Min | First Frame
 
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
Design and Modeling for MySQL SCALE 21X Pasadena, CA Mar 2024
 
UiPath Studio Web workshop series - Day 1
UiPath Studio Web workshop series  - Day 1UiPath Studio Web workshop series  - Day 1
UiPath Studio Web workshop series - Day 1
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projects
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 

Big Retail Goes Reactive at Walmart

  • 1. Reactive Retail Big Retail Goes Reactive at Walmart NOVEMBER 2014 REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 2. Agenda Introduction Walmart.ca re-architecture Move to Functional Programming Technical Tips & Features Experiences and Impressions Outlook Q&A REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 3. About Nurun AREAS OF EXPERTISE REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART 12 San Francisco Atlanta Nancy Shanghai Quebec Turin Montreal Paris Milan Toronto Chicoutimi Madrid 1,200+ Employees 14 Years In Business Retail Automotive Financial Services Media & Entertainment Fashion & Beauty Utilities Government Telecommunications Travel & Hospitality Health & Pharma 3 We are a global design & technology consultancy with 12 offices worldwide.
  • 4. Introduction REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 5. Introduction TYPICAL LARGE ECOMMERCE ENVIRONMENTS CDN JSPs E-Commerce Platform RDBMS Product content management REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 6. Introduction TYPICAL LARGE ECOMMERCE ENVIRONMENTS CDN JSPs E-Commerce Platform Search & REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART merchandizing RDBMS Product content management
  • 7. Introduction INCUMBENT PLATFORM • ATG, Oracle • Fairly monolithic • Rapidly evolving merchandising needs REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 8. Introduction INCUMBENT PLATFORM • ATG, Oracle • Fairly monolithic • Rapidly evolving merchandising needs REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 9. Introduction INCUMBENT PLATFORM • ATG, Oracle • Fairly monolithic • Rapidly evolving merchandising needs • Scalability issues REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 10. Retail priorities EFFICIENT & SCALABLE Need to handle large volumes RESILIENT Downtime is expensive FLEXIBLE & MAINTAINABLE Business requirements change REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 11. Need to go Reactive to be … RESPONSIVE Customer experience, brand promise RESILIENT Handle failure at multiple levels ELASTIC Handle traffic spikes (without breaking the bank) MESSAGE-DRIVEN Enable all of the above REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 12. Walmart.ca Re-architecture REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 13. Walmart.ca re-architecture JSPs ATG Oracle Product content management REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 14. Walmart.ca re-architecture REST API JSPs ATG Oracle REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART REST API Endeca search & merchandizing Product content management
  • 15. Walmart.ca re-architecture JSPs ATG Oracle REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART REST API Endeca search & merchandizing Akka, Redis Product content management
  • 16. Walmart.ca re-architecture JSPs ATG Oracle REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART JSON REST API Endeca search & merchandizing Play Akka, Redis Product content management
  • 17. Walmart.ca re-architecture JSON REST API ATG Oracle REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART JSON REST API Endeca search & merchandizing Play Akka, Redis Product content management
  • 18. Walmart.ca re-architecture REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART No. 1 +20% Canada’s first responsively designed e-commerce site for a big box retailer +98% Increase in conversion in the first 4 weeks after launch Increase in mobile orders -36% Decrease in average page load time Awarded BEST E-COMMERCE SITE in large retailers by Retail Council of Canada
  • 19. Walmart.ca re-architecture REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART No. 1 +20% Canada’s first responsively designed e-commerce site for a big box retailer +98% Increase in conversion in the first 4 weeks after launch Increase in mobile orders -36% Decrease in average page load time NO SYSTEM OUTAGES! Awarded BEST E-COMMERCE SITE in large retailers by Retail Council of Canada
  • 20. Move to Functional Programming REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 21. Move to Functional Programming ● Majority of the team are developers with a Java background ● Play provides an easy entry path to Scala / Reactive / Functional: § Based on familiar MVC patterns § Can start with Java style, mutation, blocking § Incrementally transition to Scala style, immutable, non-blocking REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 22. Move to Functional Programming 1. No nulls (use Option) 2. No vars, mutable state* 3. Use higher-order functions (map, flatMap, filter, for-yield, etc.) 4. Business logic should be side-effect free (testability!) 5. Create and use strong types REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART *unless well justified (e.g. much clearer), and as small a scope as possible
  • 23. Move to Functional Programming ● Code should be a clear and concise as possible ● Types should be express intent and fit tightly REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 24. Move to Functional Programming: Strong Types sealed trait Language case object English extends Language case object French extends Language def formatPrice(price: Price, lang: Language) = lang match { case English => … case French => … REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART } implicit val binder = new PathBindable[Language] { … }
  • 25. Technical Tips & Features REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 26. Tips & Features: Caching Futures (on-heap) ● Several concurrent requests for same data ● Whoever requests first initiates the Future (Promise) ● No locking required (narrow window between first request and when Future is cached) REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 27. Tips & Features: Handling JSON P lay Application Makes Heavy Use of JSON • Consumes JSON view advice from Endeca • Proxy & augment JSON data for web service calls REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 28. Tips & Features: Play JSON macro Consuming JSON (e.g. Endeca cartridges) case class Product(id: Long, name: String, …) object Product { implicit val formats = Json.format[Product] REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART } Json.toJson(product) productJson.asOpt[Product]
  • 29. Tips & Features: ‘Almost Default’ Reads/Writes OPEN CHALLENGE Sometime we want an ‘almost default’ Reads/Writes • e.g. use a default • Read/write a few fields in a particular way • e.g. format two dates in different ways • (Could Shapeless case class generics macro help?) REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 30. Tips & Features: Proxying and Augmenting JSON Proxying JSON (e.g. most web services) • Might want to augment a JSON response • Don’t need to care about knowing the entire structure • Play JSON transformers • play-json-zipper can be helpful (github: mandubian) REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 31. Tips & Features: Dependency Injection CONTROLLER DEPENDENCIES (SERVICES) • Use structural types for DI at the controller level • Create a services module for each request • Want access to request header (logging) REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 32. Tips & Features: Dependency Injection THREADLOCAL • Inject dependencies in Global.getControllerInstance • Initialize services module in Global.onRouteRequest, add to ThreadLocal • Pick up this value in the getControllerInstance and provide it to our controller REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 33. Tips & Features: Monadic Rendering Page Model • Template • Zones • Cartridges REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 34. Rendering View Advice: Templates & Zones The business user selects a template: • Determines the page layout • Each template has ~12 zones REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 35. Rendering View Advice: Cartridges … adds cartridges to the zones: • ~100 cartridges REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART ProductImage ProductDescription ProductPurchase
  • 36. Rendering View Advice: Whole Page • Endeca fills in data (product info) • Play renders the cartridge as HTML REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 37. Rendering View Advice: JSON to Visual Page • Tmpl1 • Header • Car1 • Car2 • LeftNav • Car3 • MainContent • Car4 • Car5 • Car6 REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 38. Rendering View Advice: JSON to HTML • Tmpl1 • Header • Car1 • Car2 • LeftNav • Car3 • MainContent • Car4 • Car5 • Car6 REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART <body>! <div class=“header”>! ! !…! </div>! <div class=“leftNav”>! ! !…! </div>! !<div class=“main”>! ! !…! </div>! </body>!
  • 39. Rendering View Advice: Auxiliary Information • Tmpl1 • Header • Car1 • Car2 • LeftNav • Car3 • MainContent • Car4 • Car5 • Car6 REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART <head>! ! </head>! <body>! <div class=“header”>! ! !…! </div>! <div class=“leftNav”>! ! !…! </div>! !<div class=“main”>! ! !…! </div>! ! ! </body>!
  • 40. Rendering View Advice: Auxiliary Information • Tmpl1 • Header • Car1 • Car2 • LeftNav • Car3 • MainContent • Car4 • Car5 • Car6 REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART <head>! ! </head>! <body>! <div class=“header”>! ! !…! </div>! <div class=“leftNav”>! ! !…! </div>! !<div class=“main”>! ! !…! </div>! ! ! </body>! CSS / JavaScript / RJS modules
  • 41. Rendering View Advice: Auxiliary Information • Tmpl1 • Header • Car1 • Car2 • LeftNav • Car3 • MainContent • Car4 • Car5 • Car6 REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART <head>! ! </head>! <body>! <div class=“header”>! ! !…! </div>! <div class=“leftNav”>! ! !…! </div>! !<div class=“main”>! ! !…! </div>! ! ! </body>! CSS / JavaScript / RJS modules JavaScript / RJS modules
  • 42. Rendering View Advice: Auxiliary Information • Tmpl1 • Header • Car1 • Car2 • LeftNav • Car3 • MainContent • Car4 • Car5 • Car6 REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART <head>! ! </head>! <body>! <div class=“header”>! ! !…! </div>! <div class=“leftNav”>! ! !…! </div>! !<div class=“main”>! ! !…! </div>! ! ! </body>! CSS / JavaScript / RJS modules JavaScript / RJS modules Cache control
  • 43. Monadic Rendering: ValidatedBuilder Monad ValidatedBuilder[X] • “Parse/process” X • ≅ Future[(X, Boolean, Resources)] • Error flag: • Determine if page should be cached • Front-end resources • CSS • RequireJS modules • JavaScript snippets (+ page location requirements) REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 44. Monadic Rendering: ValidatedBuilder Monad ValidatedBuilder[X] • map and flatMap handle combining and propagating validity and front-end resources • Code focuses on the essential task (JSON -> HTML) without clutter • Error prone ‘plumbing’ is handled by the monad abstraction REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 45. Monadic Rendering: ValidatedBuilder Zone v al headerContent: VB[Seq[Cartridge]] = (viewAdvice “header”) .as[Seq[JsValue]] // Seq[JsValue] .map(Cartridge.parse) // Seq[VB[Cartridge]] .vbSeq // VB[Seq[Cartridge]] REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 46. Monadic Rendering: ValidatedBuilder Template val template: VB[Template] = for { header <- headerContent : VB[Seq[Cartridge]] leftNav <- leftNavContent … templateResult <- CayenneTemplate(header, leftNav, …) } yield templateResult REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 47. Monadic Rendering: ValidatedBuilder Page for { content <- template.contents : Future[Template] resources <- template.resources : Future[Resources] isCacheable <- template.isValid : Future[Boolean] yield { val result = template.render(resources) if (isCacheable) result else result.withHeaders(noCache: _*) REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART }
  • 48. Tips & Features: Dynamic Configuration • Ops can make on the fly configuration changes • Enable/disable services and site features • Change endpoints REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 49. Tips & Features: Dynamic Configuration • Sends configuration delta to Play (JSON object) • Play verifies the change (initialize services module) • Each request sees a snapshot of the configuration • Uses standard Play HOCON API REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 50. Experience and Impressions REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 51. Experience and Impressions ● Never need to say “no” to a client due to technical limitations, ● Heavily concurrency / parallelism, with very little headaches, ● Aggressive refactorings are surprisingly easy (thank you strong types). REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 52. Outlook REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 53. Outlook NEW BREED OF PRODUCTS Reactive core REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 54. Outlook NEW BREED OF PRODUCTS Reactive core Middleware REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 55. Outlook NEW BREED OF PRODUCTS Reactive core Middleware Omnichannel CE REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 56. Outlook NEW BREED OF PRODUCTS Reactive core Middleware Omnichannel CE Streaming big data Machine intelligence REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 57. Outlook NEW BREED OF PRODUCTS Reactive core Middleware Omnichannel CE Streaming big data Machine intelligence CMS REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 58. Outlook NEW BREED OF PRODUCTS Reactive core Middleware Omnichannel CE Streaming big data Machine intelligence CMS BAAS REsponsiveSS REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 59. Outlook NEW BREED OF PRODUCTS Reactive core Middleware Omnichannel CE Streaming big data Machine intelligence CMS BAAS REsponsiveSS In store tech, IoT… REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART
  • 60. Q & A Ankur Mathur @anchormath Dana Harrington @danagharrington https://github.com/dana-harrington REACTIVE RETAIL BIG RETAIL GOES REACTIVE AT WALMART