Agile Cat — in the cloud

Evernote アーキテクチャ – 900万人のユーザーと、1億 5000万のリクエストに日々対応

Posted in Freemium, Miscs, SOHO with Cloud by Agile Cat on May 31, 2011

Evernote Architecture – 9 Million Users and 150 Million Requests a Day
transparentMonday, May 23, 2011 at 8:33AM


The folks at Evernote were kind enough to write up an overview of their architecture in a post titled Architectural Digest. Dave Engberg describes their approach to networking, sharding, user storage, search, and some other custom services.

親切なことに、Evernote の人々は Architectural Digest というタイトルのポストにおいて、そのアーキテクチャの概要を説明してくれた。 具体的にいうと、Networking および、Sharding、User Storage、Search や、その他の Custom Service について、Dave Engberg が記述している。

Evernote is a cool application, partially realizing Vannevar Bush‘s amazing vision of a memex. Wikipedia describes Evernote’s features succinctly:

Evernote はイカしたアプリケーションであり、Vannevar Bush のステキな ビジョン である memex("memory" and "index")を、部分的に具体化したものでもある。 Wikipedia は Evernote の特徴について、以下のように簡潔に紹介している:

Evernote is a suite of software and services designed for notetaking and archiving. A "note" can be a piece of formattable text, a full webpage or webpage excerpt, a photograph, a voice memo, or a handwritten "ink" note. Notes can also have file attachments. Notes can then be sorted into folders, tagged, annotated, edited, given comments, and searched. Evernote supports a number of operating system platforms (including Android, Mac OS X, iOS, Microsoft Windows and WebOS), and also offers online synchronization and backup services.

Evernote とは、ノート作成とアーカイブを目的にデザインされた、ソフトウェアとサービスの組み合わせのことである。 その「ノート」は、フォーマットが可能なテキストの断片や、Web ページの全体/一部に対応するだけではなく、写真や、音声メモ、手書きの「インク」にも対応する。 さらに「ノート」は、ファイル添付も実現している。 また、「ノート」を編集するだけではなく、管理のための機能として、フォルダー内でのソートや、タグ付け、注釈とコメントの追加、検索にも対応している。 Evernote は、数多くのオペレーティング・システムとプラットフォームをサポートし(Android、Mac OS X、iOS、Microsoft Windows、WebOS など)、オンライン同期とバックアップのサービスも提供する。

imageKey here is that Evernote stores a lot of data, that must be searched, and synced through their cloud to any device you use.

ここでの主題は、Evernote にストアされる大量のデータに関するものである。 それらのデータは検索に対応し、また、各種のユーザー・デバイスとクラウドを介して同期しなければならない。

Another key is the effect of Evernote’s business model and cost structure. Evernote is notable for their pioneering of the freemium model, based on the idea from their CEO: The easiest way to get 1 million people paying is to get 1 billion people using. Evernote is designed to become profitable at a 1% conversion rate. The free online service limits users to a hefty 60 MB/month while premium users pay $45 per year for 1,000 MB/month. To be profitable they most store a lot of data without spending a lot of money. There’s not a lot of room for extras, which accounts for the simple practicality of their architecture.

もう 1つの視点は、ビジネス・モデルとコスト構造に関する Evernote の取り組みである。 Evernote は無料ネット・モデルの草分けであり、それが、同社の CEO のアイデアに基づいていることを指摘しておく。 つまり、100万人の人々から対価を得るための、最も簡単な方法は、10億人の人々に使ってもらうという発想である。 つまり、Evernote は、この 1% の変換レートで、利益が生じるようにデザインされている。無料のオンライン・サービスでは、ユーザーからのアップロードが 60MB(月)に制限されるが、1年間に $45 支払うプレミアム・ユーザーは、その枠が 1,000MB(月)まで広がる。したがって、利益を確保するためには、多額のコストを生じることなく、大量のデータをストアしなければならない。そのアーキテクチャにおけるシンプルな実用性を説明すると、過大な利益が生じない構造が見えてくる。

The article is short and succinct, so definitely read it for details. Some takeaways: 

  • Controlling costs. Evernote runs out of a pair of dedicated cages in a data center in Santa Clara, California. Using a cloud wouldn’t provide enough processing power and storage at a cheap enough cost to make Evernote’s business model work. As their load doesn’t appear to be spiky, using their own colo site makes a lot of sense, especially given how they make use of VMs for reliability.

  • Controlling costs. Evernote は、California, Santa Clara のデータセンターで、2つの専用フロアを埋め尽くしている。 Evernote のビジネス・モデルをクラウド上で推進しても、大幅に低減されるコストで、充分な処理能力とストレージを実現することは無いだろう。 このサービスにおいては、極端なピークが生じないため、自身のコロケーション・サイトでの運用、とりわけ信頼性のための VM 使用において、大きな意味を持つだろう。

  • Architecture based on the nature of the data. User notes are independent of each other, which makes it very practical for Evernote to shard their 9.5 million total users across 90 shards. Each shard is a pair of two quad-core Intel  SuperMicro boxes with lots RAM and a full chassis of Seagate enterprise drives in mirrored RAID configurations. All storage and API processing is handled by a shard. They’ve found using directly attached storage to have the best price/performance ratio. Using a remote storage tier, with the same level of redundancy, would cost substantially more. Adding drives to a server and replicating with DRDB is low both in overhead and costs.

  • Architecture based on the nature of the data. ユーザー・メモは、全体で 950万人のユーザーを90の区分に Sharing するという、きわめて現実的な Evernote 方式により、どの独立性を守られている。 それぞれの区分は、2つの Intel Quad Core と大量のメモリを搭載した SuperMicro ボックスと、 RAID コンフィグレーションされた Seagate のエンタープライズ・ドライブの組み合わせを、ペアで有している。 すべてのストレージと API の処理は、この区分ごとに実行される。 彼らは、最高の価格/性能比を得るために、ダイレクトにアタッチされるストレージを選択した。リモート・ストレージ・ティアを用いて、同等の冗長性を得るには、さらに多くの費用がかかるだろう。サーバーにドライブを加え、DRDB をリプリケーションする方式は、オーバーヘッドとコストを引き下げる。

  • Application redundancy. Each box runs two VMs. A primary VM runs the core stack: Debian + Java 6 + Tomcat + Hibernate + Ehcache +  Stripes + GWT + MySQL (for metadata) + hierarchical local file systems (for file data). DRDB is used to replication a primary VM to a secondary VM on another box. Heartbeat is used to fail over to a secondary VM is the primary VM dies. A smart way to use those powerful machines and make a reliable system with fewer resources.

  • Application redundancy. それぞれのボックス内で、2つの VM が稼動している。 第1の VM はコア・スタックを実行する。 具体的に言うと、 Debian + Java 6 + Tomcat + Hibernate + Ehcache +  Stripes + GWT + MySQL (for metadata) + 階層的なローカル・ファイル・システム (for file data) である。 DRDB はリプリケーションのために用いられ、別のボックス内にある第2の VM への模写を行う。 ハートビートを用いて、第 1 VM のダウンが検出されると、第 2 VM へのフェイル・オーバーが行われる。 こうしたパワフルなマシンを用いて、少量のリソースで信頼性の高いシステムを構築するのは、スマートな手法である。

  • Data reliability. User data is stored on four different enterprise drives across two different physical servers. Nightly backups  copies data over a dedicated 1Gbps link to a secondary data center. 

  • Data reliability. ユーザー・データは、2つの物理的なサーバーまたいだ、4つのエンタープライズ・ドライブにストアされる。 バックアップ・コピーは、専用の 1Gbps リンクを用いて、第 2データセンターへ向けて毎晩行われる。

  • Fast request routing. User account information–username, MD5 password, and user shard ID–is stored in an in-memory MySQL database. Reliability comes from RAID mirroring, DRBD replication to a secondary, and nightly backups. This approach makes the routing of users to their data a simple and fast in-memory lookup, while still being highly available.

  • Fast request routing. ユーザー・アカウント情報(ユーザ名、MD5 パスワード、ユーザー Sharing ID)は、in-memory MySQL データベースにストアされる。 つまり、信頼性は、RAID ミラーリングおよび、第2 DRBD へのリプリケーション、そして、毎晩のバックアップによりもたらされる。 このアプローチは、きわめて可用性が高く、また、ユーザー・データへのルーティングを、シンプルで高速のイン・メモリー検索で実現する。

  • A separate pool of 28 8-core servers process images for search, handwriting recognition, and other services. This is custom software and is a powerful value-add that is not easily replicated by anyone else.

  • 28 セットの 8 Core コア・サーバーにより、検索のためのイメージ生成や、ハンド・ライティング認識などのサービスに対応する。 そこで用いられるカスタム・ソフトウェアでは、容易に模倣できるものではない。

  • Puppet is used for configuration management.

  • コンフィグレーション・マネージメントのために、Puppet が用いられる。

  • Monitoring is done with Zabbix, Opsview, and AlertSite.

  • モニタリングに関しては、Zabbix および、Opsview、AlertSite が用いられる。

There’s a promise of future articles focusing more on individual subsystems. I look forward to these as you have to appreciate the elegance of the system they’ve created for their business model. A good example to learn from. 


Related Articles


大の Evernote ファンである Agile_Cat としては、このような記事を読めるだけで嬉しいですし、ガンバレという思いをさらに強くしてしまうわけです。この記事で明らかにされたアーキテクチャにより、これまで以上の安心感が得られて、ほんとうに良かったと思っています。 $45/年の使用料というかドネーションも、すでに 2年目の支払いが終わりましたが、とても気分良く払えるところが、Evenote のステキなところです :) 今後とも、よろしくお願いしま~~~す! ーーー __AC Stamp 2



Evernote を Version 4 にアップデートしてみました
クロス・プラットフォームへの賛同票を、あっという間に 500万人から集めた Evernote !
Evernote は $20 Million を調達して、何を狙うのか?
Evernote が 400 万ユーザーに達した! – その理由は?
Agile_Cat の 9つの TOOL とは?- WordPress と Twitter だけじゃないよ!
OneNote 2010 が Evernote に負けているのは ココだ!

%d bloggers like this: