Evernote Tech Blog

The Care and Feeding of Elephants

Author Archives: Dave Engberg

Synchronization Speedupification

Memory Lane When we designed our synchronization protocol way back in 2007, we wanted to make sure that a client could use a minimal number of network requests to find all of the content in the user’s account, or only of the relevant changes … Continue reading

5 Comments

Billions (of API requests) Served

Evernote stores hundreds of terabytes of online data in order to preserve our users’ memories. Over the last four years, 36.8 million people have created Evernote accounts, and together have uploaded more than 1.2 billion notes with more than 2 billion attachments. … Continue reading

6 Comments

Password Safety Reminder

Last week, our systems detected a sequence of login attempts to Evernote from a single web browser at IP addresses that appeared to originate from Italy. Each attempt sent a unique username and password combination. Some of these usernames were … Continue reading

12 Comments

Outage Details

Tonight, our planned 15-20 minute service window turned into a full two hour outage. We regret the problems that this may have caused for some of you and wanted to provide a little more technical detail here. As we mentioned … Continue reading

8 Comments

Shard Boiled

In our architectural overview post last May, we gave a high-level description of the “shard” servers we use for both data storage and application logic. Since Evernote is a personal memory service rather than a social network, we can easily … Continue reading

27 Comments

WhySQL?

When we describe our overall service architecture to smart people who have been involved in other big services, the two most common questions are: Why is your structured data stored in SQL databases instead of something like [big-data, web-scale, No-SQL … Continue reading

34 Comments

Even Grittier Details on Evernote’s Indexing System

Alex’s earlier article on Evernote’s image recognition component touched on a lot of its service-level functionality — what it is, how it works, and what it provides in relation to the Evernote platform as a whole. In this post, I’ll … Continue reading

Tagged , , , , , , , , , , , | 4 Comments

Security Hang-Ups

Scenario:  In the last week or two, lots of people noticed sporadic errors when they tried to synchronize with Evernote or access our web site. The errors would disappear if they manually forced another sync or reload. The web site … Continue reading

3 Comments

Lucene: We Got Some Explaining to Do

[I was originally going to go with "I Love Lucene", but did a quick Google search and found that TheServerSide beat me to it...] As we mentioned in our architectural overview post, the data from each note is spread across … Continue reading

3 Comments

Fast String Handling: A Frayed Knot

Evernote’s servers process a lot of data for our users. At any given time, a shard may be performing different activities for different clients. For example: Constructing dynamic web pages for user accounts Performing API calls on notebooks, tags, etc. … Continue reading

1 Comment