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