2. NORDSTRO
M
We believe fashion is a
business of optimism,
and in that spirit we
continue to grow and
evolve.
We're proud to serve customers at 365 stores
in 40 states and Canada.
Customers are served at 122 full-line stores in
the U.S. and Canada, 232 Nordstrom
Rack locations, seven Trunk Club clubhouses—
a personalized styling service—
two Jeffrey boutiques and two clearance stores.
We also serve customers online in 96 countries
through Nordstrom.com
3. In Technology, we are dedicated to delivering
the best possible service through our
infrastructure and applications to support the
business of fashion.
(P.S - we’re hiring!)
4. Today we’ll share a story of improvement,
where we were able to modernize and
reduce latency to provide a better
experience across channels.
Initial load process and sync, Read /
Write ratio and latency, DB Design,
Security and Encryption, Ops Manager
5. There is one customer record, defined through
clear company-wide data standards, that the
customer can update themselves, and that record
is available to inform customer touchpoints.
Customer
Single
Customer
Record
Identifying Customers for One Nordstrom - is a strategy to
change the way we understand and leverage the operational
view of Customer information. Rely on information provided
by the Customer for us to identify and personalize their
experiences rather than making inferences from the
Nordstrom perspective.
REST API
Mongo
Cluster
Mobil
e
Web
7. MONGODB
Questions before deciding on MongoDB
➢ Is it the right choice for read-heavy system?
➢ How easy it is to scale?
➢ Document structure to store customer information
➢ Does it support single digit low latency for all operations?
8. CUSTOMER DATA DB DESIGN
Shard1
Mongod
MongosApp Server 1
Mongos
Mongos
App Server 2
App Server 3
Config Servers (3)
Shard2
Mongod
Mongod
Mongod
Mongod
Mongod
➢ High throughput through sharding
➢ High availability with 3 AZ’s
P
P
Mongo Cluster
9. INITIAL LOAD AND SYNC
Initial load from on-premise
Sync back to on-premise
On-Premise
Mongo ClusterMongo Import
1
2
Json
files
Initial load data in JSON format
One time
load3
On-Premise
On-premise
service
1
2
Kafka stream
REST API
Mongo Cluster
3
Subscribe
to Events
Publish Event
10. METRICS
➢ Average of 1 Million requests / day
➢ 1.5% (~15 K) requests on writes
➢ 98.5% (~985 K) requests on reads
Read / Write metrics
Latency
➢ Reads
➢ < 1 ms average from Mongo
➢ ~ 5 to 6 ms in total from the core service
➢ Writes
➢ 1 ms average from Mongo
➢ ~ 10 to 11 ms in total from the core service
11. ENCRYPTION
Questions before enabling Encryption
➢ PII information in customer data
➢ Enable encryption at rest
➢ Application level or Database encryption?
➢ Key manager or Local Key management
➢ How to secure encryption keys?
➢ Does it increase latency?
➢ Complexity in backup and restore
12. ENCRYPTION (KMIP)
Shard1
Mongod
MongosApp Server 1
Mongos
Mongos
App Server 2
App Server 3
Shard2
Mongod
Mongod
Mongod
Mongod
Mongod
➢ Gemalto for Key management
➢ Secure connection using SSL (certificate auth)
P
P
Mongo Cluster (Enable encryption at rest)
SSL Auth
SSL Auth
KMIP
Key exchange
LDAP
Security group check
13. OPS MANAGER
➢ Operational metrics
➢ Cluster management
➢ Automation agent
➢ KMIP configuration
➢ Profiler for query optimization
➢ Alerts
➢ Backup and Restore
We use MongoDB Ops Manager for the following list of activities
14. LESSONS LEARNED
➢ Moved the mongos inside application server for better performance
➢ Modified the system configuration (disk type) to improve initial load process
using mongo import
➢ Fixed indexing issues with the help of mongo profiler (ops manager)