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

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 

Recently uploaded (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 

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