Lessons learned from
SearchD development
Tomáš Kramár
#1. Replication is awesome
production
staging
localhost
localhost
API
Redis
PUB/SUB
#1. Replication is awesome
● Production data on staging!
● Production data on localhost! (on demand)
● Testing new code is easy
#2. Asynchronous processing
API Queue
Job
Job
#2. Asynchronous processing
#2. Asynchronous processing
#2. Q
● fatal errors are recoverable & pause
processing
● we are not losing data
● data migrations
● parallel
● in batches
● distributed
#3. Dynamic partitioning in ElasticSearch
● Week-based indices
● Elasticsearch templates for mapping
management
● Query only relevant indices
#4. Asynchronous UI FTW
1. Site is slow
2. Load everything asynchronously
3. Site is fast! (it seems)

Lessons learned from SearchD development