JavaRush /Курсы /JAVA 25 SELF /Модель ИТ-продукта

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

JAVA 25 SELF
9 уровень , 6 лекция
Открыта

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

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

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

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

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

2. Клиенты

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

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

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

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

  • 📄 HTML
  • 🎨 CSS
  • ⚡ JavaScript

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

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

На чистом JavaScript тоже уже мало кто пишет — все крупные веб-приложения создаются на TypeScript, который затем компилируется в JavaScript. Ну, вы поняли...

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

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

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

Дата-центр

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

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

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

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

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

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

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

4. Сервер

Под словом "сервер" могут скрываться совершенно разные понятия. Вам будет полезно узнать о самых распространенных из них.

  • 🖥️ Физический сервер
    Физический сервер — это оборудование, представляющее собой отдельный компьютер с ресурсами (процессор, память, хранилище), который используется для обработки данных и обеспечения работы различных программных приложений. Эти серверы устанавливаются в центрах обработки данных, где они обеспечивают мощности для хостинга веб-сайтов, приложений, баз данных и других служб.
  • 🪐 Виртуальный сервер
    Виртуальный сервер — это программно эмулированный сервер, который работает в среде физического сервера. С помощью технологий виртуализации один физический сервер может быть разделен на несколько изолированных виртуальных серверов, каждый из которых имеет свою операционную систему и может быть независимо перезагружен и настроен.
  • 🕹️ Программа-сервер (например, Nginx)
    Программа-сервер, такая как Nginx, представляет собой серверное программное обеспечение, используемое для обработки запросов к веб-ресурсам. Nginx широко известен как веб-сервер, который может также выполнять функции почтового прокси-сервера и обратного прокси-сервера в архитектурах с микросервисами, а также как балансировщик нагрузки.
  • 💾 Сервер баз данных
    Сервер баз данных — это специализированный сервер, используемый для управления базами данных и обработки запросов к ним. Он обеспечивает централизованное хранение данных и их обработку, предоставляя доступ к данным через сеть. Серверы баз данных поддерживают обработку транзакций, поиск и изменение данных, обеспечивая при этом надежность и безопасность хранения информации. Примеры серверов баз данных включают MySQL, PostgreSQL, Oracle Database и Microsoft SQL Server.

И вот где-то в дата-центре, на одном из виртуальных серверов, будет крутиться ваш проект на C# и ASP.NET Core. Он будет работать с базой данных, получать запросы через Nginx или Azure Application Gateway, а логи своих действий слать в системы мониторинга вроде Azure Monitor или Splunk 📈.

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

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