Империя Dropbox — Как и зачем компания два года переносила собственные данные на свои сервера и что это значит для индустрии

Издание Wired опубликовало материал, в котором рассказало, как компания Dropbox переносила данные пользователей с серверов Amazon на собственные компьютеры. Для этого команда сервиса разработала собственную систему хранения данных Magic Pocket и сервера Diskotech.

Редакция vc.ru публикует перевод заметки.

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

На протяжении первых восьми лет Dropbox хранил многие миллиарды файлов, принадлежащих тем 500 миллионам пользователей. По сути, стартап из Сан-Франциско хранил их не совсем самостоятельно. Как и многие другие стартапы, Dropbox использовал облачную платформу Amazon. Она позволяет создавать и использовать программное обеспечение, не тратясь на «железо». Другими словами, эти миллиарды файлов хранились на серверах Amazon, а не на серверах, принадлежащих и обслуживаемых Dropbox.

Теперь с этим покончено. За последние два с половиной года Dropbox создал собственную обширную сеть и перенёс туда всю свою деятельность. Опираясь на опыт ветеранов Кремниевой долины — Google, Facebook, Twitter и других, — компания успешно переместила 90% пользовательских файлов на территорию новой онлайн-империи. С инженерной точки зрения, это определённо подвиг. Но значение этого подвига простирается далеко за пределы самого Dropbox. По иронии судьбы, это событие показывает, какое влияние «облачные» технологии оказывают на принципы работы бизнеса. И в то же время оно обнажает огромные перемены, произошедшие на мировом рынке аппаратного обеспечения за прошедшие десять лет.

04e234c4e669dd.jpg

Всё больше компаний переносят данные в «облако». По оценке аналитической компании Forrester Research, к 2020 году объём рынка «облачных» вычислений составит $191 млрд долларов. Отказавшаяся комментировать этот материал Amazon недавно сообщила, что выручка её подразделения Amazon Web Services в четвертом квартале 2015 года составила $2,41 млрд. Годовой же оборот превысил $9,6 млрд, и это довольно много, если учесть уход Dropbox.

Некоторым компаниям, когда они вырастают до определённого размера, действительно имеет смысл создать собственную сеть и отказаться от «облачных» сервисов. Amazon, Google и Microsoft могут поддерживать низкие цены на «облака» благодаря масштабам своего бизнеса. И все же свои услуги они продают не по себестоимости. «Никто не занимается облачным бизнесом как благотворительностью. Маржа обязательно присутствует», — говорит вице-президент Dropbox, бывший сотрудник Facebook Адитья Агарвал. Если вы достаточно выросли, то можете сэкономить огромные деньги, отказавшись от «облака» и прочих излишеств. Dropbox считает, что вырос достаточно.

И всё-таки, создание сети такого размера — задача невероятно сложная, справиться с которой может не каждый. «Правильное решение — не заниматься этим самостоятельно», — убеждён бывший профессор Калифорнийского университета в Санта-Барбаре Урс Хольцле. Он был восьмым по счёту сотрудником Google, и сейчас занимается в компании «облачными» сервисами. По его словам, лишь немногие компании обладают размерами и структурой, необходимыми для экономии за счёт масштаба. Если рост компании буксует, создание собственной сети может его разогнать. Это суждение актуально для Dropbox. В последние месяцы инвесторы и аналитики с тоской смотрели на компанию, отмечая, что её оценка в $10 млрд завышена, а медленное развитие не позволяет привлечь ценных корпоративных клиентов.

По словам исполнительного директора Dropbox Денниса Вудсайда, компания извлекла существенную выгоду из перехода на собственные мощности. Ирония в том, что Dropbox продемонстрировал мощь «облака», отказавшись от него: компания создаёт собственную инфраструктуру, чтобы это не пришлось делать её клиентам. Формируя эту инфраструктуру, Dropbox начинает наравне с Amazon, Google и Microsoft двигать мировой рынок «железа» в новом направлении.

***

Amazon лидирует на первичном рынке «облачных» вычислений. Её основные конкуренты — Google и Microsoft. Все три компании предоставляют услуги, которые позволяют бизнесу и независимым разработчикам использовать любое программное обеспечение, не закупая для этого аппаратные мощности.

В то же время растёт объем вторичного рынка, главными участниками которого выступают Dropbox, его заклятый враг Box.com, Saleforce.com, Workday и другие компании. Они занимают иную рыночную нишу, предлагая пользователям готовые программные решения. Как и более крупные игроки, они предоставляют бизнесу и разработчикам инструменты, пользоваться которыми можно, не тратясь на аппаратное обеспечение. «Следующий этап для этой отрасли — битва между платформами», — говорит гендиректор Box.com Аарон Леви.

Dropbox хочет войти в число победителей этой битвы. Компании предстоит обострённая конкуренция с Amazon, Google и Microsoft, которые также расширяют ассортимент готовых программных решений для клиентов. В сущности эти гиганты уже конкурируют с Dropbox, Box.com и им подобными за счёт инструментов для обмена файлами. А эта ниша вряд ли будет сильно увеличиваться. Обмен отдельными файлами — фото, видео, документами Word и электронными таблицами — теряет прежнюю важность из-за смартфонов и сервисов наподобие Slack.

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

845407017effd2.jpg

***

Джеймс Коулинг знаком с создателями Dropbox ещё с тех пор, как они обучались в Массачусетском институте. Будучи выпускником, он изучал системы распределённых вычислений, включающие от десятков до тысяч машин — совместно с одним из первых работников Dropbox. Здесь же он познакомился с Дрю Хьюстоном, который является основателем и генеральным директором стартапа. Выпускники поддерживали связь друг с другом и часто обсуждали дела Dropbox, и во время одной из таких бесед затронули вопрос о том, как стартап мог бы отказаться от услуг Amazon. «Казалось, что до этого далеко, как до Луны», — вспоминает Коулинг.

В 2012 году, рассказывает Коулинг, Google (компания, которая специализируется на вещах, казавшимися раньше недостижимыми) предложила ему место в команде разработки проекта Spanner — базы данных, от которой зависит большая часть работы поискового гиганта. Spanner — вероятно, самая большая и сложная база данных в мире, самая распределённая из всех распределённых систем. Однако Коулинг отказался в пользу места в Dropbox. «Я хотел создать что-то сам», — говорит он. Spanner уже существовала, а «облачную» империю Dropbox только предстояло построить.

На протяжении долгого времени система Dropbox работала на «облачной» платформе Amazon и на собственных серверах компании. Данные и файлы, с которыми одновременно работали несколько пользователей, хранились в Amazon Simple Storage Service (S3). Метаданные (информация о том, кому принадлежат эти файлы, кому разрешается производить в них изменения и так далее) хранились в собственном дата-центре Dropbox.

Вместе с бывшим работником Google Ахилом Гупта и другими членами команды Коулинг спроектировал и разработал систему, которая позволила Dropbox хранить сотни петабайт данных (такого объёма информации достаточно, чтобы заполнить сотни миллионов USB-накопителей) гораздо эффективнее, чем если бы они хранились в Amazon S3. Система получила название Magic Pocket. «Dropbox — это место, где вы можете хранить все важные для вас вещи. Они не теряются, и у вас всегда есть к ним мгновенный доступ, — объясняет Гупта. — Волшебный карман».

Другими словами, команда построила собственный Amazon S3 — с той лишь разницей, что созданная система заточена на решение конкретных технических проблем, возникающих у компании. «Мы построили то, что нужно нам, а не просто разработали замену Amazon S3», — говорит Агарвал.

Ещё в то время, когда данные Dropbox хранились на серверах Amazon, один из крупнейших мировых ритейлеров представил собственную систему для хранения и обмена файлами — то есть стал в каком-то роде конкурентом для Dropbox. Система от Amazon оказалась не такой удобной, как Dropbox, а кроме того, у неё не было признанного бренда, но для команды Dropbox это стало ещё одним поводом для беспокойства.

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

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

***

Годами ИТ-гиганты Google, Facebook, Microsoft и Amazon создавали собственное аппаратное обеспечение для дата-центров. У них просто не было выбора: их бизнес вырос до таких размеров, что использовать обычное оборудование было и дорого, и неудобно. Требовалось новое поколение оборудования, которое было бы дешевле, совершеннее, гибче. И они такое оборудование создали, работая с производителями техники и поставщиками из Азии и других регионов.

Сейчас Google производит больше серверов, чем кто-либо на Земле, хотя и не торгует ими. Примерно такая же картина — у Amazon и Microsoft. А так как эти компании не только производят сервера, но и предоставляют клиентам «облачные» услуги, многие другие организации вовсе отказываются от закупки техники у «традиционных» производителей аппаратного обеспечения, развертывая свои системы на платформах этих корпораций. Такая практика стала ещё более распространенной после того, как Facebook раскрыла собственные технологии проектирования и создания аппаратного обеспечения. Теперь множество компаний, включая, например, китайского производителя Quanta, продаёт обеспечение, основанное на технологиях Facebook.

f19eead82cbc9f.jpg2798f35f5581eb.jpg

Рами Алджамал знает об этих изменениях не понаслышке. Именно она занимался созданием новой аппаратной структуры в Twitter, а затем помогал Dell вернуть себе часть технологического рынка с помощью собственной «облачной» платформы DSC. Теперь он занимается проектированием соответствующих машин для Dropbox. Так же, как и Google, Amazon и Microsoft, команда Dropbox решила, что ей нужна собственная система хранения информации, соответствующая потребностям компании.

Dropbox хранит огромное количество данных, поэтому компании понадобилось подходящее для этих целей оборудование. Его созданием занимается команда инженеров во главе с Алджамалом в штаб-квартире Dropbox в Сан-Франциско. Разработанное обеспечение они называют Diskotech. «Наибольшее внимание мы уделяем дискам — ведь вся информация хранится именно на них», — объясняет Алджамал. Устройство с габаритами 45×120х15 см вмещает 1 петабайт данных (1024 Тб). Пятидесяти таких устройств хватит, чтобы вместить всё когда-либо написанное человечеством.

***

Коулинг и его команда начали разработку программного обеспечения летом 2013 года и потратили на создание исходного кода около полугода. Но это был сравнительно небольшой шаг. Когда система была построена, надо было убедиться в её работоспособности. Нужно было перенести всё программное обеспечение на новое «железо», а также перенести все данные с серверов, принадлежащих Amazon.

Весь процесс занял два года. Стоит ли говорить, что проект такого масштаба сам по себе является сложной технологической задачей. Однако здесь возникли проблемы и логистического характера. Перенести большой объём данных по сети — это одно. Перенести большой объём данных из одного дата-центра в другой — это совсем другое. Команде Dropbox предстояло решить сразу две эти задачи, так как система обслуживала сотни миллионов людей, и они не должны были столкнуться с проблемами доступа к собственным данным.

«Представьте движущийся автомобиль, — говорит Дэн Уильямс, бывший сетевой инженер Facebook, который руководил переносом данных между серверами. — Вам нужно поменять шины прямо во время того, как он едет по дороге». Другими словами, команда Dropbox не могла позволить себе отключить систему на время переноса данных. Стартап не мог сказать сотням миллионам пользователей, доверивших собственные файлы Dropbox, что информация временно недоступна. Одним из главных показателей успеха этого мероприятия стало бы, если бы пользователи вообще не заметили этой миграции.

После того, как Коулинг и его команда создала исходный код системы, разработчики оттестировали программное обеспечение на обычных серверах, которые хранили примерно в пять раз меньше данных, чем сервера Amazon. Перед командой стояла задача обеспечить бесперебойную работу системы и не обнаружить критических ошибок в течение 180 дней. В одном из залов в офисе Dropbox повесили часы, которые вели обратный отсчёт. Первая крупная ошибка обнаружилась через два месяца после начала тестирования. Выяснилось, что система имеет доступ к данным, которые хранятся не в нужном месте. Обратный отсчёт был запущен заново. В итоге на тестирование ушло восемь месяцев.

Затем команда, уверенная, что система сможет обеспечить нормальную работу Dropbox, начала переносить код на новое аппаратное обеспечение, параллельно выполняя перенос данных с серверов Amazon. У сотрудников оставалось шесть месяцев до окончания контракта с Amazon. «Это очень короткий промежуток времени», — говорит Коулинг.

Сама по себе задача переноса данных с одних серверов на другие — грандиозная проблема. Переместить петабайты данных с одних компьютеров на другие — совсем не то же самое, что скачать несколько песен на ноутбук. Даже самые широкие каналы передачи данных могли передавать не больше четырех петабайт информации в день. «Вы ограничены скоростью света», — говорит Агарвал.

В то же самое время требовалось настроить компьютеры, которые получали бы все эти данные. Представьте себе администратора из вашего офиса, который пытается настроить компьютер для нового сотрудника — только в масштабах Dropbox. Кроме того, все его усилия ограничены временными рамками. Промедлив, сотрудники рисковали не успеть перенести все данные из Amazon. Каждый день работники устанавливали от 40 до 50 аппаратных стоек, на каждой из которых располагалось по восемь машин. В какой-то момент работа встала из-за непредвиденных сложностей — за одни сутки сразу два грузовика, перевозящие аппаратное обеспечение Dropbox в дата-центры по всей стране, попали в аварии.

Несмотря на все возникшие проблемы, команде Dropbox удалось перенести все данные до обозначенного срока. Компания отказалась от продления контракта с Amazon. Dropbox продолжает использовать услуги Amazon в Европе — только потому, что на этом континенте бизнес компании растет менее предсказуемо. Более 90% данных компании были перенесены на её собственные сервера. Пришло время для радикальных действий.

***

Когда все данные оказались перенесены из дата-центров Amazon, Рами Алджамал стал совещаться с инженером аппаратного обеспечения Джейми Тернером. Magic Pocket — версия системы Amazon S3, разработанная Dropbox, — всё ещё работала на самых заурядных компьютерах. Следующим шагом должен был стать перенос платформы на специально разработанные для этих целей сервера. Алджамал и Тёрнер, инженер, получивший образование по специальности «Английский язык» и поработавший во многих стартапах, вместе начали подгонять новое аппаратное обеспечение для развертывания Magic Pocket. Команда Алджамала собрала одну машину Diskotech, но возникла проблема: оборудование не подходило для Magic Pocket. Тогда Тёрнер переписал систему на другом языке программирования.

Это может показаться странным. Зачем устанавливать систему на тысячу компьютеров, чтобы потом полностью её переписать и поместить на тысячу других компьютеров? Однако в крупных компаниях всё работает именно так. Сервера быстро устаревают, и многие компоненты системы перестают работать. Тогда компаниями приходится их менять. Нужно постоянно модернизировать то, что у вас есть. Для начала команда Dropbox убедилась, что Magic Pocket будет работать на обычных серверах. Это далось компании довольно тяжело. Затем она модернизировала оборудование. Теперь предстояло сделать так, чтобы два компонента работали вместе.

Кроулинг, Тёрнер и другие сотрудники изначально использовали для разработки Magic Pocket язык программирования Go, разработанный корпорацией Google. Это язык, созданный специально для распределённых онлайн-систем. Ещё один тренд — на создание таких языков: у Apple есть Swift, у Mozilla — Rust, существуют также независимые разработки типа D. Все они позволяют разрабатывать программное обеспечение, которое сможет работать на сотнях или даже тысячах машин.

Однако объём памяти, который требовался Magic Pocket для работы, когда система была реализована на Go, оказался слишком большим для промышленной системы такого масштаба. Команда Dropbox начала искать язык, который позволил бы использовать меньший объём памяти, и остановилась на Rust. Теперь в дата-центрах компании установлено программное обеспечение, реализованное на этом языке.

***

Это действительно рискованное предприятие. Однако теперь, когда корпорации вроде Google, Microsoft и Amazon прошли через него, от других компаний этого не требуется. В этом заключается вся сила облачных вычислений. Да, Dropbox — это не Google и не Amazon. Компания не предлагает разработчикам и предприятиям инфраструктуру для развертывания и поддержки собственного кода. Однако созданная Dropbox система позволяет обычным и корпоративным пользователям обмениваться документами и хранить файлы, не устанавливая специального программного и аппаратного обеспечения — чем больше бизнес, тем сложнее такая задача. «Облачные» системы предлагают решение этой проблемы. Для своих пользователей Dropbox создала инструменты для редактирования текста и коллаборативной работы Dropbox Paper. Сторонние разработчики могут подключить свои приложения к платформе Dropbox.

Главная опасность для компании заключается в том, что гиганты вроде Microsoft или Google могут попытаться сдержать рост Dropbox, расширяя функциональность собственных сервисов. Тогда переход компании на новые сервера может оказаться для неё сдерживающим фактором, а не решением проблемы. Так, например, игровая компания Zynga, которая решила перенести данные на собственные сервера — однако вскоре у организации начались проблемы, и в итоге она осталась с инфраструктурой, которая была ей не нужна. Сейчас Zynga вернулась к сотрудничеству с Amazon.

Основное преимущество Dropbox состоит в том, что в команде стартапа трудятся люди, которые имели дело с системами таких масштабов и ранее — Агарвал, Гупта, Уильямс и другие. Дэн Уильямс отмечает, что в таких системах есть нечто привлекательное. «Если вы занимались чем-то подобным ранее — в Google или Facebook — вы привыкаете к таким масштабам. И когда они исчезают, вы начинаете по ним скучать», — говорит он.

И это не пустое развлечение. Такая система может сэкономить компании миллионы долларов. Однако здесь есть и свои опасности. В Долине есть особая болезнь — синдром «Not Invented Here». Компании, страдающие таким синдромом, начинают изобретать новые вещи только потому, что им хочется создать что-то новое.

Неважно, сможет ли Dropbox построить с помощью своей системы новый вид бизнеса, или она окажется просто инженерным экспериментом — теперь у Dropbox есть собственное изобретение. Dropbox разработала своё хранилище. Первой такой подход продемонстрировала Google. Google стала настолько успешной корпорацией не только потому, что она создала свою поисковую систему, но и потому, что она разработала инфраструктуру, необходимую для её работы. Так же поступила и Facebook, в которой работает огромное количество бывших сотрудников Google. Так же поступила и Twitter. Теперь к ним присоединилась и Dropbox. Для того, чтобы стать гигантом, поначалу вам придётся опираться на плечи других. Но как только вы им станете, то почувствуете, что нужно именно вам, чтобы построить собственный дом, который идеально вам подходит.

©  vc.ru