Главное Свежее Вакансии Образование
Выбор редакции:
😼
Выбор
редакции
8 944 3 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Как штаны для йоги обвалили инфраструктуру Amazon

Глава отдела разработки компании Ecwid Василий Васильков рассказал достойную экранизации историю из жизни компании. И пригласил на работу сотрудников, которые помогут избежать таких эксцессов в будущем.

b_5d4aed1107259.jpg

Вступление: выкройки на тыквы и золотые слитки

Ecwid это глобальный SaaS e-commerce конструктор, и у нас куча пользователей практически из любой страны мира, и торгуют они настолько разными вещами, что только диву даешься.

Страусиные яйца – да, пальмы в горшках (воткнуть на своих шести сотках) – да, свои картины – конечно, чужие картины – даже лучше, музыка, парфюмерия, одежда, еда, вода, алкоголь, яхты, наконечники для пипеток и всё остальное, что вы только сможете вообразить.

Один из моих любимых примеров – золотые слитки. Какой-то чувак из Австралии сделал себе магазин на Ecwid и начал продавать натурально слитки из золота и серебра. Не какие-то золотые побрякушки, кольца или банальные цепочки, no sir! Увесистые такие слитки, при взгляде на которые мерещится золото инков или сокровища капитана Флинта, а рука сама тянется к абордажной сабле.

Конечно, на самом деле все было не так романтично, а просто магазин из Австралии продавал золото и серебро, добытое и отлитое в слитки в той же Австралии. К слиткам прилагались все положенные печати, клейма и ворох сертификатов, но ни грана романтики. Их можно было просто купить и играть в Кощея Бессмертного (см. "над златом чахнуть"), но этот магазин мне все равно нравился.

Второй пример, который я очень люблю – выкройки на тыквы для Halloween. Представьте себе обычную семью, он – работник культуры, дирижёр, она – оператор башенного крана высшей категории, дом, собака, ну и дети там какие-то бегают. Вы живёте, ходите на работу, ругаете детей за двойки, гуляете с собакой как вдруг внезапно Halloween, ПРАЗДНИК!

Именно в этот момент надо вспомнить про другой отличный магазин на Ecwid и купить там выкройки для тыквы. Вы покупаете бумажную выкройку с Фредди Крюгером, летучими мышами, сотоной из Южного Парка, ангелами, демонами и бог еще знает чем, а потом просто прикладываете её к тыкве и, как Микеланджело, "отсекаете всё ненужное". Пять минут работы и готово – ваши тыквы выглядят просто атас, лучшие на районе.

"ШТАНЫ!!!

Однако, рассказать я хотел совсем не об этих магазинах. Сегодня я хочу рассказать про магазин, который весь Ecwid знает как "ШТАНЫ!!!" и дальше вы поймете почему.

Итак, есть магазин на Ecwid, продает всего три товара и все они – yoga pants. Пока мужики убежали гуглить что это такое и залипли там в картинках на полчаса, я добавлю что больше в этом магазине ничего нет – просто три разных вида штанов. С технической точки зрения это очень простой магазин – в нем нет сложной, глубоко вложенной структуры категорий, нет большого количества вариантов у товаров, нет огромных картинок в UltraSuperMegaHD чтобы подчеркнуть неимоверную красоту и несомненную пользу этих штанов, в которые засунуты подтянутые женские жопы. Ничего такого, очень простой и "плоский" магазин, у нас таких сотни тысяч. Трафика в этот магазин тоже не очень много, что-то на уровне нескольких запросов в секунду. Пять-десять, не больше.

Вообще, у нас очень много таких небольших магазинчиков, которые что-то продают, а у них это покупают чаще всего местные клиенты, из этого же города или страны. Представьте себе маленькую, уютную французскую булочную – пекарь, он же владелец, он же продавец, его знает весь район, одни и те же люди покупают у него круассаны каждое утро уже много лет. Вот как-то так и у нас, только online.

Как говорится, "ничего не предвещало", магазин работал, штаны продавались, а большинство из инженеров знать не знало что в мире есть какие-то особенные женские штаны для йоги, как вдруг сервер, который обслуживал этот магазин, внезапно наглухо отрубился. Он не отвечал по HTTP и SSH, с него перестали идти логи, а все что можно было сделать с ним в Amazon – дёрнуть рубильник, просто выключив сервер целиком. В конце-концов так и сделали, сервер поднялся и тут же лег опять. Повторили – результат тот же, сервер поднимается и через минуту опять наглухо отключается. Дальше было как-то так:

- Ок, мы же на Amazon, давайте возьмем сервер в два раза мощнее и посмотрим?

- Давайте. Гм, не помогло.

- А если в четыре раза?

- Та-а-а-к, ясно.

- А восемь?

- Ну ты смотри как падает стабильно.

- Шестнадцать?

- Да хер там.

- Тридцать два?

- Вроде дышит? Кажется помогло.

- Ништяк, ничего не трогаем. У меня два вопроса – что это было и кто взял мой валидол?

Потом мы, конечно, немного восстановили картину используя обрывки логов и "метод пристального взгляда" – это была распродажа штанов для йоги. Вот так просто – в магазин внезапно набежали спортивные тётки и уронили нам часть кластера, которая до этого спокойно обслуживала примерно 200.000 магазинов одновременно. Среди этих 200.000 было много очень активных магазинов с кучей посетителей и продаж (не говоря об остальных), а тут вдруг один магазин затмевает собой остальные десятки и сотни тысяч. Гм.

Первые 20 лет своей жизни я хотел стать физиком-теоретиком (это потом уже увидел TurboPascal и потерял покой) и для себя я сравниваю это явление со взрывом сверхновой. Живет себе звезда, никого не трогает, ни ипотеки ни алиментов и вдруг взрывается, да так, что в оптическом диапазоне светит сильнее, чем остальные звезды галактики вместе взятые. Даже в самой завалящей галактике примерно сотня-другая миллионов звезд, а тут вдруг одна начинает излучать энергии больше, чем остальные сотни миллионов в сумме.

Так и тут – продавали штаны и вдруг "разорвало" так, что инфраструктура, рассчитанная на 200.000 магазинов, легла и смогла работать только после того, как мы увеличили сервера в десятки раз.

Конечно, мы периодически оптимизируем Ecwid в том числе и для таких внезапных нагрузок, но для такой распродажи этого было мало. Ну что же, это был хороший внешний тест стабильности инфраструктуры (хоть мы и не заказывали). По результатам нашли узкие места, оптимизировали, успокоились.

Нашествие штанов 2.0

Прошел год...

За прошедший год было много событий и мы давно забыли про магазин со штанами, но они про нас нет. Одним прекрасным днем владельцы магазина написали в нашу службу поддержки что планируют заказывать рекламу на "very popular TV show", ожидают массу заказов и, помня предыдущий раз, просят что-нибудь сделать с нашей инфраструктурой заранее. Это же прекрасно (ответили инженеры), спасибо за предупреждение (добавили админы) и немедленно сильно увеличили размер серверов во всех частях кластера, имеющих хоть какое-то отношение к этому магазину. Увеличили и стали ждать.

Шоу началось и, видимо, оно действительно было очень популярным. Я слабо знаком с американским телевизором и не помню название, но я прекрасно помню что произошло дальше, когда шоу прервали на рекламу. Рекламу штанов. У нас легло все, отвечавшее за этот магазин. По эффективности воздействия это можно было сравнить с уборщицей рядом с розеткой – сервера просто молча уходили в себя и не возвращались. В этот раз мы уже точно знали что происходит и немедленно стали увеличивать железо в десятки раз и, через какое-то время, восстановили работу сервиса. Не до конца, со скрипом, треща по швам, но инфраструктура кое-как справлялась с потоком желающих посмотреть и, возможно, прикупить себе модных штанов для йоги. Никогда йогу не понимал, а после того случая еще и не люблю.

Позже мы примерно восстановили картину роста нагрузки по метрикам. Идет шоу – все нормально, включается реклама – мы падаем через 30 секунд. За 30 секунд нагрузка вырастает примерно на четыре-пять порядков. Такое впечатление, что люди ждут рекламу с планшетом в руках чтобы сразу же бежать на нужный сайт.

После того как закончилось "Нашествие штанов 2.0" мы опять извинились перед клиентом за очередной провал, за то, что не выдержали набег покупателей (как и в первый раз) и засели за оптимизации. На этот раз очень плотно, отдельные задачи по переделке инфраструктуры закончились только сейчас, спустя несколько лет после этой атаки штанами.

Выдержит ли это штаны?

Разумеется, эта история не была бы полной, не приди к нам "ШТАНЫ!!" опять, в третий раз, но здесь мы были готовы как следует – сотни больших и мелких оптимизаций в коде и заранее увеличенный в несколько раз кластер. В этот раз мы выдержали, собрав дополнительную информацию для следующей пачки оптимизаций и в дальнейшем штаны уже практически никак не задевали нашу инфраструктуру, но само выражение осталось с нами и стало внутри-Ecwid-овским мемом.

"Проверьте на штаны", "кажется, штаны пришли", "попахивает штанами" и даже "всё накрылось штанами" (а не тем, чем вы подумали) – спокойно используемые обороты, их не надо объяснять никому. "Выдержит ли это штаны?" – обычный вопрос при обсуждении архитектуры, а фразой "пиши код хорошо, а то штаны придут" старики пугают молодых разработчиков.

Если рядом с вами инженер вдруг называет DoS штанами, а DDoS – распределенными штанами, ставлю стейк против сухарика что это сотрудник Ecwid.

Я постоянно ищу инженеров в команду разработки Ecwid. Если вам интересно (или хочется научится) писать код, который переживает "ШТАНЫ!!!" – напишите мне сюда или на vgv@ecwid.com. У нас большой, географически размазанный кластер (USA, Europe, Australia), куча Amazon-технологий, микросервисная архитектура, а так же Kotlin, Java, Elm, TypeScript, PostgreSQL, Cassandra, Redis, SOLR, Consul, Clickhouse, Kubernetes (что-то точно забыл) сотня релизов в день и, конечно же, ШТАНЫЫЫЫЫЫ!!!!!

Сама вакансия вот тут

Тестовые задания тут

P.S. А еще нам нужен DevOps, задачи интересные, зарплата достойная (на штаны точно хватит). Если вы как раз DevOps, почитайте, пожалуйста, тут.

Источник

+2
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Майя Блюм
Вот я думала думала над архитектурой под новый проект, а тут Ваши штаааанны) давно так не смеялась, потрясающая статья) и очень поучительная) Спасибо!
Ответить
Оксана Ефремова
Подозреваю, что это только в Америке так работает. У нас вся реклама – это антиреклама.
Ответить
Дмитрий Духнич
Про dynamic load balancing вы видимо не слышали
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.