1 min read

Production. Принципы разработки высоконагруженных приложений.

В рамках данного материала я хочу аккумулировать свой опыт разработки высоконагруженных приложений на Node.js и Go. За время работы я столкнулся с множеством подводных камней и интересных случаев. Всё это со временем помогло сделать мои приложения максимально быстрыми и оптимизированными. Я скоратил весь этот опыт до одного сжатого материала, который поможет вам делать серверные приложения максимально производительными. Само собой советы из этого материала будут полезны не только в контексте Javascript разработки под Node.js или Go-разработки, но и при использовании любого другого языка, хотя акцент я буду делать в первую очередь на эти инструменты, потому что работал с ними. Мы обсудим вопросы базовой технической оптимизации, разберем дополнительные инструменты вроде библиотек, форматов данных и протоколов для выполнения привычных вещей только в условиях повышенных нагрузок, а также освещу момент важности нетехнических продуктовых оптимизаций, которые также важны для максимизации быстродействия системы. Все это я разбавлю примерами из моей реальной практики для более наглядного повествования.

Production. Принципы разработки высоконагруженных приложений. - Egor Repnikov
В рамках данного материала я хочу аккумулировать свой опыт разработки высоконагруженных приложений на Node.js и Go.

Оглавление:
- Принципы разработки высоконагруженных приложений
- Техническая оптимизация
- Блокирующие операции в асинхронном коде
- LRU Cache
- cron, interval или flush по расписанию
- KeepAlive и алгоритм Нейгла
- HTTP-компрессия
- Нестандартные алгоритмы компрессии и шифрования
- Лишние логи
- Собственный алгоритм генерации ID вместо UUID
- Node.js
- Fastify
- Библиотеки fast-*
- μWebSockets и undici
- C++ Addons
- Go
- Транспортные протоколы и форматы обмена данными
- Оптимизация библиотек
- Benchmark, Profiling, Metrics
- Продуктовая оптимизация