Интервью с Моисеем Урецким, сооснователем и директором Digital Ocean

71aa7c48539649ebbeda95a8fc89549d.jpgКак возникла идея DO? На рынке уже были тысячи хостинг-провайдеров, не говоря о таких гигантах, как Amazon, Google, Microsoft. Наверняка все говорили, что ваша идея провалится?

До DO мы с братом много лет занимались хостингом, и в какой-то момент стало понятно, что все движутся в сторону «облака». Многие компании начали намного раньше нас — мы и сами тогда работали с различными провайдерами. Все они строили свои облака так, как считали нужным и правильным, но получалось как-то неоправданно сложно.

Так что мы решили, что займемся облаками и сделаем все по-своему, создадим свою версию, которая понравится нам самим, — что, наверно, было не очень разумно. Дело в том, что все, с кем мы это обсуждали, говорили, что это плохая идея и нам вообще не стоит за это браться :).

Так что, пожалуй, в этой истории не было никакой магии. Была хорошо знакомая нам область, в которой мы уже много работали. Нам не нравились представленные на рынке решения, и мы захотели сделать свое. Так возникла идея создать нечто, чем мы могли бы пользоваться сами и посмотреть, не захочет ли кто-нибудь еще тоже этим воспользоваться.

Кто был среди основателей, кроме вас? Вы все были программистами?

Основателями выступали я, мой брат Бен, Джефф Кар, Алек Картмен и Митч Вайнер. Все мы были разработчиками, но с разными наборами умений и с разным фокусом. Бен более подкован по части работы с сетями, системного администрирования и управления конфигурациями. Джефф — специалист по бэкендам, низкоуровневому программированию. У меня — смесь из фронтенд-разработки и системного администрирования, плюс у меня есть художественный бэкграунд, поэтому я присматриваю за тем, как выглядит наш продукт. Митч — наш маркетолог, но и он в прошлом много занимался разработкой и успел основать небольшую компанию, выпускавшую CRM-систему. Алек очень хорош в Rails.

В самом начале нашей команды хватало для решения всех задач, но потом, конечно, начали появляться новые проблемы и пришлось расширяться. Все-таки строить облако куда сложнее, чем просто писать софт и его деплоить. Например, многое завязано на физической инфраструктуре и куче серверов.

Изначально вы хотели взять какие-то готовые технологии (вроде OpenStack«а)?

В самом начале разработки мы действительно посматривали на то, что можно было найти в открытом доступе. Мы выбирали между CloudStack, OpenStack, Eucalyptus и еще несколькими проектами, но ни один из них восторга у нас не вызывал. С любым из них пришлось бы все переделывать под себя. Все-таки, когда создаешь высокотехнологичный продукт, ориентированный на разработчиков, то все внутренние технологии и API важны не меньше интерфейса. Даже начинающий разработчик рано или поздно выходит за рамки стандартной админки, и тогда в дело вступает то, что у продукта находится «под капотом».

Успех приходит не сразуКак вы набрали первых пользователей? Все получилось сразу? Мы тогда работали в коворкинге и просто положили пачку рекламных листовок в лифте и пригласили людей опробовать наш новый сервис Digital Ocean, получить на тест бесплатный облачный сервер. Разумеется, никто к нам не пришел, зарегистрировалось три человека, и на этом все могло закончиться. В общем, запуск как-то не очень удался :). Однако мы вложили в DO такое количество времени и сил, что решили продолжить работать.

Нам неожиданно представился шанс продемонстрировать DO на New York Tech Meetup, которую организует Meetup.com. Среди присутствующих нашлось 700–800 очень подкованных технически людей, все они были в восторге. Помню, когда мы проводили демонстрацию, мы пытались протестировать пару новых штук, например пытались выстроить интеграцию с GitHub«ом, но все было еще не совсем готово, так что на сцене нам пришлось показать фейк и представить его как бета-версию.

Потом, во время афтерпати, к нам подходили люди и задавали вопросы, они были в восторге от того, что мы делаем. У нас зарегистрировалось пятьдесят человек. Так что нашу платформу использовали уже не пять, а пятьдесят человек. Да, это был долгий путь.

А к инвесторам вы обращались, пробовали что-то еще?

Да, например, мы решили попробовать поучаствовать в TechStar и даже стали финалистами New York City TechStars, но Дэвид Тиш сказал нам: «Я не совсем понимаю, чем вы занимаетесь, парни, потому что я не технарь. Так что не уверен, что смогу вам помочь». Как бы то ни было, он посоветовал нам принять участие в программе Boulder (boulder.me). Мы обратились к ним, и они согласились провести техническую экспертизу. Но в итоге мы услышали все то же самое, что нам до этого говорили другие инвесторы: что Amazon AWS — наш крупнейший конкурент, что успеха не будет, что у нас ничего не получится. Мы ответили: «Ладно, вы «очень нам помогли» — и продолжили заниматься тем, чем занимались.

А потом, в январе, спустя несколько месяцев, мы все-таки запустились. Отклик возник гигантский и почти моментально. До этого у нас подключалось пять-шесть человек, и вдруг все просто взорвалось — каждый день регистрировались сотни разработчиков. Мы осознали, что нам нужно немедленно регистрировать компанию, нанимать поддержку для пользователей, убедиться, что серверов в дата-центре достаточно, и так далее. Этот процесс, в общем-то, завертелся и не прекращается по сей день. Мы очень быстро увеличили штат компании до ста человек, но,  по сути, мы делаем все то же, что и раньше, просто возникают новые челленджи. При этом нужно постараться не огорчать клиентов, которые в нас поверили и полюбили наш продукт. Мы стараемся сделать все, чтобы отплатить им тем же и продолжить радовать их и дальше.

Digital Ocean изнутри Как со временем менялся ваш технологический стек? Вы действительно используете Go для разработки? Любая компания проходит через одни и те же фазы. Все начинают с минимального продукта (MVP), выпускают прототип, который смогли создать, имея в распоряжении малое количество людей. В подобной ситуации отталкиваются не от нормального планирования, а прежде всего от того, что конкретный человек хочет разрабатывать и как он будет это писать. Из-за этого толком не представляешь, когда напорешься на проблему.

В частности, в январе 2013 года, когда все закрутилось и стало расти в геометрической прогрессии, нам пришлось перестроить всю систему, потому что она становилась все более запутанной. В частности, мы распределили все сервисы, чтобы в случае падения одного из сервисов не рухнула вся система.

В общем, мы убили кучу времени на то, чтобы перестроить код и перепланировать всю архитектуру. И вот тогда в наше поле зрения и попал Go, потому что это очень быстрый, новый язык, в котором много интересного. Думаю, это большая редкость — иметь идеальную тестовую площадку для таких вещей. А когда у тебя тысячи серверов, рассредоточенных по всему миру, Go очень естественно ложится в эту распределенную систему.

По сути, мы прошли через все муки роста, наша работа не ограничивалась созданием новых фишек и допиливанием продукта. Например, планирование выглядело следующим образом: мы оценивали свои масштабы, умножали их на десять и уже на эту цифру опирались, работая со своей архитектурой. И почти каждый раз, когда мы практиковали это «упражнение», Go вписывался идеально. К тому же люди, которым интересен Go, как правило, очень хорошие разработчики, и им интересны те проблемы, над которыми работаем мы. Благодаря этому мы смогли набрать большую команду отличных инженеров, готовую как поддерживать существующие продукты, так и делать новые.

483568822e2145e8a5f6cd6893256db7.pngАкула Сэмми, талисман сервиса

Что сейчас находится «под капотом» Digital Ocean? Признаться, я удивлен, что вы используете все свое.

Мы действительно почти не используем сторонние инструменты. Исключение — некоторые низкоуровневые тулзы, но и их мало. Все, что касается управления, планирования, ивентов, управления аккаунтами, мы делаем сами.

Не спорю, OpenStack — интересная штука. Но его открытость сильно переоценена — все-таки этот проект развивается коммерческой организацией, а это как-то неправильно. Это не типичная опенсорсная история, в которой два-три человека собрались вместе и в свободное время что-то написали, а потом их поддержало комьюнити, помогло им, и все стали пользоваться продуктом. Есть немало примеров проектов, которые не очень поддерживались сообществом и развивались в основном благодаря компаниям. Почти во всех случаях все заканчивается одинаково: разработчики пытаются угодить всем сразу, в процессе участвует слишком много заинтересованных лиц, в итоге — полная дезорганизация. Мы со всех сторон слышим о проблемах с OpenStack и о том, что после деплоя все время разработчиков уходит на отлов багов и попытки заставить все нормально работать. Мы считаем, что если уж тратить свои ресурсы на багфиксы, то пусть это по крайней мере будут наши собственные баги.

Какое железо используете?

В основном Dell и SuperMicro. Они поставляют надежное железо, так что мы работаем с ними уже несколько лет. Они очень хорошо относятся к нам и стараются всячески поддержать. Нам приходится осуществлять закупки в самых разных странах, и каждый новый дата-центр только прибавляет сложностей с логистикой, заказом серверов, их доставкой, сборкой и так далее. Поэтому иметь такого партнера, как Dell, у которого, как правило, в каждой стране есть представительство, очень удобно. Например, мы недавно открыли дата-центр в Амстердаме, и на то, чтобы доставить туда партию серверов, понадобилось 12 дней. Раньше это занимало у нас порядка двух месяцев. Поэтому мы бы и рады собирать собственные серверы, но сейчас для нас основным приоритетом является логистика.

Безопасность и другие проблемы Для любого PaaS и хостинга безопасность — головная боль. Особенно когда с твоих мощностей начинают делать всякие гадости. Как вы это отслеживаете, как боретесь? Безопасность — это большая проблема. Мы общались с разными компаниями и стартапами, спрашивали у них, какие цифры по абьюзу и фроду наблюдают они. Мы говорили со многими крупными компаниями в Нью-Йорке. Порядка 1–2% их транзакций — мошеннические. Но пара процентов — это ничто, потому что нам приходится иметь дело с 30–40%! То есть каждый третий зарегистрированный пользователь Digital Ocean — фейковый.

Это действительно огромная проблема, затрагивающая всю индустрию. Если у тебя есть низкоуровневый доступ к серверу, делать можно что угодно: сканить порты, DDoS«ить, заниматься фишингом, рассылать спам и так далее. То есть список возможных гадостей практически бесконечен, но многие злоумышленники даже не понимают, что наносят кому-то вред. Многие из них просто учатся писать код и разбираются в технологиях, для этого они и занимаются разными сомнительными экспериментами. Они не понимают, что их поступки вызывают множество проблем, просто они любознательны. Наша работа заключается в том, чтобы выявлять такие инциденты и не мешать «законопослушным» пользователям. К сожалению, это скорее искусство, чем наука.

Но каких-то успехов вы добились?

Конечно, мы используем множество разных технологий. Иногда сотрудничаем с другими компаниями, которые специализируются на решении такого рода проблем, но много автоматизации производим и сами. Однако даже компании, для которых это основная работа, где работают мегаумы, гении… даже эти компании скажут вам: «Слушайте, мы постепенно этим зай­мемся, будем работать день за днем, но все равно не гарантируем вам стопроцентного результата. Как только мы найдем какое-то решение, злоумышленники придумают, как его обойти».

Но мы это понимаем, нормально к этому относимся.

Самая неприятная ситуация — это когда в результате автоматизированных тестов нормального пользователя отмечают как нарушителя.

Естественно, для них это становится полной неожиданностью и приводит к различным проблемам. Мы стараемся общаться с такими пользователями, объясняем им, почему мы так поступаем. К сожалению, это, конечно, портит им весь юзер-экспириенс и огорчает их, и такие пользователи имеют полное право злиться и возмущаться. Но, увы, если ничего не делать, то проблем будет еще больше, в итоге пострадают вообще все пользователи. Обойти этот вопрос просто невозможно. Поэтому нужно продолжать работать, стараться изо всех сил.

5beff745e4df45e49074a515308e78c6.pngК концу 2013 года Digital Ocean обошел AWS по темпу роста числа веб-серверов — по данным Netcraft. Естественно, общее число инстансов здесь не учитывается

Когда речь идет о таких масштабных проектах, как DO, возможно, глупо спрашивать про главные проблемы, с которыми вы сталкивались. Но все же — что вы могли бы выделить особо?

Думаю, что главная проблема не на каком языке писать продукт, а как спроектировать оптимальную архитектуру. В нашем случае основные проблемы связаны с объединением распределенных систем — нужно постоянно оптимизировать то, как данные синхронизируются по разным участкам твоей архитектуры. И чем обширнее география твоего проекта, тем острее стоит эта проблема.

У нас был интересный случай, когда мы открыли представительство в Сингапуре. До этого у нас было центральное место, где мы хранили данные, так как задержка между Восточным и Западным побережьями США и Амстердамом была одинаковая и ничего особенно не тормозило.

Но когда мы пришли в Сингапур, стало очевидно, что задержка до Сингапура явно куда выше, чем мы предполагали. Плюс помимо проблемы с лагом есть и проблема надежности канала — это еще одна задача, которую решают в рамках распределенных архитектур.

Словом, это очень интересный набор проблем.

Когда все продолжает разрастаться, даже у самых банальных проблем обнаруживаются новые аспекты. Собирать аналитику с виртуальных машин в таких масштабах — это уже интересный челлендж, особенно когда ты хочешь получать данные в реальном времени. Как минимум нужно убедиться, что все уведомления рассылаются верно и своевременно. Так что, даже реализуя самые базовые вещи, в таких масштабах приходится разбираться в мельчайших деталях.

DO сегодня Я довольно активно использую API. За три последних года он уже дважды менялся. В чем была проблема оригинального API? Существуют ошибки, которые так или иначе совершаются; что-то получается хорошо, что-то хуже. Первый API был потрясающий, им пользовалось огромное количество людей по всему миру. Но наши клиенты «взрослели» и со временем обнаружили ряд ограничений. Было две основных вещи, которые мы хотели изменить.

Первое: мы очень хотели сделать API полностью RESTful. Оригинальная версия этим похвастаться не могла, что создавало определенные проблемы с Google, написанием wrappers и так далее. Это не удовлетворяло многих.

Второе: пользователи стали вытворять с нашим API такое, до чего мы сами бы никогда не додумались. Например, люди начали писать мобильные приложения для работы с DO. Наш API не поддерживал OAuth, поэтому для авторизации приходилось копировать в приложение ID и длиннющий ключ — явно не лучший юзер-экспириенс. Все это мы учли в новой версии.

В новой версии вообще много внимания уделяется интеграции. Благодаря этому стало проще думать о разработке новых сервисов и интеллектуальных приложений. Теперь им можно гибко назначать различные роли и права доступа. Словом, мы начали думать о наших пользователях не как об индивидуальных разработчиках, а как о большой единой экосистеме.

Какая фича в DO самая крутая, на ваш взгляд?

Я считаю, что самая крутая фича любого продукта — это не то, что вы видите, а то, чего вы не видите. Иными словами, лучшие фичи — те, которые мы не стали внедрять. Это особенно важно, когда речь идет о продукте, ориентированном на разработчиков. Когда делаешь что-то для продвинутых пользователей, всегда есть желание напихать побольше функций и настроек. Но в результате получается неудобный интерфейс и плохой юзер-экспириенс. Так что думаю, наше главное преимущество — в умении находить баланс.Мы всегда думаем о том, зачем добавлять в продукт ту или иную фичу, как нам от нее избавиться в случае чего. Если продукт уже перегружен, мы думаем о том, как его упростить, как забрать часть груза и сложностей на себя, а не заставлять наших пользователей разбираться со всем этим самостоятельно.

Почему важно комьюнити Мне нравится, как вы работаете со своим комьюнити и пользователями. Каждый раз, когда ты пишешь в суппорт и получаешь ответ по существу от человека, который явно в теме. Вокруг DO уже сейчас сформировалось серьезное комьюнити, как вам это удалось? Комьюнити — это, бесспорно, один из наших приоритетов. У нас есть три главных принципа: любовь, простота и комьюнити. Все начинается с любви — мы сами должны любить свой продукт, ведь если даже мы его не любим, то почему его должен полюбить кто-то другой? Также нужно любить своих пользователей. Когда эти условия соблюдены, ты понимаешь, что можешь сделать очень многое, чтобы помочь людям. Думаю, мы так плотно на этом концентрируемся, потому что без поддержки, которую нам оказывает комьюнити, у нас ничего бы не вышло.

Речь даже не о комьюнити вокруг Digital Ocean, которое, конечно же, просто замечательное. Речь о том, что, к примеру, без возможностей, которые сегодня предоставляет Linux, не было бы DO. Linux предоставляет виртуальные серверы, без Linux нас не было бы вовсе. Мы используем языки программирования, за которые не производим никаких отчислений, мы не платим никаким авторам, правообладателям и так далее.

Мне кажется, для нашего поколения и последующих это уже образ жизни и данность, когда-то ведь такого попросту не было. Без этого создать компанию было бы куда сложнее. Сейчас многие говорят о том, что затраты на создание компании стали гораздо меньше, и во многом это происходит благодаря open source. К примеру, если вы решите сегодня запустить собственный облачный хостинг, вы можете либо заплатить кучу денег, либо обратиться к open source альтернативам.

А что вы, со своей стороны, делаете для комьюнити?

Мы спонсируем несколько конференций, чтобы лично общаться с пользователями. Нужно всегда оставаться на связи с комьюнити, потому что, если не делать этого, очень скоро вы перестанете понимать, что для них важно. Они замечательные, они дарят нам столько любви и поддержки, вдохновляют нас работать дальше. А еще прекрасно то, что они предельно честны. Когда мы совершаем ошибки, они почти сразу говорят нам: «Эй, парни, вы накосячили», и это очень здорово. Ведь когда ты совершаешь ошибку, лучшее, что ты можешь сделать, — это признать, что допустил промах, и работать над его исправлением. Это очень высокая планка, но нам приходится соперничать с компаниями, стоящими миллиарды долларов, они вынуждают нас конкурировать на высоком уровне и мотивируют нас делать это с позитивом, а не сидеть в сторонке, глядя на этих гигантов, и думать: «нам такого уровня не достичь никогда». Они буквально принуждают нас оставаться в тонусе, сдерживать свои обещания. Мне кажется, мы обязаны своим успехом именно этому. Если мы продолжим в том же духе, я полагаю, мы достигнем еще большего.

10c8183b17f346c7bf726f05af26a63b.png

Впервые опубликовано в журнале «Хакер» от 08/2014.

Подпишись на «Хакер»

6d3e3990b645b719835d84e9c02699ef.png

117fc75d3fe93b8601be69119c2ecd88.jpg

© Habrahabr.ru