на чем написан evernote
Обзор архитектуры сервиса Evernote
Как и обещали, мы начали переводить некоторые посты из англоязычного Техноблога Evernote, в котором наши инженеры и разработчики рассказывают о некоторых подробностях технической реализации сервиса, делятся историями и просто интересными фактами из своей работы.
Сегодня мы хотели бы начать обзор архитектуры Evernote с общего представления о структуре сервиса. Сейчас мы не будем вдаваться в детали относительно каждого компонента, оставив это для будущих постов.
Начнем со схемы, представленной выше. Вся указанная там статистика приведена на 17 мая 2011 года.
Сеть: Практически весь трафик в/из Evernote идет на www.evernote.com через HTTPS-порт 443. Он включает, как всю «веб-активность», так и синхронизацию со всеми программными клиентами через наш API на базе Thrift. В общей сложности, генерируется порядка 150 млн. HTTPS-запросов в сутки с пиковым трафиком около 250 Мбит/с. Особенно «рада» этому обстоятельству наша ночная смена администраторов, поскольку ежедевный пик приходится примерно на 6:30 утра по тихоокеанскому времени.
Мы используем BGP, чтобы отправлять трафик напрямую через полностью независимую сеть каналов, обеспечиваемую нашим основным (NTT) и дополнительным (Level 3) провайдерами. Он фильтруется через Vyatta на пути к балансировщикам нагрузки A10, которые мы установили в январе, когда достигли предела производительности SSL для наших старых балансировщиков. Нам пока вполне удобно обрабатывать существующий трафик, используя один AX 2500 плюс отказоустойчивый сервер, но мы готовимся протестировать их конфигурацию N+1 при создании нашего кластера, чтобы быть готовыми к будущему росту.
Шарды: Ядром сервиса Evernote является ферма серверов, которые мы называем шардами (shards). Каждый шард обрабатывает все данные и весь трафик (веб и API) для когорты из 100 000 пользователей Evernote. Поскольку у нас уже более 9 млн. пользователей, получается около 90 шардов.
Каждый шард — это пара серверов SuperMicro с двухъядерными процессорами Intel, огромным объемом оперативной памяти и полностью забитыми промышленными дисками Seagate, сконфигурированными в зеркальные RAID-массивы. Во главе каждого сервера у нас работает хост Debian, которые управляет парой виртуальных машин Xen. В основной виртуальной машине запущено ядро из следующего набора приложений: Debian + Java 6 + Tomcat +Hibernate + Ehcache + Stripes + GWT + MySQL (для метаданных) + иерархические локальные файловые системы (для файловых данных).
Все пользовательские данные в основной виртуальной машине на одном сервере синхронно дублируются в дополнительной машине на другом сервере с помощью DRBD. Это означает, что каждый байт пользовательских данных хранится, как минимум, на четырех различных промышленных дисках, физически расположенных на двух разных серверах. И добавьте к этому ночное резервное копирование. Если у нас возникает какая-либо проблема с сервером, мы можем перебросить работу с основной виртуальной машины на дополнительную, расположенную на другом сервере, с минимальным временем простоя, с помощью Heartbeat.
Поскольку данные каждого пользователя хранятся полностью локально на одном (виртуальном) хосте шарда, мы можем запустить каждый шард в качестве независимого островка практически без помех и вне зависимости от обстановки в остальной части фермы. Это также означает, что проблемы с одним шардом не сказываются на работе остальных.
Львиная доля работы по направлению пользователей на их шарды приходится на балансировщики нагрузки, у которых есть набор инструкций по поиску шарда с помощью URL и/или cookies.
UserStore: Хотя подавляющее большинство всех данных хранится на логически независимых шардах (“NoteStore”), все они связаны с единой базой аккаунтов “UserStore” (также работает на MySQL) с небольшим количеством информации о каждом аккаунте, такой как имя пользователя, MD5-функция от пароля и идентификатор шарда пользователя. Эта база данных достаточно мала, чтобы помещаться в оперативной памяти, но мы при этом обеспечиваем такое же надежное ее резервирование с помощью аналогичной комбинации зеркальных RAID и репликаций через DRBD для вторичного и ночного резервного копирования.
Ферма распознавания изображений: Для того чтобы обеспечить поиск слов внутри изображений в ваших заметках, мы выделили пул из 28 серверов, которые ежедневно используют свои 8-ядерные процессоры для обработки новых изображений. В напряженные дни поток может достигать 1,3 или 1,4 млн. отдельных изображений. В настоящее время там используется сочетание Linux и Windows, но уже на днях мы планируем завершить миграцию на Debian, чтобы избавиться от лишних зависимостей.
Эти сервера обеспечивают работу процесса распознавания, который мы называем AIR (“Advanced Imaging and Recognition”). Софт для него был разработан нашей R&D-командой. Это ПО обрабатывает каждое изображение, идентифицирует области, содержащие текст и затем пытается составить взвешенный список возможных совпадений для каждого слова с использованием “распознавательных движков”, которые генерируют наборы предположений. В работе используются как механизмы, разработанные нашей командой, которая специализируется на AIR (например, распознавание рукописного текста), так и лицензированные технологии от коммерческих партнеров, имеющих лучшие в своей отрасли разработки.
Другие службы: Все вышеупомянутые серверы парами установлены в стойках нашего дата-центра в городе Санта-Клара, Калифорния. В дополнение к аппаратному обеспечению, которое обеспечивает базовую работу сервиса, у нас также есть небольшие группы серверов для более простых задач, которые требуют один или два сервера или виртуальных машин Xen. Например, работу нашего SMTP-шлюза для входящей почты обеспечивает пара серверов на Debian с Postfix и специальным обработчиком почты, написанным на Java, установленным поверх Dwarf. Наш Twitter-шлюз для возможности отправки заметок в свой аккаунт с помощью @myen — это просто небольшой скрипт, использующий twitter4j.
Наш корпоративный сайт работает на Apache, блоги — на WordPress. Большую часть нашей внутренней топологии резервирования обеспечивает продукция HP. Для управления конфигурированием мы используем Puppet, а для мониторинга — Zabbix, Opsview и AlertSite. Ночное резервное копирование обеспечивается комбинацией разного ПО, которое передает данные по выделенному гигабитному каналу на резервный дата-центр.
Постойте, а зачем? Мы понимаем, что этот пост рождает много очевидных вопросов о том, почему мы выбрали X, а не Y в самых разных ситуациях. Почему мы выбрали собственные сервера вместо использования услуг «облачного» провайдера? Почему мы предпочли старое ПО (Java, SQL, локальное хранилище и т. д.) вместо того, чтобы применить новейшие рецепты?
Мы постараемся поподробнее ответить на эти вопросы в ближайшие несколько месяцев.
Evernote что это за программа и нужна ли она: ЛикБез
В современном мире каждый человек сталкивается с огромным массивом информации. Что-то необходимо запомнить, чтобы вернуться к информации немного позднее. А какие-то задачи необходимо решить оперативно, но передавая основные моменты другим людям. Как в такой спешке не упустить ничего важного?
Конечно, записать основную мысль. Для этого можно воспользоваться бумажным блокнотом, электронной записной книжкой в телефоне, специальной программой или приложением, например, Evernote. Все зависит от того, чем привычней пользоваться.
Если с записной книжкой и блокнотом все понятно, то специальные приложения вызывают массу вопросов. Например, Evernote – что это за программа и нужна ли она? Может быть проще записывать все в бумажный блокнот и не загружать память телефона?
Что такое Evernote?
Эту программу можно легко узнать по логотипу: зеленый или серый слон на белом или зеленом фоне. Она была создана как отличный заметочный сервис, который со временем приобрел дополнительные функции.
Evernote – это электронный помощник, аналог бумажного ежедневника. В этот универсальный электронный блокнот можно внести заметки различных форматов: аудио, видео, скриншот или фото, текст.
Evernote прекрасно работает с различных платформ, не важно, где он установлен: на телефоне или на ноутбуке. После синхронизации работы вся информация будет доступна с любых устройств.
Кроме этого достаточно легко можно найти все, что было там размещено. Ведь вся информация легко структурируется при помощи тематических блокнотов, специальных меток. Достаточно ввести в поиск нужную фразу, дату или слово.
Перечень доступных функций будет зависеть от выбранного пакета, ведь платные варианты предоставляют значительно больше возможностей для работы с электронным ежедневником.
Кстати, такой электронный блокнот невозможно забыть дома, ведь телефон всегда под рукой. Информация никогда не потеряется, так как все заметки сохраняются на облачном сервере.
Безопасно ли работать с облачным хранилищем?
Компании Evernote доверяют более 225 миллионов пользователей. Они сохраняют свои заметки на облачных серверах Google, не беспокоясь за их безопасность.
Кроме этого совсем не обязательно все свои заметки отсылать в облачные хранилища. Какую-то часть данных можно сохранять только на своих стационарных компьютерах, защищая от различных неожиданностей.
В надежности самой компании Evernote можно не сомневаться. Она существует уже достаточно долго, количество пользователей только увеличивается. Есть рабочая финансовая схема, согласно которой часть пользователей переходят с бесплатного доступа на один из платных вариантов: Premium или Business.
За сохранность информации можно не беспокоиться, так как:
Однако говорить об идеальной безопасности данных, размещенных на облачных серверах, нельзя. Поэтому каждый пользователь решает самостоятельно, какую информацию можно доверить, а какую лучше оставить на своем жестком диске или флешке.
Как синхронизировать работу в Evernote?
Программа легко устанавливается на любое устройство, независимо от операционной системы. Если на компьютер нужно скачать и установить программу с официального сайта, то на мобильные устройства приложение скачивается из соответствующего магазина.
Например, на андроид – из GooglePay, на продукцию яблочного бренда – из AppStore. Следует обратить внимание, что дополнительная установка приложения на Windows 10 не требуется. Программа предустановлена и доступна. Достаточно авторизоваться в своем аккаунте Evernote или создать новый аккаунт.
Для эффективной работы при установке приложения необходимо сразу указать параметры синхронизации. В бесплатной версии можно синхронизировать работу только двух устройств, например, стационарный компьютер и мобильное устройство. В платных версиях количество устройств для синхронизации работы не ограничено.
Итак, синхронизация – это процесс обновления всех изменений в блокнотах, заметках для поддержания информации в едином виде. Информация после синхронизации будет одинаковой на всех выбранных устройствах и доступной для дальнейшей работы.
Есть несколько моментов, на которые важно обратить при синхронизации:
Однако в платной версии для работы доступны оффлайн-блокноты на мобильных устройствах. Такой вариант помогает сэкономить место и не закачивать все заметки на телефон.
Работа в приложении: пошаговая инструкция
Для того чтобы начать работать в приложении и пользоваться всеми доступными возможностями, необходимо сделать следующие шаги:
Интерфейс программы достаточно прост. Доступны три обрасти рабочего экрана:
Если необходимо дополнить или изменить уже существующую заметку, то нужно найти ее в блокноте и отредактировать. Предусмотрен поиск по определенному слову, фразе, дате создания и метке. К каждой заметке можно прикреплять несколько ярлыков. Однако, злоупотреблять этим не следует.
Evernote Web Clipper: что это такое?
Дополнительное расширение Web Clipper помогает сохранять данные при просмотре страниц сайтов в интернете. Конечно, можно сохранить страницу в закладках браузера и вернуться к ней позднее. Но если информация касается нужной темы, то эффективнее сохранить ее сразу в блокноте. При этом есть возможность сохранить только выбранный фрагмент страницы.
Это расширение можно установить в браузере, выбрав нужный вариант из списка. О том, что расширение установлено, будет указывать соответствующая пиктограмма в строке браузера.
Для того чтобы активировать это расширение, необходимо кликнуть по пиктограмме и авторизоваться. При этом обязательно поставить галочку около фразы «Запомнить меня». В этом случае не нужно каждый раз вводить свои данные для активирования приложения.
Для того чтобы сохранить страницу или определенный фрагмент, необходимо кликнуть по слову на сайте. Из выпадающего меню выбрать нужное действие и сохранить.
Если нужно сохранить фрагмент страницы, то его необходимо выделить мышкой и выбрать пункт «Сохранить выделенный фрагмент».
Чем можно наполнить Evernote?
Не все пользователи понимают, как работать с этим электронным ежедневником. Но после создания первой пары блокнотов приходит понимание, чем можно наполнить этот инструмент.
Этот список можно продолжать, ведь каждый пользователь обязательно открывает для себя новые возможности. Очень важно помнить, что есть некоторые ограничения при работе с Evernote в зависимости от выбранной версии.
Ограничения касаются количества блокнотов в одной учетной записи, доступной памяти для сохранения материала и так далее.
Коротко о главном
Итак, Evernote – что это за программа и нужна ли она? Это отличный помощник, который возьмет на себя функции по сохранению, сортировке всей полезной и интересной информации. Каждый пользователь сможет найти отличное применение программы в зависимости от своих целей.
На чем написан evernote
Вторая версия Evernote SDK для Android: новые возможности Evernote в ваших приложениях
Десятки тысяч разработчиков уже используют платформу Evernote, чтобы сделать свои приложения функциональнее и привлекательнее для 100 миллионов пользователей нашего сервиса. Очевидно, что значительная часть этого сообщества имеет дело с Android.
С недавним обновлением приложения Evernote для Android нам представилась возможность также подготовить Evernote SDK 2.0 для Android, мы рады пригласить разработчиков опробовать новые возможности в своих проектах.
Это обновление включает ряд важных изменений:
Evernote для Android взял на вооружение Material Design от Google
В прошлом году Google анонсировала свежий подход к дизайну приложений для новой версии Android — Lollipop. Сразу после этого команда Evernote для Android засела за работу над соответствующим обновлением для вышедшего в прошлом году Evernote 6 для Android.
Мы обсудили особенности нового дизайна с менеджером продукта Терезой Питтапили (Theresa Pittappilly ) и дизайнером Адамом Глинн-Финнеганом (Adam Glynn-Finnegan), чтобы лучше понять, что стоит за этими изменениями.
Как Evernote находит текст в изображениях
Поиск текста в изображениях — достаточно популярная функция Evernote. Мы бы хотели рассказать, как она работает и ответить на некоторые частые вопросы.
Как происходит обработка изображений
Когда в процессе синхронизации заметка отправляется в Evernote, любые ресурсы, включенные в эту заметку, с MIME-типами PNG, JPG или GIF пересылаются на отдельный набор серверов, занятых исключительно распознаванием текста во вложенных изображениях и возвращением найденных результатов. Эти результаты добавляются в заметку в виде скрытого (точнее не видимого при просмотре заметки) набора метаданных под названием recoIndex. Весь recoIndex можно посмотреть, если экспортировать заметку в файл ENEX.
Например, вот старая заметка в одном из наших аккаунтов со снимком пивной бутылки.
Scannable: новое приложение от Evernote для сканирования документов на iPhone/iPad
Сканирование документов с помощью телефона не происходит в вакууме, это часть повседневных рабочих задач, и приложение для сканирования должно это отражать — служить для работы, а не ради самого процесса. Оно должно опираться на содержание документов, а не на механическую оцифровку бумаг.
Поэтому мы рады представить Scannable. Это приложение доступно для iPhone и iPad и создано для того, чтобы не только сканировать, но и быстро делиться полученными файлами (вряд ли вам нужен еще один чек в галерее устройства).
Scannable: новое приложение от Evernote для сканирования документов на iPhone/iPad
Сканирование документов с помощью телефона не происходит в вакууме, это часть повседневных рабочих задач, и приложение для сканирования должно это отражать — служить для работы, а не ради самого процесса. Оно должно опираться на содержание документов, а не на механическую оцифровку бумаг.
Поэтому мы рады представить Scannable. Это приложение доступно для iPhone и iPad и создано для того, чтобы не только сканировать, но и быстро делиться полученными файлами (вряд ли вам нужен еще один чек в галерее устройства).
В Evernote для Android появилось сканирование визиток
Сканирование визитных карточек, одна из популярных премиум-функций Evernote, теперь доступно на Android.
Сервис Evernote не затронут багом Shellshock
Новый Evernote 6 для Android: редизайн, веб-клиппер и многое другое
Число пользователей Evernote для Android растет быстрее, чем у всех других наших приложений. Для некоторых версия для Android стала удобным дополнением к Evernote на компьютере, но многие используют Android в качестве главной платформы, а Evernote — в качестве основного рабочего пространства. Обновления в шестой версии должны оказаться особенно полезными именно для второй группы.
Обновление Evernote Web Clipper 6.2 для Chrome
Сегодня мы обновили наше расширение для быстрого копирования информации из браузера в Evernote, сделав этот процесс более простым и удобным.
Evernote для Android Wear

Теперь, когда на рынке появились Samsung Gear Live и LG G Watch, мы рады рассказать, как Wear позволит вашим «умным часам» и Android эффективно работать в связке.
Evernote API: гео-помощник ГдеСейчас

Приложение: ГдеСейчас/GeoMe
Разработчик: gdeseychas.ru
Местонахождение: Санкт-Петербург
Платформы: iPhone, Android, Chrome, Pebble
Категория: Связь, Социальные сети
Интеграция: Подключить аккаунт Evernote
Помимо основной функции (узнать кто и где находится) ГдеСейчас — это инструмент для работы с гео-заметками. В отличие от социальных сервисов, таких как Foursquare и другие, здесь речь идет не о публичных местах, а о бытовых: домашние и рабочие адреса друзей, места без определенного названия/адреса, которые могут пригодиться в будущем.
Первая бета-версия Evernote для Mac 5.6 доступна для установки
В течение полугода наша команда работала над полной переработкой Evernote для Mac во всех аспектах работы приложения. Мы поставили перед собой задачу создать более быструю и стабильную версию Evernote для Mac. Новая версия также получилась более экономичной в плане энергопотребления.
Работа еще не закончена, но мы уже готовы предложить вам опробовать нашу бета-версию и помочь с обнаружением ошибок в работе приложения. Желающие могут установить приложение по ссылке в конце поста.
Три закона о защите данных в Evernote [обновление]
В нашей работе есть несколько базовых принципов, которые особенно важны для нас, которые мы отстаиваем и которые играют определяющую роль практически во всех принимаемых нами решениях. В 2011 году мы изложили их в виде трех законов о защите данных.
Evernote преодолел отметку в 100 миллионов пользователей
Мы рады сообщить, что у Evernote теперь более 100 000 000 пользователей.
Новые возможности сканирования визиток в Evernote с LinkedIn
Мы постарались сделать Evernote еще удобнее для сканирования визиток и сегодня хотим представить результат нашей интеграции с LinkedIn. Используя данные LinkedIn о более чем 300 миллионах специалистов по всему миру, Evernote теперь может при сканировании каждой визитки автоматически создавать заметку, заполненную дополнительной информацией, включая контактную информацию, ссылку на профиль человека в LinkedIn, фотографию и поле для комментария. Таким образом, каждая отсканированная визитка превращается в исчерпывающую заметку о контакте, доступную для поиска в Evernote.
Существующие пользователи Evernote могут связать свои аккаунты с LinkedIn и получить год бесплатного доступа к премиум-функции сканирования визиток.
Индексация рукописного текста в изображениях: от европейских языков к азиатским
Автор: Евгений Лившиц, руководитель исследовательской группы в московском офисе Evernote
С учетом недавно добавленной поддержки китайского система распознавания Evernote (ENRS, Evernote Recognition System) сейчас индексирует рукописные заметки на 24 языках. Каждый раз, когда мы беремся за новый язык, перед нами встают новые задачи, связанные со спецификой конкретного алфавита и стиля письма.
Дополнительные сложности возникли, когда мы взялись за восточноазиатские языки: китайский, японский и корейский (CJK). Эти языки требуют поддержки на два порядка большего числа символов, при этом каждый из них значительно сложнее тех, с которыми мы имели дело раньше; пробелы между словами необязательны; при высоком темпе письма люди часто переходят на скоропись, что делает интерпретацию в значительной степени зависимой от контекста.
Evernote для Android получил поддержку рукописных заметок
Иногда быстрый набросок от руки — лучший способ выразить идею. Будь то график на совещании, уравнение в университетской аудитории или мысль в поездке — рукописные заметки способны помочь вам быстро и просто зафиксировать свои мысли и наблюдения.
Когда мы начали работу над цифровым рукописным вводом в Evernote для Android, мы понимали, что наш подход потребует большего, чем просто расширить существующую функциональность приложения еще одним способом ввода данных в аккаунт.
Практическая реализация заняла у нас немало времени. Зато, как нам кажется, у нас получилось.
Обновление Evernote для Windows: ускоренная синхронизация и редактирование изображений
Evernote для Windows получил два заметных улучшения. Во-первых, теперь можно вносить правки в изображения, которые хранятся в ваших заметках. Во-вторых, вы обратите внимание, что синхронизация происходит гораздо быстрее.
Правки на изображениях
Наши партнеры: UC Browser для копирования веб-страниц в Evernote на iPhone и iPad
Большинство из нас проводит в Интернете много часов каждый день, и мы регулярно находим материалы, которые стоит добавить в Evernote. За компьютером можно быстро сохранить веб-страницу, используя Evernote Web Clipper. В случае с iPhone и iPad может помочь UC Browser.
Скорость синхронизации в Evernote выросла в четыре раза
Синхронизация ваших заметок на всех используемых компьютерах и телефонах была ключевой функциональностью Evernote изначально, с момента запуска сервиса летом 2008 года. Обеспечение надежной и стабильной синхронизации — наша основная задача. Со стороны ее не видно, и лучшей похвалой для нас было просто то, что она просто работает. С сегодняшнего дня она просто работает быстрее.
Когда мы создавали начальную архитектуру сервиса, то имели дело с поддержкой нескольких тысяч пользователей, в основном работающих с одного устройства и создающих заметки для себя. Теперь у нас десятки миллионов пользователей с несколькими устройствами, которые хранят и делятся заметками, фотографиями и документами.
Наша инфраструктура выросла с дюжины серверов до более чем семисот в нескольких дата-центрах. Изначальная архитектура неплохо справлялась с этим ростом, но мы знали, что так не может продолжаться вечно.
















