SlideShare a Scribd company logo
1 of 28
Jason Wilson & David Von Lehman
PRESENTING
AWS and the Nordstrom Data Lab
Recommendo Overview
• REST-ful product recommendations API
• Live on nordstrom.com in November
• Service emails live in January
• Lives in the AWS cloud – Elastic Beanstalk,
DynamoDB, node.js
• 3rd party rec vendors don’t tap into what is
unique about Nordstrom or fashion
By the Numbers
• Over 4 billion recommendations served
• >3 million API hits per day
• 105 days between first commit and go-live (Aug 6
and Nov 19 respectively)
• 5 servers with auto-scaling to 20 (turns out we don’t
need them)
• 90ms average request latency
50/50 test against
incumbent vendor
How We Built It
• Continuous integration and deployment from
the first week
• 90+ percent code coverage
• Fewer moving parts == less to monitor, fewer
ways for things to go wrong
• Fully PaaS based to minimize sys admin
responsibilities
• How can we support this ourselves without
carrying pagers?
DynamoDB
• Fully managed NoSQL database-as-a-service
• Web API with SDK support for Python, Ruby, node.js,
.NET, and Java
• High performance queries, backed by SSD
• Maintains predictable performance for data at any
size through horizontal scale out
• Auto replication across 3 availability zones
• Need to understand data access patterns up front
• Pay for only what you use/need – both storage and
R/W throughput
• JavaScript on the server atop the Google V8 engine
• Asynchronous event loop makes it ideal for real-time
data intensive applications
• Vibrant open-source community around excellent
npm package manager (50K+ packages)
• Seeing increased adoption in enterprises including
Wal-Mart, LinkedIn, PayPal, Dow Jones, Microsoft,
New York Times
JavaScript – Learn to Love It
• No type checking, don’t find
errors until runtime
• Not classical OO
• var keyword
• Callback hell
• Server debugging too hard
• But wait..
• Chrome and V8
• Dynamic can be your friend
• npm!
• express, async, mocha
AWS Components
• EC2 – Provides web-scale computing as a
service.
• ELB – elastic load balancer. Routes incoming
traffic to ec2 instances, scales up to meet
demand.
• Auto-scaling group – a logical collection of EC2
instances behind an ELB
AWS Components
Elastic Beanstalk
• AWS PaaS – lightweight abstraction layer atop EC2/ELB with
no additional costs
• More transparent than Azure or Heroku
• Supports Java, .NET, Python, Node.js, PHP, and Ruby
• git push deployment
• Auto-scaling group with custom triggers and auto applied
config
• Possible to configure the AMI including yum packages,
environment variables, and more
• Supports custom AMIs
• Automated health checks
Continuous Deployment
git push
to dev
branch
Jenkins
CI
unit
tests
git push
to EB
git pull
dev
git
checkout
master
git merge
dev
git push
master
Jenkins
CI
unit tests
git push
to EB
(prod)
Development
Production
Performance testing
• Initial performance was poor.
• Disable DNS caching when load testing against
ELB.
• Pre-warm ELB for higher upfront throughput
• jmeter-ec2, bees with machine guns
Early Perf results – YIKES!Transactions
per second
Response
time (seconds)
Performance tuning
• New relic, Nodetime
– Real-time performance monitoring of node
runtime
• node-mem-watch
– Evented inspection of heap, gc events, leak
events, and heap diffing
• ssh into instances
Real Performance
• Pleasantly surprised 
• Average latency ~90ms
• Dynamo response times <10ms
• Handful of auto-scaling up and back events
• One outage due to bad exception handling
400%
64%
DynamoDB
Lessons Learned / Pitfalls
• True zero downtime deployment is difficult to
achieve
• Thoroughly explore the Elastic Beanstalk
configuration options
• Catch those errors – a rogue unhandled
exception can bring it all down
• Health checks that actually do something
• Out of the box monitoring is pretty good
Harness the Cloud
On-Premise IaaS PaaS
% time
infrastructure experience
Logging Monitoring
Redundancy
Deployment
Automation
High-
Availability
Scalability
Iterative
Development
Build to
Experiment
Evolutionary
Architecture
Change
Tolerant
Frequent
Releases
Small
Teams
Agility vs. Industrial Strength
Security
PaaS Venn Diagram
Robust
Systems
Rapid
Delivery
Platypus
as a
Service
Recommendo 2.0
• Sku based recommendations – size!
• Truly personalized recs based on individual browse
and purchase history
DynamoDB
Batch
Recs
Real-
Time
Refiner
y
ScorerIngester Redis
Streams
Additional AWS Services
• Elasticache and Redis
• Elastic Beanstalk worker tiers
• SQS
• S3
Wrap-Up
• Recommendo – initial success, now building upon what we
have learned
• Node.js + DynamoDB + Elastic Beanstalk is a winning
combination
• Possible to out-perform an incumbent vendor solution in a
competitive differentiating capability
• Cloud and PaaS enable small teams to move quick and deliver
solid production caliber systems
• Incremental cost of “gold plating” steadily shrinking
• Your company benefits when percent of resources devoted to
core competency is maximized
Thank you
• Questions / comments?
• @davidvlsea
• ds@nordstrom.com

More Related Content

What's hot

JPA 2.1 on Payara Server
JPA 2.1 on Payara ServerJPA 2.1 on Payara Server
JPA 2.1 on Payara ServerPayara
 
Gradual migration to MicroProfile
Gradual migration to MicroProfileGradual migration to MicroProfile
Gradual migration to MicroProfileRudy De Busscher
 
Microservice - All is Small, All is Well?
Microservice - All is Small, All is Well?Microservice - All is Small, All is Well?
Microservice - All is Small, All is Well?Eberhard Wolff
 
Signal r azurepresentation
Signal r azurepresentationSignal r azurepresentation
Signal r azurepresentationJustin Wendlandt
 
Intro to OpenStack - Scott Sanchez and Niki Acosta
Intro to OpenStack - Scott Sanchez and Niki AcostaIntro to OpenStack - Scott Sanchez and Niki Acosta
Intro to OpenStack - Scott Sanchez and Niki AcostaScott Sanchez
 
Micro Services - Small is Beautiful
Micro Services - Small is BeautifulMicro Services - Small is Beautiful
Micro Services - Small is BeautifulEberhard Wolff
 
Microservices Journey Summer 2017
Microservices Journey Summer 2017Microservices Journey Summer 2017
Microservices Journey Summer 2017Christian Posta
 
Solving trust issues at scale
Solving trust issues at scaleSolving trust issues at scale
Solving trust issues at scaleSoluto
 
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...NCCOMMS
 
LONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentationLONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentationSriram Angajala
 
Managing the Infrastructure Stack with PowerShell
Managing the Infrastructure Stack with PowerShellManaging the Infrastructure Stack with PowerShell
Managing the Infrastructure Stack with PowerShellJosh Atwell
 
Global Azure Bootcamp 2016 - Azure Automation Invades Your Data Centre
Global Azure Bootcamp 2016 - Azure Automation Invades Your Data CentreGlobal Azure Bootcamp 2016 - Azure Automation Invades Your Data Centre
Global Azure Bootcamp 2016 - Azure Automation Invades Your Data Centrekieranjacobsen
 
Monolithic to Microservices Migration Journey of iyzico with Spring Cloud
Monolithic to Microservices Migration Journey of iyzico with Spring CloudMonolithic to Microservices Migration Journey of iyzico with Spring Cloud
Monolithic to Microservices Migration Journey of iyzico with Spring CloudMustafa Can Tekir
 
QCon New York 2014 - Scalable, Reliable Analytics Infrastructure at KIXEYE
QCon New York 2014 - Scalable, Reliable Analytics Infrastructure at KIXEYEQCon New York 2014 - Scalable, Reliable Analytics Infrastructure at KIXEYE
QCon New York 2014 - Scalable, Reliable Analytics Infrastructure at KIXEYERandy Shoup
 
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
The Hardest Part of Microservices: Your Data - Christian Posta, Red HatThe Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
The Hardest Part of Microservices: Your Data - Christian Posta, Red HatAmbassador Labs
 
Palringo : a startup's journey from a data center to the cloud
Palringo : a startup's journey from a data center to the cloudPalringo : a startup's journey from a data center to the cloud
Palringo : a startup's journey from a data center to the cloudPhilipBasford
 
Monolithic to microservices migration journey with spring cloud
Monolithic to microservices migration journey with spring cloudMonolithic to microservices migration journey with spring cloud
Monolithic to microservices migration journey with spring cloudzeynelkocak
 
We don't need consensus: All agreed?
We don't need consensus: All agreed?We don't need consensus: All agreed?
We don't need consensus: All agreed?Weaveworks
 
Developing Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring CloudDeveloping Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring CloudDustin Ruehle
 

What's hot (20)

JPA 2.1 on Payara Server
JPA 2.1 on Payara ServerJPA 2.1 on Payara Server
JPA 2.1 on Payara Server
 
Gradual migration to MicroProfile
Gradual migration to MicroProfileGradual migration to MicroProfile
Gradual migration to MicroProfile
 
Microservice - All is Small, All is Well?
Microservice - All is Small, All is Well?Microservice - All is Small, All is Well?
Microservice - All is Small, All is Well?
 
Signal r azurepresentation
Signal r azurepresentationSignal r azurepresentation
Signal r azurepresentation
 
Intro to OpenStack - Scott Sanchez and Niki Acosta
Intro to OpenStack - Scott Sanchez and Niki AcostaIntro to OpenStack - Scott Sanchez and Niki Acosta
Intro to OpenStack - Scott Sanchez and Niki Acosta
 
Micro Services - Small is Beautiful
Micro Services - Small is BeautifulMicro Services - Small is Beautiful
Micro Services - Small is Beautiful
 
Microservices Journey Summer 2017
Microservices Journey Summer 2017Microservices Journey Summer 2017
Microservices Journey Summer 2017
 
SOA to Microservices
SOA to MicroservicesSOA to Microservices
SOA to Microservices
 
Solving trust issues at scale
Solving trust issues at scaleSolving trust issues at scale
Solving trust issues at scale
 
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
O365Con19 - Things I've Learned While Building a Product on SharePoint Modern...
 
LONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentationLONDON SDET MEETUP - Difference between Selenium and Cypress presentation
LONDON SDET MEETUP - Difference between Selenium and Cypress presentation
 
Managing the Infrastructure Stack with PowerShell
Managing the Infrastructure Stack with PowerShellManaging the Infrastructure Stack with PowerShell
Managing the Infrastructure Stack with PowerShell
 
Global Azure Bootcamp 2016 - Azure Automation Invades Your Data Centre
Global Azure Bootcamp 2016 - Azure Automation Invades Your Data CentreGlobal Azure Bootcamp 2016 - Azure Automation Invades Your Data Centre
Global Azure Bootcamp 2016 - Azure Automation Invades Your Data Centre
 
Monolithic to Microservices Migration Journey of iyzico with Spring Cloud
Monolithic to Microservices Migration Journey of iyzico with Spring CloudMonolithic to Microservices Migration Journey of iyzico with Spring Cloud
Monolithic to Microservices Migration Journey of iyzico with Spring Cloud
 
QCon New York 2014 - Scalable, Reliable Analytics Infrastructure at KIXEYE
QCon New York 2014 - Scalable, Reliable Analytics Infrastructure at KIXEYEQCon New York 2014 - Scalable, Reliable Analytics Infrastructure at KIXEYE
QCon New York 2014 - Scalable, Reliable Analytics Infrastructure at KIXEYE
 
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
The Hardest Part of Microservices: Your Data - Christian Posta, Red HatThe Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
 
Palringo : a startup's journey from a data center to the cloud
Palringo : a startup's journey from a data center to the cloudPalringo : a startup's journey from a data center to the cloud
Palringo : a startup's journey from a data center to the cloud
 
Monolithic to microservices migration journey with spring cloud
Monolithic to microservices migration journey with spring cloudMonolithic to microservices migration journey with spring cloud
Monolithic to microservices migration journey with spring cloud
 
We don't need consensus: All agreed?
We don't need consensus: All agreed?We don't need consensus: All agreed?
We don't need consensus: All agreed?
 
Developing Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring CloudDeveloping Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring Cloud
 

Similar to AWS and the Nordstrom Data Lab Presentation on Building a RESTful Product Recommendations API

Agile infrastructure
Agile infrastructureAgile infrastructure
Agile infrastructureTarun Rajput
 
Aws webcast - Scaling on AWS 13 08-20
Aws webcast - Scaling on AWS 13 08-20Aws webcast - Scaling on AWS 13 08-20
Aws webcast - Scaling on AWS 13 08-20Amazon Web Services
 
Intro to AWS: EC2 & Compute Services
Intro to AWS: EC2 & Compute ServicesIntro to AWS: EC2 & Compute Services
Intro to AWS: EC2 & Compute ServicesAmazon Web Services
 
ENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million UsersENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million UsersAmazon Web Services
 
ENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million UsersENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million UsersAmazon Web Services
 
ENT309 scaling up to your first 10 million users
ENT309 scaling up to your first 10 million usersENT309 scaling up to your first 10 million users
ENT309 scaling up to your first 10 million usersAmazon Web Services
 
2016-06 - Design your api management strategy - AWS - Microservices on AWS
2016-06 - Design your api management strategy - AWS - Microservices on AWS2016-06 - Design your api management strategy - AWS - Microservices on AWS
2016-06 - Design your api management strategy - AWS - Microservices on AWSSmartWave
 
AWS re:Invent 2016: The State of Serverless Computing (SVR311)
AWS re:Invent 2016: The State of Serverless Computing (SVR311)AWS re:Invent 2016: The State of Serverless Computing (SVR311)
AWS re:Invent 2016: The State of Serverless Computing (SVR311)Amazon Web Services
 
Scaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million UsersScaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million UsersAmazon Web Services
 
AWS for the Java Developer
AWS for the Java DeveloperAWS for the Java Developer
AWS for the Java DeveloperRory Preddy
 
Intro to AWS: Amazon EC2 and Compute Services
Intro to AWS: Amazon EC2 and Compute ServicesIntro to AWS: Amazon EC2 and Compute Services
Intro to AWS: Amazon EC2 and Compute ServicesAmazon Web Services
 
AWS Lambda support for AWS X-Ray
AWS Lambda support for AWS X-RayAWS Lambda support for AWS X-Ray
AWS Lambda support for AWS X-RayEitan Sela
 
Intro to AWS: Amazon EC2 and Compute Services
Intro to AWS: Amazon EC2 and Compute ServicesIntro to AWS: Amazon EC2 and Compute Services
Intro to AWS: Amazon EC2 and Compute ServicesAmazon Web Services
 
Scaling up to Your First 10 Million Users
Scaling up to Your First 10 Million UsersScaling up to Your First 10 Million Users
Scaling up to Your First 10 Million UsersAmazon Web Services
 
AWS January 2016 Webinar Series - Getting Started with Big Data on AWS
AWS January 2016 Webinar Series - Getting Started with Big Data on AWSAWS January 2016 Webinar Series - Getting Started with Big Data on AWS
AWS January 2016 Webinar Series - Getting Started with Big Data on AWSAmazon Web Services
 
How Applications Manager helps with application performance monitoring
How Applications Manager helps with application performance monitoringHow Applications Manager helps with application performance monitoring
How Applications Manager helps with application performance monitoringManageEngine, Zoho Corporation
 
AWS Summit London 2014 | Scaling on AWS for the First 10 Million Users (200)
AWS Summit London 2014 | Scaling on AWS for the First 10 Million Users (200)AWS Summit London 2014 | Scaling on AWS for the First 10 Million Users (200)
AWS Summit London 2014 | Scaling on AWS for the First 10 Million Users (200)Amazon Web Services
 
Moving to the Cloud: AWS, Zend, RightScale
Moving to the Cloud: AWS, Zend, RightScaleMoving to the Cloud: AWS, Zend, RightScale
Moving to the Cloud: AWS, Zend, RightScalemmoline
 

Similar to AWS and the Nordstrom Data Lab Presentation on Building a RESTful Product Recommendations API (20)

Agile infrastructure
Agile infrastructureAgile infrastructure
Agile infrastructure
 
Aws webcast - Scaling on AWS 13 08-20
Aws webcast - Scaling on AWS 13 08-20Aws webcast - Scaling on AWS 13 08-20
Aws webcast - Scaling on AWS 13 08-20
 
Intro to AWS: EC2 & Compute Services
Intro to AWS: EC2 & Compute ServicesIntro to AWS: EC2 & Compute Services
Intro to AWS: EC2 & Compute Services
 
ENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million UsersENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million Users
 
ENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million UsersENT309 Scaling Up to Your First 10 Million Users
ENT309 Scaling Up to Your First 10 Million Users
 
ENT309 scaling up to your first 10 million users
ENT309 scaling up to your first 10 million usersENT309 scaling up to your first 10 million users
ENT309 scaling up to your first 10 million users
 
2016-06 - Design your api management strategy - AWS - Microservices on AWS
2016-06 - Design your api management strategy - AWS - Microservices on AWS2016-06 - Design your api management strategy - AWS - Microservices on AWS
2016-06 - Design your api management strategy - AWS - Microservices on AWS
 
AWS re:Invent 2016: The State of Serverless Computing (SVR311)
AWS re:Invent 2016: The State of Serverless Computing (SVR311)AWS re:Invent 2016: The State of Serverless Computing (SVR311)
AWS re:Invent 2016: The State of Serverless Computing (SVR311)
 
Scaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million UsersScaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million Users
 
AWS for the Java Developer
AWS for the Java DeveloperAWS for the Java Developer
AWS for the Java Developer
 
Intro to AWS: Amazon EC2 and Compute Services
Intro to AWS: Amazon EC2 and Compute ServicesIntro to AWS: Amazon EC2 and Compute Services
Intro to AWS: Amazon EC2 and Compute Services
 
AWS Lambda support for AWS X-Ray
AWS Lambda support for AWS X-RayAWS Lambda support for AWS X-Ray
AWS Lambda support for AWS X-Ray
 
Intro to AWS: Amazon EC2 and Compute Services
Intro to AWS: Amazon EC2 and Compute ServicesIntro to AWS: Amazon EC2 and Compute Services
Intro to AWS: Amazon EC2 and Compute Services
 
Scaling up to Your First 10 Million Users
Scaling up to Your First 10 Million UsersScaling up to Your First 10 Million Users
Scaling up to Your First 10 Million Users
 
AWS January 2016 Webinar Series - Getting Started with Big Data on AWS
AWS January 2016 Webinar Series - Getting Started with Big Data on AWSAWS January 2016 Webinar Series - Getting Started with Big Data on AWS
AWS January 2016 Webinar Series - Getting Started with Big Data on AWS
 
Create cloud service on AWS
Create cloud service on AWSCreate cloud service on AWS
Create cloud service on AWS
 
Mini-Training: Netflix Simian Army
Mini-Training: Netflix Simian ArmyMini-Training: Netflix Simian Army
Mini-Training: Netflix Simian Army
 
How Applications Manager helps with application performance monitoring
How Applications Manager helps with application performance monitoringHow Applications Manager helps with application performance monitoring
How Applications Manager helps with application performance monitoring
 
AWS Summit London 2014 | Scaling on AWS for the First 10 Million Users (200)
AWS Summit London 2014 | Scaling on AWS for the First 10 Million Users (200)AWS Summit London 2014 | Scaling on AWS for the First 10 Million Users (200)
AWS Summit London 2014 | Scaling on AWS for the First 10 Million Users (200)
 
Moving to the Cloud: AWS, Zend, RightScale
Moving to the Cloud: AWS, Zend, RightScaleMoving to the Cloud: AWS, Zend, RightScale
Moving to the Cloud: AWS, Zend, RightScale
 

Recently uploaded

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Recently uploaded (20)

Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

AWS and the Nordstrom Data Lab Presentation on Building a RESTful Product Recommendations API

  • 1. Jason Wilson & David Von Lehman PRESENTING AWS and the Nordstrom Data Lab
  • 2. Recommendo Overview • REST-ful product recommendations API • Live on nordstrom.com in November • Service emails live in January • Lives in the AWS cloud – Elastic Beanstalk, DynamoDB, node.js • 3rd party rec vendors don’t tap into what is unique about Nordstrom or fashion
  • 3. By the Numbers • Over 4 billion recommendations served • >3 million API hits per day • 105 days between first commit and go-live (Aug 6 and Nov 19 respectively) • 5 servers with auto-scaling to 20 (turns out we don’t need them) • 90ms average request latency
  • 5. How We Built It • Continuous integration and deployment from the first week • 90+ percent code coverage • Fewer moving parts == less to monitor, fewer ways for things to go wrong • Fully PaaS based to minimize sys admin responsibilities • How can we support this ourselves without carrying pagers?
  • 6.
  • 7. DynamoDB • Fully managed NoSQL database-as-a-service • Web API with SDK support for Python, Ruby, node.js, .NET, and Java • High performance queries, backed by SSD • Maintains predictable performance for data at any size through horizontal scale out • Auto replication across 3 availability zones • Need to understand data access patterns up front • Pay for only what you use/need – both storage and R/W throughput
  • 8. • JavaScript on the server atop the Google V8 engine • Asynchronous event loop makes it ideal for real-time data intensive applications • Vibrant open-source community around excellent npm package manager (50K+ packages) • Seeing increased adoption in enterprises including Wal-Mart, LinkedIn, PayPal, Dow Jones, Microsoft, New York Times
  • 9. JavaScript – Learn to Love It • No type checking, don’t find errors until runtime • Not classical OO • var keyword • Callback hell • Server debugging too hard • But wait.. • Chrome and V8 • Dynamic can be your friend • npm! • express, async, mocha
  • 10. AWS Components • EC2 – Provides web-scale computing as a service. • ELB – elastic load balancer. Routes incoming traffic to ec2 instances, scales up to meet demand. • Auto-scaling group – a logical collection of EC2 instances behind an ELB
  • 12. Elastic Beanstalk • AWS PaaS – lightweight abstraction layer atop EC2/ELB with no additional costs • More transparent than Azure or Heroku • Supports Java, .NET, Python, Node.js, PHP, and Ruby • git push deployment • Auto-scaling group with custom triggers and auto applied config • Possible to configure the AMI including yum packages, environment variables, and more • Supports custom AMIs • Automated health checks
  • 13. Continuous Deployment git push to dev branch Jenkins CI unit tests git push to EB git pull dev git checkout master git merge dev git push master Jenkins CI unit tests git push to EB (prod) Development Production
  • 14. Performance testing • Initial performance was poor. • Disable DNS caching when load testing against ELB. • Pre-warm ELB for higher upfront throughput • jmeter-ec2, bees with machine guns
  • 15. Early Perf results – YIKES!Transactions per second Response time (seconds)
  • 16. Performance tuning • New relic, Nodetime – Real-time performance monitoring of node runtime • node-mem-watch – Evented inspection of heap, gc events, leak events, and heap diffing • ssh into instances
  • 17. Real Performance • Pleasantly surprised  • Average latency ~90ms • Dynamo response times <10ms • Handful of auto-scaling up and back events • One outage due to bad exception handling
  • 20. Lessons Learned / Pitfalls • True zero downtime deployment is difficult to achieve • Thoroughly explore the Elastic Beanstalk configuration options • Catch those errors – a rogue unhandled exception can bring it all down • Health checks that actually do something • Out of the box monitoring is pretty good
  • 21.
  • 22. Harness the Cloud On-Premise IaaS PaaS % time infrastructure experience
  • 25. Recommendo 2.0 • Sku based recommendations – size! • Truly personalized recs based on individual browse and purchase history DynamoDB Batch Recs Real- Time Refiner y ScorerIngester Redis Streams
  • 26. Additional AWS Services • Elasticache and Redis • Elastic Beanstalk worker tiers • SQS • S3
  • 27. Wrap-Up • Recommendo – initial success, now building upon what we have learned • Node.js + DynamoDB + Elastic Beanstalk is a winning combination • Possible to out-perform an incumbent vendor solution in a competitive differentiating capability • Cloud and PaaS enable small teams to move quick and deliver solid production caliber systems • Incremental cost of “gold plating” steadily shrinking • Your company benefits when percent of resources devoted to core competency is maximized
  • 28. Thank you • Questions / comments? • @davidvlsea • ds@nordstrom.com

Editor's Notes

  1. DAVID
  2. JASON
  3. JASON
  4. The ease of deployment is addictive.. Just a git push and you’re doneDAVID
  5. DAVID
  6. DAVID
  7. DAVID
  8. DAVID
  9. JASON
  10. JASON
  11. JASON
  12. JASON
  13. JASON
  14. JASON
  15. JASON
  16. DAVID
  17. DAVID
  18. DAVID
  19. JASON
  20. DAVIDMany think that a similar revolution is about to happen for the enterprise.
  21. DAVIDOn-Premise – large crew with many specialists, lots of infrastructure to support, lots of regulations, redundancy, energy required to prep and depart from the port, no cloud powerIaaS – Less power/resources required, smaller crew. Still complicated to sail though, requires some specialization. PaaS – Smallest crew yet, highly nimble, 2-3 people can just hoist the sails and get out to sea. Everyone can operate all aspects of the boat. Also means they are alone out there. Team needs to be self sufficient if something goes wrong.Point is not that we need fewer people overall, rather we need a whole fleet of nimble PaaS vessels. Shift resources towards the point of customer impact. Offload non-differentiating commodity infrastructure.
  22. DAVIDThanks to cloud and code libraries (especially open-source), the additional incremental effort required for industrial strength is shrinking.Logging – lots of great open source libsMonitoring – Cloud Watch, New RelicRedundancy – Elastic Load BalancerScalability – Auto-Scaling groupsHigh Availability – Dynamo replicationDeployment Automation – git pushSecurity – IAM, VPC, Firewalls
  23. DAVID
  24. JASON
  25. DAVID