Что такое высоконагруженные приложения? Хотите верьте, а хотите нет, но четкой
границы, где начинаются высоконагруженные приложения, нет. Определение, что
это такое — есть. По каким параметра проверяется нагрузка — тоже есть. Но четких
цифр нет.
Определения, что такое высоконагруженные приложения
Есть несколько определений, как можно определить подобные сервисы. Итак,
высоконагруженные приложения это:
- Когда построенная система приложения не справляется с нагрузкой.
- Это когда традиционный подход к разработке сервиса уже не справляется.
- Когда с потоком клиентов сервиса не справляется один сервер, нужно больше.
- Когда параметров «железа» не хватает, чтобы справиться с выросшей
нагрузкой. - Когда возникают проблемы из-за нагрузки, а из не возможно решить
стандартными средствами. - Это когда срочно нужно масштабирование всех систем сервисов.
Если ваш web-сервис попадает под какие-то вышеперечисленные определения, то
скорее всего у вас уже высоконагруженное приложение и нужно что-то срочно
предпринимать.
Высоконагруженные приложения обладают собственными
качествами
Все высоконагруженные приложения объединяют определенные качества. Какие
именно? Перечисляем:
- Это веб-сервис с огромным количеством пользователей. Если это
приложение, то число пользователей достигает сотни тысяч клиентов. Если
это веб-сайты, то это от десятков тысяч посетителей в сутки. То есть если у
вас большой интернет-магазин с сотней посетителей в день — это не highload.
А вот «гиганты», типа : Амазон, Алиэкспресс, e-bay и другие — это ничто иное
как высоконагруженные веб-сервисы и приложения. - Используют систему распределения нагрузки. Это когда веб-сервису
приходится работать с большим количеством данных. Плюс ко всему, данные
могут постоянно расти и одного сервера просто не хватает. Типичный пример
— компания Гугл, ее мощности распределены между сотнями серверов. - Виден постоянный рост аудитории. Если веб-приложение интересно для
пользователей, то их число постоянно будет расти. Это качество свойственно
высоконагруженным приложениям и сервисам. - Интерактивность. Это мгновенный результат при любом действии
пользователя: поиск в Гугл, загрузка ролика на YouTube, покупка на Амазон. - Использование большого количества ресурсов. Чтобы давать мгновенный
отклик на действие пользователя, необходимо задействовать большое
количество различных ресурсов: CPU, оперативная память, hard-диски и т. д.
Ресурсов должно быть много. А самое главное их должно хватать на рост
числа пользователей.
Подытожив, можно сказать, что высоконагруженные приложения — это затратные
во всех смыслах web-ресурсы. Их разработка и поддержка потребует не мало усилий
и финансовых затрат. А самое главное — это изначально нужно предполагать и
«закладывать» возможность для масштабирования, чтобы справляться с
увеличивающейся нагрузкой.
Разработка высоконагруженных web-сервисов: идеи
Разработка высоконагруженных web-сервисов требует серьезного подхода и наличие
определенных ресурсов. Практически любая ваша идея, может превратиться в
высоконагруженные приложения или веб-ресурсы. Главное, чтобы ваша разработка
решала проблемы для ваших будущих клиентов. Предугадать, что именно эта идея
станет «высоконагруженной» невозможно.
В сети не мало примеров, когда создавая какой-то ресурс, разработчики не
предполагали, что он вырастет до огромных масштабов. Разве что только в мечтах.
Однако это происходит, если идея интересная. И неважно, что это будет:
- веб-сайт;
- социальная сеть;
- веб-приложение;
- мобильное приложение;
- видеоигра;
- и др.
Примеров подобных идей масса:
- FaceBook — задумывался как сайт-соц.сеть для университета;
- Amazon — создавался очередной интернет-магазин, правда со своей индивидуальностью;
- Word of Tanks — просто хотелось «оживить» в игре танки;
- TikTok -вроде не уникальный продукт, но попал в нужную аудиторию и обрел популярность;
- и др.
Поэтому, воплотить можно любую вашу идею. И не нужно сразу арендовать десятки
серверов и нанимать сотни специалистов, чтобы сразу запустить что-то масштабное
и дорогое. Запустить можно тестовую версию и посмотреть реакцию пользователей.
Но при этом обязательно нужно «заложить» потенциал для расширения масштабов
построенной системы.
Возможно вам будет интересно почитать статью “Почему снижается работоспособность и как ее повысить”
Книги в помощь при разработке
Приведем несколько книг, которые помогут вам разработать высоконагруженные
приложения:
- Искусство планирования мощностей. Джон Оллспоу. Автор является
действующим разработчиком и планировщиком крупных высоконагруженных
проектов. - Искусство программирования для Unix. Эрик С. Реймонд. Автор участвовал в
разработке крупных приложений для Линукс. - Hight Performance Web Sites. Steve Souders. Автор работает в Google и
участвовал во многих проектах компании, когда web-ресурсам требовалось
повышать производительность. - Even Faster Web Sites. Steve Souders. Уже знакомый нам автор повествует о
том как можно оптимизировать уже существующие сайты. - Высоконагруженные приложения. Мартин Клеппман. Автор является,
известным в своем кругу, специалистом по высоконагруженным приложениям,
о чем и повествует в своей книги. Как правильно все организовать, на что
обратить внимание и с чего начать.