«Облака лишними не бывают, когда файлов много и клиенты хотят, чтобы они были всегда доступны». Так решили в онлайн-сервисе amoCRM и сделали платформу Mail.ru Cloud Solutions (MCS) основной облачной площадкой для хранения файлов, сократили время доступа к ним и адаптировали работу под требования российского законодательства (152-ФЗ). О переезде в облако и пользе, которую получили клиенты сервиса, рассказывает Никита Бессуднов, SRE-инженер amoCRM.
Что дает amoCRM? Эта система помогает выстроить прозрачные, эффективные отношения с клиентами и повысить эффективность отдела продаж. Она автоматически фиксирует заявки и запросы клиентов по всем каналам, потому клиенты не теряются, а коммуникации всегда под рукой.
Предыстория
В начале пути мы работали с bare metal, но позже избавились от физических серверов. Нам нравилось, что мы могли влиять на железо и не зависели от виртуализации, но не устраивало, что у этой инфраструктуры не было ни гибкости, ни мобильности.
С облаками мы близко знакомы последние шесть лет. До этого мы подсчитали: файлы на дисках обойдутся нам дороже, чем облако. Раньше нашим облачным провайдером была компания Amazon, на мощностях которой мы хранили все файлы, которые загружают наши клиенты в систему. Параллельно мы работали с американским провайдером Rackspace. У него мы хранили и продолжаем хранить файлы наших клиентов из США.
Зачем нам еще один облачный провайдер
Впервые мы задумались о новом провайдере с серверами в РФ, когда начались блокировки Telegram’a. Тогда под раздачу попали IP-адреса Amazon’а. Клиенты жаловались на недоступность данных, и мы поняли, что нужно оперативно решать эту проблему. Amazon был не основной, а резервной площадкой, но ситуация оказалась очень неприятной и для нас, и для наших клиентов. Они не могли загрузить или, наоборот, скачать файлы со своих аккаунтов. По временной ссылке, которую мы генерировали специально для Amazon, они не получали то, что им нужно. Это первая и основная причина, по которой мы начали думать об альтернативном облачном провайдере.
Вторая причина – необходимость хранения данных на территории Российской Федерации. 152-ФЗ накладывает определенные ограничения, и мы вынуждены выполнять его требования. Соответственно, нужен был провайдер с серверами именно в РФ.
Третьей причиной стали проблемы с хранением статических файлов. Когда у Amazon’а появились проблемы с доступом, интерфейс amoCRM начал некорректно работать на клиентской стороне. Например, слетали шрифты и не подтягивались изображения, которые тоже хранились в амазоновском облаке.
Получается, нас не устраивали три глобальные вещи: территориальный фактор, проблемы с доступом и сбои в работе со статическими файлами. Еще один облачный провайдер должен был закрыть эти проблемы, чтобы мы наконец-то продолжили работать в штатном режиме.
Как мы выбирали наше третье облако
Мы учли все, что нам не нравилось в сложившейся ситуации, и выделили три приоритетных критерия для выбора еще одного облачного провайдера.
Первое: цена. Конечно, нам хотелось адекватной стоимости облачных услуг. Была важна не столько скорость загрузки файлов, сколько их постоянная доступность за ту цену, которая нас устроит.
Второе: возможность быстрого переезда. У нас скопился довольно большой объем файлов – 20 терабайт. Нам было важно перевезти их в новое облако как можно быстрее, чтобы наши клиенты это не почувствовали.
Третье: высокая доступность и нахождение на территории РФ. В идеале сервис должен быть доступен 100 % времени, но это нереальные показатели. Amazon гарантировал нам доступность 99,8 %. Это много и хорошо, но проблемы настигли нас с территории РФ – начались блокировки. Плюс хранилища Amazon’а, которыми мы пользовались, находились в Амстердаме, а этот вариант не подходил под требования закона «О персональных данных».
Какие альтернативы мы рассматривали
Вначале мы смотрели в сторону облака нашего провайдера. Но нас предупредили, что оно находилось в тот момент в стадии тестирования. По разным причинам не подошло решение от Яндекса. В тот момент его облако только запускалось, также находилось в стадии beta и в первую очередь несло в себе облачные вычисления, нам же нужно было облако для файлов. И на третьем провайдере мы остановились окончательно – это было облако Mail.ru Cloud Solutions. Оно подошло под наши требования, плюс из документации мы узнали, что это хранилище совместимо с протоколом S3, который используется в Amazon. Значит, нас ждал (в теории) более-менее безболезненный переезд.
Как мы перевезли 20 ТБ в облако MCS…
Кейс получился интересным, потому расскажу о нем подробнее. Как я говорил, нам предстояло перевезти 20 терабайт. Наш обычный интернет-канал не давал возможности быстро передавать такие объемы, потому мы договорились с провайдером о том, чтобы временно его расширить.
Дальше был еще один интересный момент. Изначально шла речь о том, чтобы передавать файлы из Амстердама в Москву, а затем направлять их на площадку MCS, которая находится где-то в центральной части РФ. Но этот вариант нам не понравился – слишком долго и затратно по ресурсам. Потому мы пошли другим путем: взяли промежуточный сервер нашего провайдера (нам повезло, у него часть оборудования находилась как раз в Амстердаме), который по выделенному внутреннему каналу вначале скачивал файлы из Amazon’а, передавал их на свой сервер в Москву, а уже оттуда – в облако MCS.
Передача файлов – процесс не мгновенный, потому мы разработали решение, которое отправляло файлы небольшими частями и переключало аккаунты клиентов на новое хранилище. Естественно, мы это заранее протестировали, рассчитали примерное время, разбили аккаунты на несколько групп и только потом запустили все это в работу. Чтобы исключить ошибки, весь процесс передачи мы непрерывно контролировали.
А теперь представьте: мы переехали за 6–7 дней (цифры плавающие, так как мы несколько раз временно останавливали передачу данных) и сравнительно небольшие деньги. Один рабочий день ушел на проверку целостности файлов – к счастью, битых среди них не оказалось. Если бы мы перевозили данные на физических носителях, нам бы понадобилось 45 SSD-накопителей стоимостью 25 000–30 000 каждый, или суммарно около 2 млн рублей! Получается, мы неплохо сэкономили ☺
Кстати, у Amazon’а есть решение для тех, кто хочет переместить данные физическим способом. Они копируют эти данные на диски, а мы перевозим их так, как нам удобно. Но нам было совсем не выгодно лететь в Амстердам, подавать заявку, заниматься там бюрократическими вопросами, а затем с физических носителей переносить данные в облако.
…И что из этого получилось
Сейчас у нас три облачных площадки для хранения клиентских файлов amoCRM и основная – это как раз Mail.ru Cloud Solutions. Нам нравится, что у нее высокая доступность, а данные хранятся на территории РФ, соответственно, мы не нарушаем закон. Площадка Amazon’а осталась резервной, а в Rackspace мы по-прежнему храним файлы американских клиентов.
После переезда в MCS клиенты стали быстрее получать свои файлы. Если раньше для их скачивания приходилось обращаться к серверу в Амстердаме, то сегодня хранилище расположено ближе, и время передачи данных сократилось.
Если перевести профит в цифры, то получится, что мы ускорили работу с файлами в 2–2,5 раза – это разница в скорости, с которой отдают файлы облака MCS и Amazon. Вспоминаем блокировки Telegram’a и связанные с ними сложности доступа к Amazon’у. Теперь проблема исчерпала себя, и нашим клиентам не приходится устраивать танцы с бубном и скачивать свои же файлы VPN только потому, что мы хранили их не в России.
Еще один приятный бонус – экономия. Мы не просто получили аналогичное по стоимости решение, а теперь тратим на хранение и скачивание столько же, сколько раньше уходило только на одно хранение в облаке Amazon.
Нам приятно, что удалось улучшить user experience при загрузке и скачивании файлов. Это хорошо заметно на большинстве файлов размерами 10–15 МБ. Если раньше для их загрузки требовалось от 1 до 5 секунд, то теперь уходит не более 0,5 секунды. На скачивание такого же объема раньше уходило до 15 секунд, сейчас этот параметр не превышает 1–2 секунды. Более тяжелые файлы весом до 1 ГБ – это скорее исключение, и в их случае загрузка и скачивание длятся чуть дольше.
Облакам быть!
Мы не новички в облаках, но заново открыли для себя их преимущества после переезда на платформу MCS. Наш главный приоритет – хранилище S3. Облачную инфраструктуру используем только для внутренних проектов. У нас пока нет реального сценария для ее применения в продакшене, но планы на будущее есть. Нам нравятся контейнеры: они гибкие, быстро разворачиваются в облаке и сразу готовы к работе. На них мы экспериментировали с нейросетями для отработки действий в системе – учились предсказывать ответы на вопросы в чате с пользователями. Пока это было разовое мероприятие, но есть вероятность, что в будущем мы снова вернемся к самообучающимся системам и тогда потребуются уже полноценные облачные вычисления, в том числе на графических картах.
Онлайн-сервисам, одним из которых является наш продукт amoCRM, можно начинать работать с облаком с самого начала – тогда, когда встает вопрос о хранении клиентских файлов. Использовать для этого физические носители неудобно и невыгодно: они дорого стоят и их нужно постоянно докупать. То же самое для сервисов, которым нужны вычисления – лучше переносить их в облачную инфраструктуру, которая дает больше мобильности. Мы в свое время пропустили подходящий момент для разворачивания инфраструктуры в облаке, что обернулось большими денежными и трудозатратами. Чтобы сделать это сейчас, придется перепрограммировать систему и переделать под нее часть хранилищ, а это долго и дорого.
Какие выводы мы сделали
- Не все облака одинаково полезны.
- В России есть достойные альтернативы Amazon’у.
- Переехать в новое облако можно быстро и недорого.
- Хранить данные в облаке надежно и удобно.
- Чем ближе хранилище, тем лучше uptime и UX.