Масштабирование — Highload.today
Как команде разработчиков найти новый проект: 6 проверенных советов
Виталий Нужный BLOG
Основатель и CEO в Trios Systems
Нередко в бизнесе наступает момент, когда проект подходит к концу, заканчиваются инвестиции — и заказчик вынужден отпустить команду, которую он растил в партнерских отношениях, в свободное плаванье. Тогда ей приходится искать новый проект. И если у больших команд для этой задачи есть специально обученные люди, то небольшие сталкиваются с непониманием, что им делать. Бывает так, что команда неплохо себя чувствовала 5-8-10 лет, потому у нее нет профиля в LinkedIn, и в маркетинге, вроде как, не было нужды. Тогда как «продать» свои скиллы новому заказчику и, главное, где его найти?
Как выбрать сервер
Иногда лучше купить новый сервер, чем оптимизировать приложение. Время разработчиков сейчас стоит намного дороже серверов. Как выбирать сервера для роста и новых задач?
Решения на NoSQL базах
В этой статье рассмотрим принципы решения типичных задач в key-value базах данных.
Горизонтальный шардинг
Технічний редактор Highload
Так или иначе возникает ситуация, когда на сервере базы данных со временем приходится работать с огромными таблицами.
Как скопировать выбранные ключи Redis на другой сервер?
[https://redis.io/ Redis] – простое, быстрое и удобное key-value хранилище данных. При масштабирование любого приложения возникает необходимость переноса данных между серверами. Иногда не нужно переносить всю базу, а только несколько выбранных ключей.
Хостинг на 500Тб
Хостинг и отдача большого количества медиа данных в Web – одна из самых сложных задач. Видео и аудио файлы могут достигать гигабайтов в размере. Как выглядят реальные решения на примере одного из крупнейших файловых хостингов в СНГ.
Распределенный кеш на основе Nginx и proxy_cache
При использовании кеширования место на диске рано или поздно закончится. В таком случае обычно используют очистки кеша. Например, удалять все файлы, которые на запрашивались больше 7 дней. В Nginx это настраивается так:
Оптимизация затрат на CDN с помощью Amazon Route 53
Обычно CDN используют в случае, когда у сайта или приложения аудитория распределена по большой территории. Однако, в какой-то момент времени CDN начнет стоить дорого (ведь вы всегда оплачиваете трафик). В таком случае необязательно строить свой CDN или жертвовать опытом пользователей ради экономии.
Денормализация данных
Технічний редактор Highload
Нормальная форма хранения данных предполагает избегания дублирования данных. Ключевых правила два:
Fault tolerance и его реализация в PHP
Разрабатывая веб-приложение важно помнить об отказоустойчивости. Fault tolerance – метод проектировки, при котором неработоспособность отдельного элемента или функции приложения не выводит из строя само приложение, устойчивость программы к отказам. Не путайте fault tolerance с failover (аварийное переключение) – переключением отказавшего функционала резервному компоненту.
Фейловер задач в Gearman
Система очередей Gearman по умолчанию использует только оперативную память для хранения задач. Это означает, что при перезагрузке или внезапном выключении сервера, все задачи из очереди будут утеряны.
Распределенный мониторинг и диагностика / Netdata
Сегодня существует множество платных и бесплатных систем мониторинга серверов. Мы привыкли к тому, что мониторинг централизован. Есть сервер с графиками. Есть сервера, которые шлют на основной сервер свои метрики.
Failover и доступность
Технічний редактор Highload
Доступность любого приложения зависит от работоспособности его компонент. Обеспечение доступности приложения – это обеспечение доступности компонент. На физическом уровне – это снижение зависимости работы приложения от поломок серверов.
Масштабируемое хранилище фоток
Технічний редактор Highload
Во многих Web приложениях существует необходимость иметь систему хранения, ресайза и отдачи фотографий. Например, для функции загрузки фоток в профиль пользователями.
Ребалансировка данных при шардинге
При шардинге неизбежно возникает необходимость перебалансировать данные. Точно предсказать рост объема и формы данных практически невозможно. Поэтому ребалансировка данных – такая же систематическая операция, как и хранение данных. Ее нужно планировать на этапе проектирования, а не на этапе администрирования.
5 ошибок масштабирования
Вопрос “чего не делать, чтобы расти” иногда важнее вопроса “как расти”.
Большинство из этих вещей покажутся знакомыми и простыми.
Но именно эти проблемы сильно усложняют масштабирование проектов.
Выкатка большой системы
Выкатка (или deployment) новых версий Web приложений имеет ряд трудностей, т.к. необходимо быстро и одновременно выполнять группы действий на разных серверах. Процесс обычно включает в себя обновление кода (php) и статики (js/css/картинки), изменение баз данных и настроек системы.
Асинхронное выполнение PHP
Технічний редактор Highload
Для ускорения работы программы широко применяется практика асинхронного выполнения задач. Это значит, что операции выполняются непоследовательно, отложенно.
Вертикальный шардинг
Технічний редактор Highload
Обычно Web приложения работают с одним сервером базы данных. Почти всегда приложение использует более одной таблицы.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: