Вопрос “чего не делать, чтобы расти” иногда важнее вопроса “как расти”.
Большинство из этих вещей покажутся знакомыми и простыми.
Но именно эти проблемы сильно усложняют масштабирование проектов.
Понятие это происходит из американской поговорки:
Если все, что у вас есть – это молоток, то все остальное выглядит для вас, как гвозди
Многие разработчики являются жертвой подобной идеи, используя одну технологию для любых решений. Использование технологий для решения задач, для которых она не предназначена, – одна из худших ошибок в разработке.
Хороший пример – использование вероятностного хранилища вместо MySQL для подсчета количества уникальных вхождений. Это пример, когда ресурсы в двух случаях будут отличаться в тысячи и даже миллионы раз.
Важно не путать использование с игрой. При первом медленном запросе ну нужно менять базу данных, ее нужно оптимизировать. Главное не забывать о том, что пересечение задач, решаемых различными технологиями бывает очень большим.
Не так страшно иметь несколько неудачных решений внутри приложения, как страшно попытаться сделать все приложение идеальным. Результат достаточно частых попыток храбрых программистов это сделать обычно приводит к решению, еще более плохому, чем было на старте с точки зрения простоты поддержки и развития.
Почему так происходит? Любое приложение, особенно растущее – это эволюционирующий организм. Любые проблемы имеют временный характер, какие-то перестают быть актуальными уже через день, какие-то – через несколько лет. Попытка “переписать по-нормальному” почти всегда приводит к неудаче, ведь в момент проектирования никто не может предсказать будущее.
В итоге, из одного кома грязи получается другой.
Кома грязи избежать нельзя. Зато можно научиться эффективно им управлять и снизить его влияние на систему. Микросервисы – хороший подход.
Многим знакомо наличие в команде “героя”, который берет на себя решение всех проблем. Понятно, что этот подход не масштабируется и очень рискован.
Хорошее решение этой проблемы – автоматизация.
Если ваш герой – робот, это не так страшно.
А в процессе роста всегда старайтесь использовать минимум двух разработчиков, это и надежно и удобно.
Правда разработки такова, что задач всегда в 10 раз больше, чем ресурсов. Интуитивно мы стараемся решить как можно больше задач. Но в итоге попадаем в ловушку простых срочных задач. Их можно решить и быстрее и больше, создав ощущение, что делается много работы.
10 простых задач создадут впечатление большего количества работы, чем одна крупная и сложная
Автоматизация может принести значительные результаты, повысив производительность команды в десятки раз. Разработчики хороши не только потому, что могут разработать программу для клиентов. Они хороши еще и потому, что могут автоматизировать собственную работу.
Чтобы двигаться по линии роста, опираясь на автоматизацию, необходимо обеспечить процесс ретроспективы и планирования. Ретроспектива поможет понять, какая ручная работа может быть автоматизирована. А планирование – включить в работу необходимые доработки.
Важно не попасть в ловушку переавтоматизации. Если какое-то действие нужно выполнить один…два раза – это, обычно, плохой кандидат на автоматизацию.
Мониторинг (в широком смысле слова), как и тестирование, часто приносят в жертву одними из первых. Ну это и понятно, лучше пофиксить известную проблему, чем что-то мерить.
Починить ошибку – мгновенный результат, научиться измерять работу – долгосрочный результат.
Не так важно, какой именно мониторинг использовать. Это может быть трекинг нагрузки на процессор и количества запросов в СУБД. А может быть количество просмотров товаров и добавлений в корзину. Главное – мерить все критичные для бизнеса события и наблюдать за ними. Только тогда вы сможете в любой момент времени ответить на два вопроса:
<h2>TL;DR
Построение растущих систем – не такой сложный процесс, если следовать ряду простых правил.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…