JavaRush /Курсы /Модуль 1: Web Core /Модель продукта

Модель продукта

Модуль 1: Web Core
1 уровень , 10 лекция
Открыта

11.1 Современные продукты

Современные продукты

Современные продукты уже никто не называет программами. Современный продукт может состоять из десятков программ, сотен интернет-сервисов и кучи API, которые предоставляют ему облака дата-центра, в котором продукт развёрнут.

Многие современные продукты (если не все) работают по парадигме Клиент-Сервер. Это когда на вашем устройстве (телефон, ноутбук, компьютер) находится программа, которая отвечает за коммуникацию с пользователем (вами), а весь критический функционал находится на удаленном сервере, где и происходит все важное.

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

Поэтому современную модель приложений, возможно, лучше описать как парадигму Клиент-Интернет-Сервер. Слишком уж там стало много различной сложной коммуникации. Появились даже так называемые «умные каналы связи», которые сами принимают решение, кому отправить ваш запрос и когда.

11.2 Клиенты

Программы-клиенты условно можно разделить на 4 категории:

  • Desktop-клиент — программа, работающая на компьютере
  • Mobile-клиент — приложение под iOS или Android
  • Веб-клиент — сайт/веб-приложение, работающие в браузере
  • Server-клиент — приложение, которое запущено на другом сервере

А каждую из них можно опять подробить на части. Например, web-клиент – это сайт или веб-приложение, а значит, оно состоит из Браузера и Сайта, который в него загружается. Браузеры тоже ведь не все одинаковые и могут работать по-разному.

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

  • HTML
  • CSS
  • JavaScript

Нет ничего проще, скажете вы, но уже никто не пишет сайты просто на HTML и JavaScript. Теперь для разработки сайта используют даже не библиотеки, а полноценные фреймворки, такие как React, Angular или Vue. Да и не сайты это теперь, а полноценные веб-приложения. Со своими сборками, тестами и парадигмами.

Простой CSS тоже никто теперь не использует: уже есть препроцессоры CSS, которые помогают его генерировать, и даже целые CSS фреймворки. Господи, даже есть даже целые CSS фреймворки для email-почты, чтобы ваше письмо красиво выглядело, если человек его просмотрит в браузере или в большинстве почтовых клиентов.

На JavaScript тоже уже никто не пишет: все большие веб-приложения пишутся на TypeScript, который потом компилируется в JavaScript. Ну вы поняли…

11.3 Интернет и инфраструктура

Коммуникация клиента и сервера — что может быть проще? Но и тут уже все поменялось.

Во-первых, ваш продукт скорее всего будет хоститься в одном из современных дата-центров. Очень много компаний по всему миру предлагают различные услуги хостинга ваших продуктов как на их серверах, так и на ваших физических серверах. Любой каприз за ваши деньги.

Интернет и инфраструктура

Физический сервер больше не физический. Все современные дата-центры предлагают вам аренду виртуальных серверов. Это некий виртуальный компьютер, и на одном физическом сервере их могут быть десятки. Зато это удобно в плане апгрейда сервера. Если вам нужно больше памяти, вы можете добавить ее к вашему виртуальному серверу за несколько минут.

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

Вам нужен сервер для хранения бэкапов: под это есть целая удобная инфраструктура в облаке. Вам нужна база данных с надежностью 99.9999999%? Такая тоже есть. Kafka, RabbitMQ, NoSQL? Все уже есть и легко настраивается. Только денежки плати.

Эти дата-центры и облака начинают становиться частью вашего продукта. Например, у Amazon есть куча дата-центров по всему миру, поэтому они предлагают услугу CDN: ваш публичный контент будет кешироваться на всех дата-центрах Amazon, и ваши пользователи по всему миру будут получать его быстрее.

Или обращение к API вашего приложения можно пропустить через сервис Amazon Gateway API, который позволяет очень гибко настроить работу с вашими сервисами. Можно распределять нагрузку на разные сервисы, отражать DDoS-атаки, автоматизировать загрузку файлов, настроить умное кеширование, да много еще всего.

Таким образом между приложением-клиентом и вашими сервисами возникает куча «умных коммуникаций», которые можно настраивать и нужно настраивать. Даже если вы никогда не будете делать это лично, вы должны знать, что они существуют и могут значительно влиять на работу вашей программы.

И это мы еще не коснулись такой темы, как роутеры, вышки 5G, спутники и интернет-кабеля по дну океана. Вы шлете видеопоток с вашего сервера вашему клиенту, а оно сбоит, т. к. у клиента плохая связь и соединение постоянно обрывается. Угадайте, кто будет решать эту проблему?

11.4 Сервер

Словом серверная часть обозначают очень много довольно различных понятий, так что вам будет полезно узнать о самых популярных из них.

Физический сервер

Физический сервер — это оборудование, представляющее собой отдельный компьютер с ресурсами (процессор, память, хранилище), который используется для обработки данных и обеспечения работы различных программных приложений. Эти серверы устанавливаются в дата-центрах, где они обеспечивают мощности для хостинга веб-сайтов, приложений, баз данных и других служб.

Виртуальный сервер

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

Программа-сервер (пример Nginx)

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

Сервер баз данных

Сервер баз данных — это специализированный сервер, используемый для управления базами данных и обработки запросов к ним. Он обеспечивает централизованное хранение данных и их обработку, предоставляя доступ к данным через сеть. Серверы баз данных поддерживают обработку транзакций, поиск и изменение данных, обеспечивая при этом надежность и безопасность хранения информации. Примеры серверов баз данных включают MySQL, PostgreSQL, Oracle Database и Microsoft SQL Server.

И вот где-то в дата-центре на одном из виртуальных серверов будет крутиться ваш проект на React и Node.js, который будет работать с базой данных, получать запросы от NginX и слать логи своих действий в Splank.

Но именно благодаря вашему коду миллионы пользователей вашего продукта будут счастливы. Они будут пользоваться продуктом, платить за него деньги, и тогда будет счастлив и владелец продукта. Акции компании будут расти, вы будете получать бонусы акциями, и тоже будете счастливы. Прямо круговорот счастья в природе какой-то :)

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ