Эта статья представляет собой общий обзор ресурсов, которые вы, возможно, захотите изучить по мере продвижения по карьерной лестнице.

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

Правильный выбор базы данных

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

PostgreSQL и MongoDB являются наиболее часто используемыми базами данных.

Масштабирование базы данных

Теперь, когда мы выбрали предпочтительную базу данных, нам нужно иметь возможность использовать их возможности, чтобы получить максимальную отдачу от ее производительности. Любая база данных может не работать без оптимизации запросов и индексов. Как узнать, следует ли оптимизировать запрос? Ожидается, что в среднем выполнение каждого запроса будет находиться в диапазоне от 500 мс до 1 секунды и 1-секундного буфера (что делает его двухсекундным циклом от БД). Ваш запрос ‹ 500 мс? даже лучше! (ПРИМЕЧАНИЕ. Не каждый запрос можно оптимизировать для достижения максимальной производительности.)

Узнайте больше о том, как я масштабировал асимметричную базу данных с более чем 22 миллионами строк. оформить заказ: https://medium.com/@kvnrivers/9cb75da1e2a8

Задавайте правильные вопросы

Не всегда идеально выполнять запросы к базе данных для извлечения статических или часто используемых данных, которые не меняются в течение длительного периода времени. Выполняя ненужные вызовы базы данных, вы можете увеличить нагрузку на свою базу данных, что немного повлияет на ее производительность. Мы можем использовать In-Memory DB для предоставления нам статических данных JSON в миллисекундах. REDIS — популярный инструмент In-Memory DB, используемый для хранения пар ключ-значение.

Производительность приложений

Производительность приложений является важной частью понимания того, как масштабировать приложения. Процессы, шардинг, кластеры… важные концепции, о которых интересно узнать. Они открывают совершенно новый уровень масштабируемой архитектуры. Использование модулей и профилировщиков, таких как производительность и куча-дамп в NodeJS, для измерения и профилирования процессов вашего приложения рекомендуется для обнаружения возможных утечек памяти. Утечки памяти могут быть препятствием для обнаружения, и вы просто не будете знать, почему ваше приложение продолжает падать.

Мониторинг приложений

Мониторинг производительности любой виртуальной машины, развернутой в облаке, такой как GCP, AWS, имеет решающее значение для отслеживания всех ошибок, которые могут возникнуть во время выполнения вашего приложения. Рекомендуется использовать программное обеспечение для ведения журналов для просмотра, выявления и устранения проблем в рабочей среде. Grafana и Prometheus — отличные инструменты для мониторинга метрик и логов на вашем сервере.

Шаблоны проектирования и взаимодействие

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

Говоря из опыта. Когда я впервые начал без использования абстракций и использовал библиотеки напрямую, был период, когда реализация библиотеки полностью менялась, и мое приложение вообще не поддерживало, и мне приходилось переделывать все приложение, чтобы заставить его работать. Будьте умнее и думайте с точки зрения будущего!

Заключение

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

Хотите узнать подробности? Вот несколько отличных ресурсов:

CI/CD

ХОСТИНГ

ДОКЕР