Подсказки: как решить часто встречающиеся проблемы web-проектов
На самых разных web-проектах встречается множество однотипных проблем. В чем они заключаются? Есть ли их оптимальное решение?
Проблемные БД
Наиболее распространенные проблемы БД разнообразных web-проектов связывают с кластеризцией. Но часто встречаемые это:
- «n+1», которая есть преобразование пользовательских действий в запросы к БД с последующим выводом результатов:
- идентификация: сравнение за одинаковый временной период объемов полного access log web-сервера с query log БД – проблема становится очевидной, как только 50MB access log превращаются в 20GB query log;
- выход: модифицировать код.
- Индексация данных:
- идентификация: использование unindexed query log в соответствии с типом БД, считывание неаккуратно проставленных индексов;
- выход: проставить (где возможно) индексы + модифицировать код (следует обратить внимание на минимализацию количества используемых индексов).
- Разрастание размеров таблиц:
- идентификация: хранение устаревших данных в БД в основной таблице;
- выход: создание дополнительной базы с префиксом zip, таблицы, mysqldump, backup.
- Централизация таблиц:
- идентификация: с помощью корректных инструментов munin/monit/sa+sar/htop можно выявить постоянный либо пиковый недостаток таблиц, которые стали ресурсами-блокерами (при выполнении одних типов операций происходит блокировка других типов);
- выход: создание таблиц products2 с последующим обеспечением непересечения с таблицей-исходником значений ее первичного ключа.
Проблема с кодом
Связываются с отношением программистов к написанию кодов и их читабельности. Возможные багги появляются в результате:
- лишних слоев абстракции, которые не отсекаются на этапе code review;
- не использования правила SOLID;
- инкапсуляции из определения OOP.
Выход: выстроить правильно иерархию интерфейсов, для создания легко дописываемых приложений.
Проблемный Front-end
Чаще всего они есть у проектов с фронтендом в стиле «а-ля 2000», которые отличаются неподдерживаемым кодом. Также в случае множества конфликтующих jQuery плагинов и условий. Выход пошаговый:
- es-2015 с расширениями для javascript (актуальный);
- приложение с роутингом в одну страницу;
- единая точка входа;
- постепенный эволюционный переезд;
- обоснованный подход к выбору архитектуроопределяющих технологий.
Организационные проблемы
Этот тип не всегда имеет оптимальное решение. Но ознакомиться с ними нужно, чтобы не допустить в будущем:
- общение с бизнесменами (доступный для них язык понимания: удешевление системы с помощью ее переделки);
- управленческий стиль (попробуйте не авторитарность, а убеждение);
- централизованность сотрудников (группирование специалистов одного класса в микрокоманды).
Как видим, большинство проблем решается достаточно просто. Главное: не опускать руки и не отказываться от проблемного на первый взгляд web-проекта.
Помощь в выявлении проблем в проекте, обращайтесь [email protected]