building a scalable system for tracking shipping packages

127
https://www.etsy.com/listing/150171041/vintage-1845-map-of-antwerp https://www.etsy.com/listing/80301749/watercolor-australia-map-australian

Upload: premshree-pillai

Post on 07-Aug-2015

250 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Building a Scalable System for Tracking Shipping Packages

https://www.etsy.com/listing/150171041/vintage-1845-map-of-antwerp

https://www.etsy.com/listing/80301749/watercolor-australia-map-australian

Page 2: Building a Scalable System for Tracking Shipping Packages

BUILDING A SCALABLE SYSTEM FOR TRACKING SHIPPING PACKAGES

PREMSHREE PILLAI,

Page 3: Building a Scalable System for Tracking Shipping Packages
Page 4: Building a Scalable System for Tracking Shipping Packages

SR. ENGINEER, SHIPPINGPREVIOUSLY, YAHOO!

@premshree

Page 5: Building a Scalable System for Tracking Shipping Packages

AGENDA

Page 6: Building a Scalable System for Tracking Shipping Packages

EtsyShippingTracking ArchitectureMonitoringQ & A

Page 7: Building a Scalable System for Tracking Shipping Packages

https://www.flickr.com/photos/seldaek/16161961159/

you

Page 8: Building a Scalable System for Tracking Shipping Packages

em·pa·thy noun \ˈem-pə-thē\ : the feeling that you understand and share another person's experiences and emotions : the ability to share someone else's feelings

Page 9: Building a Scalable System for Tracking Shipping Packages

em·pa·thy noun \ˈem-pə-thē\ : the feeling that you understand and share another person's experiences and emotions : the ability to share someone else's feelings

Page 10: Building a Scalable System for Tracking Shipping Packages

https://www.etsy.com/listing/110699162/seeker-of-happiness-canvas-tote-bag-you

RE-IMAGINE COMMERCE IN WAYS THAT BUILD A MORE FULFILLING AND LASTING WORLD

Page 11: Building a Scalable System for Tracking Shipping Packages
Page 12: Building a Scalable System for Tracking Shipping Packages

https://www.etsy.com/listing/201864292/cleveland-map-street-map-vintage-print

Page 13: Building a Scalable System for Tracking Shipping Packages
Page 14: Building a Scalable System for Tracking Shipping Packages
Page 15: Building a Scalable System for Tracking Shipping Packages

Hong Kong

https://www.etsy.com/listing/162358227/old-map-of-hong-kong-and-environs-16-x

Page 16: Building a Scalable System for Tracking Shipping Packages
Page 17: Building a Scalable System for Tracking Shipping Packages

Zagrebhttps://www.etsy.com/listing/157215176/croatia-watercolor-painting-art-print

Page 18: Building a Scalable System for Tracking Shipping Packages
Page 19: Building a Scalable System for Tracking Shipping Packages

♥ POTTERY

Page 20: Building a Scalable System for Tracking Shipping Packages
Page 21: Building a Scalable System for Tracking Shipping Packages

SCOTTSDALE, AZ

Page 22: Building a Scalable System for Tracking Shipping Packages

ANDOVER, MA

Page 23: Building a Scalable System for Tracking Shipping Packages

LEFKIS, GREECE

Page 24: Building a Scalable System for Tracking Shipping Packages

1.4 MILLION ACTIVE SELLERS

19.8 MILLION ACTIVE BUYERS

29 MILLION ACTIVE LISTINGS

https://www.etsy.com/listing/191371121/jael-green-red-sisal-basket-from-kenya

Page 25: Building a Scalable System for Tracking Shipping Packages
Page 26: Building a Scalable System for Tracking Shipping Packages
Page 27: Building a Scalable System for Tracking Shipping Packages
Page 28: Building a Scalable System for Tracking Shipping Packages
Page 29: Building a Scalable System for Tracking Shipping Packages
Page 30: Building a Scalable System for Tracking Shipping Packages

WHERE IS MYPACKAGE?

https://www.etsy.com/listing/180703192/johannes-holst-sailboat-at-sea-1959

Page 31: Building a Scalable System for Tracking Shipping Packages

WHERE IS MYPACKAGE?

https://www.etsy.com/listing/180703192/johannes-holst-sailboat-at-sea-1959

Page 32: Building a Scalable System for Tracking Shipping Packages

IN TRANSIT 200,000+https://www.etsy.com/listing/129521877/original-world-map-watercolor-print

Page 33: Building a Scalable System for Tracking Shipping Packages

OUT FOR DELIVERY 125,000+https://www.etsy.com/listing/129521877/original-world-map-watercolor-print

Page 34: Building a Scalable System for Tracking Shipping Packages

CARRIERS 150+https://www.etsy.com/listing/129521877/original-world-map-watercolor-print

Page 35: Building a Scalable System for Tracking Shipping Packages

SHIPPING CARRIERS

Page 36: Building a Scalable System for Tracking Shipping Packages

FedEx

DHL

USPS

Australian Post

...

Page 37: Building a Scalable System for Tracking Shipping Packages
Page 38: Building a Scalable System for Tracking Shipping Packages

LET’S DIVE IN

Page 39: Building a Scalable System for Tracking Shipping Packages

mysql

Page 40: Building a Scalable System for Tracking Shipping Packages
Page 41: Building a Scalable System for Tracking Shipping Packages
Page 42: Building a Scalable System for Tracking Shipping Packages
Page 43: Building a Scalable System for Tracking Shipping Packages
Page 44: Building a Scalable System for Tracking Shipping Packages
Page 45: Building a Scalable System for Tracking Shipping Packages
Page 46: Building a Scalable System for Tracking Shipping Packages
Page 47: Building a Scalable System for Tracking Shipping Packages
Page 48: Building a Scalable System for Tracking Shipping Packages
Page 49: Building a Scalable System for Tracking Shipping Packages
Page 50: Building a Scalable System for Tracking Shipping Packages

tracking_events

Page 51: Building a Scalable System for Tracking Shipping Packages

SHIPPING APIS

Page 52: Building a Scalable System for Tracking Shipping Packages

GET http://production.shippingapis.com/ShippingAPI.dll?API=TrackV2&XML=%3CTrackFieldRequest+USERID%3D%22022XXXXH6696%22%3E%3CTrackID+ID%3D%22LZ13XXX3064US%22%3E%3C%2FTrackID%3E%3C%2FTrackFieldRequest%3E

Page 53: Building a Scalable System for Tracking Shipping Packages

GET http://production.shippingapis.com/ShippingAPI.dll?API=TrackV2&XML=%3CTrackFieldRequest+USERID%3D%22022XXXXH6696%22%3E%3CTrackID+ID%3D%22LZ13XXX3064US%22%3E%3C%2FTrackID%3E%3C%2FTrackFieldRequest%3E

Page 54: Building a Scalable System for Tracking Shipping Packages
Page 55: Building a Scalable System for Tracking Shipping Packages
Page 56: Building a Scalable System for Tracking Shipping Packages
Page 57: Building a Scalable System for Tracking Shipping Packages
Page 58: Building a Scalable System for Tracking Shipping Packages
Page 59: Building a Scalable System for Tracking Shipping Packages

TRACKING STATES

Page 60: Building a Scalable System for Tracking Shipping Packages
Page 61: Building a Scalable System for Tracking Shipping Packages
Page 62: Building a Scalable System for Tracking Shipping Packages
Page 63: Building a Scalable System for Tracking Shipping Packages

INFO_RECEIVED

PACKAGE_RECEIVED

IN_TRANSIT

DELAYED

OUT_FOR_DELIVERY

...

DELIVERED

Page 64: Building a Scalable System for Tracking Shipping Packages

STATE MAP

Page 65: Building a Scalable System for Tracking Shipping Packages

INFO_RECEIVED

“acceptance”

“processed at usps origin facility"

“accepted at usps origin sort facility”

“picked up”

Page 66: Building a Scalable System for Tracking Shipping Packages

INFO_RECEIVED

“tendered at fedex office”

“picked up"

“in fedex possession”

Page 67: Building a Scalable System for Tracking Shipping Packages

IN_TRANSIT

“dispatched from usps sort facility”

“sorting complete"

“local holiday - will attempt delivery on next working day”

“customs clearance processing

Page 68: Building a Scalable System for Tracking Shipping Packages

SELECT * FROM trackings WHERE last_access_date < ?

Page 69: Building a Scalable System for Tracking Shipping Packages

SELECT * FROM trackings WHERE last_access_date < ?

Page 70: Building a Scalable System for Tracking Shipping Packages

? = now() - 15

Page 71: Building a Scalable System for Tracking Shipping Packages
Page 72: Building a Scalable System for Tracking Shipping Packages

caveat lector

Page 73: Building a Scalable System for Tracking Shipping Packages

WHAT’S THE PROBLEM?

Page 74: Building a Scalable System for Tracking Shipping Packages

SIZE

Page 75: Building a Scalable System for Tracking Shipping Packages

SELECT * FROM trackings WHERE last_access_date < ? LIMIT ?

Page 76: Building a Scalable System for Tracking Shipping Packages

STRAGGLERS

Page 77: Building a Scalable System for Tracking Shipping Packages
Page 78: Building a Scalable System for Tracking Shipping Packages

SHARDING 101

Page 79: Building a Scalable System for Tracking Shipping Packages
Page 80: Building a Scalable System for Tracking Shipping Packages
Page 81: Building a Scalable System for Tracking Shipping Packages
Page 82: Building a Scalable System for Tracking Shipping Packages
Page 83: Building a Scalable System for Tracking Shipping Packages
Page 84: Building a Scalable System for Tracking Shipping Packages
Page 85: Building a Scalable System for Tracking Shipping Packages
Page 86: Building a Scalable System for Tracking Shipping Packages
Page 87: Building a Scalable System for Tracking Shipping Packages

SELECT * FROM trackings WHERE shard = ? AND last_access_date < ?

Page 88: Building a Scalable System for Tracking Shipping Packages
Page 89: Building a Scalable System for Tracking Shipping Packages

QUEUE

Page 90: Building a Scalable System for Tracking Shipping Packages

FAUX QUEUE

Page 91: Building a Scalable System for Tracking Shipping Packages
Page 92: Building a Scalable System for Tracking Shipping Packages

QUEUE_3_DAY

QUEUE_1_DAY

QUEUE_3_HOUR

QUEUE_1_HOUR

...

QUEUE_STOPPED

Page 93: Building a Scalable System for Tracking Shipping Packages

QUEUE MAP

Page 94: Building a Scalable System for Tracking Shipping Packages

INFO_RECEIVED => QUEUE_1_DAY

PACKAGE_RECEIVED => QUEUE_1_DAY

IN_TRANSIT => QUEUE_1_DAY

OUT_FOR_DELIVERY => QUEUE_1_HOUR

...

DELIVERED => QUEUE_STOPPED

Page 95: Building a Scalable System for Tracking Shipping Packages

INFO_RECEIVED => QUEUE_3_HOUR

PACKAGE_RECEIVED => QUEUE_3_HOUR

IN_TRANSIT => QUEUE_3_HOUR

OUT_FOR_DELIVERY => QUEUE_1_HOUR

...

DELIVERED => QUEUE_STOPPED

Page 96: Building a Scalable System for Tracking Shipping Packages

QUEUE AGE

Page 97: Building a Scalable System for Tracking Shipping Packages

QUEUE_3_DAY => 1*60*60*24*3

QUEUE_1_DAY => 1*60*60*24

QUEUE_3_HOUR => 3*60*60

QUEUE_1_HOUR => 1*60*60

Page 98: Building a Scalable System for Tracking Shipping Packages

SELECT * FROM trackings WHERE shard = ? AND queue = ? AND last_access_date < ?

Page 99: Building a Scalable System for Tracking Shipping Packages

SELECT * FROM trackings WHERE shard = ? AND queue = ? AND last_access_date < ?

Page 100: Building a Scalable System for Tracking Shipping Packages

last_access_date < time() - age

Page 101: Building a Scalable System for Tracking Shipping Packages

ASYNC

Page 102: Building a Scalable System for Tracking Shipping Packages

GEARMAN

Page 103: Building a Scalable System for Tracking Shipping Packages

unique job key(shard, queue)

Page 104: Building a Scalable System for Tracking Shipping Packages
Page 105: Building a Scalable System for Tracking Shipping Packages

IN SUMMARY

Page 106: Building a Scalable System for Tracking Shipping Packages

API

STATE MAP

SHARDING

CRON/ASYNC

FAUX-QUEUE

Page 107: Building a Scalable System for Tracking Shipping Packages

MONITORING

Page 108: Building a Scalable System for Tracking Shipping Packages

StatsD

Page 109: Building a Scalable System for Tracking Shipping Packages

github.com/etsy/statsd/

Page 110: Building a Scalable System for Tracking Shipping Packages

Tracking stats

Gearman worker calls

Tracking calls by provider

Tracking queues

CURL errors

Page 111: Building a Scalable System for Tracking Shipping Packages

tracking numbers

Page 112: Building a Scalable System for Tracking Shipping Packages

update tracking batch

Page 113: Building a Scalable System for Tracking Shipping Packages

get tracking (usps)

Page 114: Building a Scalable System for Tracking Shipping Packages

get tracking (canada post)

Page 115: Building a Scalable System for Tracking Shipping Packages

curl errors (usps)

Page 116: Building a Scalable System for Tracking Shipping Packages

curl errors (fedex)

Page 117: Building a Scalable System for Tracking Shipping Packages

Tracking stats

Gearman worker calls

Tracking calls by provider

Tracking queues

CURL errors

Page 118: Building a Scalable System for Tracking Shipping Packages

get tracking (usps)

Page 119: Building a Scalable System for Tracking Shipping Packages

Tracking stats

Gearman worker calls

Tracking calls by provider

Tracking queues

CURL errors

Page 120: Building a Scalable System for Tracking Shipping Packages

curl errors (usps)

Page 121: Building a Scalable System for Tracking Shipping Packages

IMAGINARY QUESTIONS FROM YOU

Page 122: Building a Scalable System for Tracking Shipping Packages

IMAGINARY QUESTIONS FROM YOU

Page 123: Building a Scalable System for Tracking Shipping Packages

IMAGINARY QUESTIONS FROM YOU

Page 124: Building a Scalable System for Tracking Shipping Packages

ActiveMQ/RabbitMQ?

Page 125: Building a Scalable System for Tracking Shipping Packages

webhooks?

Page 126: Building a Scalable System for Tracking Shipping Packages

your ideas

Page 127: Building a Scalable System for Tracking Shipping Packages

@premshree https://joind.in/13479

https://www.etsy.com/listing/158954869/flat-note-card-thank-you-letterpress-110