Разработка и инженерия

страница 10 из 44
пост №1457Разработка и инженерия

«В России второй день не выдают права и не регистрируют автомобили. Серверы ГИБДД залило водой».

Во первых, помещение для серверов, которое залило водой — в 2021 году звучит как нонсенс. Современный дата-центр — это не амбар, в котором серверы стоят под трубами с водой и потолок протекает. Рекомендую эпизод нашего подкаста про дата-центры, чтобы стало понятно, почему это звучит как бред.

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

пост №1451Разработка и инженерия

Закончил на днях технический аудит очередного клиента. Хочу поделиться историей, которую вижу буквально в каждом втором случае.

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

Через 3-6 лет в компании уже 50 разработчиков. Продукт при этом практически не развивается, фичи доставляются разработкой в продакшен со скорость улитки. Добавьте к этому зарплаты разработчиков в 100-400 тысяч в месяц и вы можете представить, что чувствует бизнес. Почему так?

А происходило вот что: все эти годы, каждый раз, когда нужно было выбрать между «сделать фичу побыстрее прямо сейчас» и «сделать так, чтобы это можно было потом поддерживать, пусть и подольше прямо сейчас» — бизнес с разработкой вместе выбирали первый вариант. Логично, что рано или поздно гора неподдерживабельного кода становится слишком высокой и уже никто не может докинуть ещё что-то сверху.

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

В общем, искать виноватого смысла нет, а варианты решений следующие:

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

2. Если же вам нужно развивать то, что есть — то впереди вас ждут пот и слёзы.

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

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

Организационно, вам придётся выделять на это адское количество времени и сил. Речь о 30-50% времени ваших инженеров. Результаты, в плане увеличения скорости разработки, вы увидите через месяцы в лучшем случае. Другого пути я не знаю.

Также, имеет смысл добавить в команду новых опытных бойцов. Дело тут не только в технической компетентности, но и в отсутствии психологических «долгов», свежести и незамутненности взгляда, в четком мандате на перемены. Желательно, чтобы человек уже имел опыт подобного рефакторинга.

В общем, это — путь смелых.

Добавлю, что обычно, ко всем этим техническим проблемам добавляется ещё и нежелание признать реальность, когда бизнес требует, а команды регулярно обещают больше, чем могут реализовать. В результате, разработка постоянно существует в режиме пожара (какая уж тут инженерная культура, когда ничего не успеваешь!), а бизнес постоянно не доволен и не верит обещаниям программистов.

Приведение этого процесса в порядок — отдельная работа, но об этом — в следующий раз.

пост №1449Разработка и инженерия

За десять лет до яндекса и гугла, Maps.me создали мобильное приложение с картами, которые работали офлайн, без интернета.

Для обработки данных карт в телефоне не хватает ни процессора, ни памяти. О том, как в Maps.me решили эту проблему и откуда вообще берется информация о мире в приложениях говорим с сооснователем сервиса, Юрием Мельничеком. Слушайте на всех платформах: Apple, Google, Castbox, Spotify, Яндекс, Overcast, веб-версия.

Тот случай, когда я думал «ну технически там всё понятно, быстренько пробежимся и поговорим про бизнес-часть». Оказалось, что там полный взрыв мозга с точки зрения алгоритмов, программирования и технологий. Так что часть разговора про бизнес в картах мы вынесли в отдельный эпизод в бонусном канале запуск++, подписывайтесь и слушайте: Apple, Патреон.

За фото спасибо Кириллу Уланову!

пост №1448Разработка и инженерия

Мы перезапустили блоги на Снобе! Блоги — часть Сноба, где можно зарегистрироваться, заплатить и публиковать свои посты. Лучшие посты редакция продвигает на главной, вместе с редакционными статьями. У постов есть комментарии, которые могут оставить только подписчики. Это сообщество с богатой историей: в ходе работы я наткнулся на профиль Бориса Немцова!

Проект создавался как функциональный конкурент фейсбука в 2008 году, над ним работали несколько поколений программистов и за годы накопился огромный технический долг. Блоги медленно загружались; плохо отображались в мобилах; глючили, порой страницы совсем не открывались; часто, у подписчиков не получалось зайти в админку и опубликовать свои посты.

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

Мы планировали завершить перезапуск блогов за 6 месяцев, а заняло это все 8. Когда я примерно в середине проекта завел разговор о том, что очень стыдно и как вообще быть, Марина Геворкян, издатель Сноба, ответила мне следующее: «вы за 4 месяца сделали то, что мы не могли сделать 4 года».

В общем, горжусь нашими ребятами. Герои:
- Никита Алёшников, бэкенд-разработчик
- Фёдор Борщёв, технический директор
- Михаил Бурмистров, ведущий фронтенд-разработчик
- Вячеслав Набатчиков, бэкенд-разработчик
- Всеволод Скрипник, бэкенд-разработчик, руководитель проекта
- Денис Сурков, бэкенд-разработчик
- Владимир Тарановский, фронтенд-разработчик.

Отдельное спасибо Марине Геворкян за доверие и Валерии Тищенко за отличную продуктовую работу.

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

P.S. Федя опубликовал подробную техническую статью о том, что мы делали под капотом. Рекомендую технарям!

P.P.S. Постараюсь больше не пропадать и рассказывать о том, что и как мы делаем по работе.

пост №1429Разработка и инженерия

Как устроена мобильная связь?

5G, LTE, отели базовых станций, антенны, мобильные операторы, аукционы частот, роуминг и сетевые уязвимости. О сотовой связи говорим с основателем компании Fairwaves Александром Чемерисом.

Саша делится историями, как создавал сотовые сети в глухих африканских деревнях и для мексиканских горцев (не шутка).

Слушайте и подписывайтесь: Apple, Google, Castbox, Spotify, Яндекс, Overcast, веб-версия.

пост №1422Разработка и инженерия

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

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

Проблемы у профессий тоже схожие: код и инфраструктура частенько пахнут и даже СМЕРДЯТ, это вам любой человек с опытом копания в старых системах подтвердит.

Если вы фронтендер, бэкендер или менеджер и хотите работать на не-вонючих проектах — пишите Феде. Мы расширяем свою команду.

пост №1421Разработка и инженерия

Новостной эпизод подкаста сегодня по мотивам падения фб.

Гости: технический директор ВКонтакте Александр Тоболь и глава сетевой инфраструктуры Mail.ru Group Елена Якупова 🔥

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

Записывались прям ночью во вторник, очень старались успеть к четвергу :)

Слушайте и подписывайтесь: Apple, Google, Castbox, Spotify, Яндекс, Overcast, веб-версия.

пост №1420Разработка и инженерия

Злоумышленники взломали главный сервис для стримеров twitch.tv, который Безос недавно купил за миллиард долларов. Не просто взломали, а выложили огромный массив внутренних данных в публичный доступ.

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

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

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

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

Если после каждой громкой новости о взломе чинить одну вещь в своей инфраструктуре — за пару лет получится конфетка. Начать можно прямо сегодня.

пост №1419Разработка и инженерия

ФБ рассказал, почему они упали в понедельник.

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

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

В этот момент все сервера Фейсбука пропали с радаров интернета, Фейсбук для внешнего мира сломался.

Все было бы ничего, инженеры могли бы быстро включить все обратно, но у фейсбука есть специальная автоматизированная система, которая проверяет связность DNS серверов с дата-центрами компании и в случае проблем — отключает эти серверы от интернета. В понедельник, эта система отключила все DNS-серверы компании от интернета.

DNS — адресная книга интернета. Эта система переводит человеческий адрес Facebook.com в машинный айпи-адрес 157.240.224.35. Формально, интернет может работать и без DNS, в реальности на работе DNS завязано почти ВСЁ. Например, внутренние сервисы — инструменты, которыми пользуются инженеры фейсбука для решения проблем. Да что там сервисы, сотрудники фб в офисы не могли попасть, потому что автоматической системе контроля дверей тоже нужна DNS.

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

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

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

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

пост №1417Разработка и инженерия

ФБ начал возвращаться в строй. Сетевая связность восстановлена, заработал DNS. Приложения, скорее всего, тоже скоро очухаются.

Вот хороший обзор ситуации и объяснение механизма падения от Cloudflare https://blog.cloudflare.com/october-2021-facebook-outage/

Теперь ждём технического пост-мортема от фб.

Пойду спать, спокойной ночи, друзья.