JavaRush /Курси /Модуль 1: Python Core /Модель продукту

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

Модуль 1: Python Core
Рівень 2 , Лекція 1
Відкрита

2.1 Сучасні продукти

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

Багато сучасних продуктів (якщо не всі) працюють по парадигмі Клієнт-Сервер. Це коли на вашому пристрої (телефоні, ноутбуці, комп'ютері) знаходиться програма, яка відповідає за комунікацію з користувачем (тобто вами), а критична функціональність розташована на віддаленому сервері, де і відбувається все важливе.

Іноді ваш клієнт може спілкуватися з кількома незалежними серверами, ну або сервер одного продукту може звертатися до сервера іншого продукту. Це виходить така глобальна мережа з клієнтів і серверів, і всі вони працюють один з одним.

Тому сучасну модель додатків, можливо, краще буде описувати парадигма Клієнт-Інтернет-Сервер. Занадто вже там стало багато різної складної комунікації. Появилися навіть так звані «розумні канали зв'язку», які самостійно вирішують, кому і коли відправити ваш запит.

2.2 Клієнти

Програми-клієнти умовно можна розділити на 4 категорії:

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

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

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

  • HTML
  • CSS
  • JavaScript

"Немає нічого простішого," скажете ви. Тільки от сьогодні ніхто не пише сайти просто на HTML і JavaScript. Для розробки сайтів тепер використовують не просто бібліотеки, а повноцінні фреймворки, такі як React, Angular чи Vue. І це вже не сайти, а повноцінні веб-додатки зі своїми збірками, тестами і парадигмами.

Чистий CSS теж тепер ніхто не використовує. Вже існують CSS-препроцесори, які допомагають його генерувати, і цілі CSS-фреймворки. Та що там, навіть для email-листів є спеціальні CSS-фреймворки, щоб ваше лист виглядало гарно як у браузері, так і в більшості поштових клієнтів.

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

2.3 Інтернет та інфраструктура

Комунікація клієнта і сервера – що може бути простіше? Але навіть у їх відносинах вже все змінилося.

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

Фізичний сервер більше не фізичний. Всі сучасні дата-центри пропонують оренду віртуальних серверів. Віртуальний сервер — це певний віртуальний комп'ютер, і на одному фізичному сервері їх може бути десятки. Зате це зручно в плані апгрейду сервера. Якщо вам потрібно більше пам'яті, ви можете додати її до вашого віртуального сервера за кілька хвилин.

Але навіть такий підхід вже застаріває. Зараз в моді переїзд у хмари – це коли ваш продукт не просто розгорнутий на віртуальному сервері у дата-центрі, а активно користується інфраструктурою та великим набором сервісів цих дата-центрів.

Вам потрібен сервер для зберігання бекапів – під це є готова зручна інфраструктура у хмарі. Вам потрібна база даних з надійністю 99.9999999%? Така теж є. Kafka, RabbitMQ, NoSQL? Все вже є і легко налаштовується. Тільки гроші плати.

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

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

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

І це ми ще не торкнулися таких тем, як маршрутизатори, вежі 5G, супутники та інтернет-кабелі по дну океану. Ви відправляєте відеопотік з вашого сервера вашому клієнту, а він збоїть, оскільки у клієнта поганий зв'язок і з'єднання постійно обривається. Вгадайте, хто буде вирішувати цю проблему?

2.4 Сервер

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

Фізичний сервер

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

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

Віртуальний сервер — це програмно емітований сервер, який працює в середовищі фізичного сервера. За допомогою технологій віртуалізації один фізичний сервер може бути розділений на кілька ізольованих віртуальних серверів, кожен з яких має свою операційну систему і може бути незалежно перезавантажений і налаштований.

Програма-сервер (наприклад, Nginx)

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

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

Сервер бази даних — це спеціалізований сервер, що використовується для управління базами даних і обробки запитів до них. Він забезпечує централізоване зберігання даних та їх обробку, надаючи доступ до даних через мережу. Сервери баз даних підтримують обробку транзакцій, пошук і зміну даних, забезпечуючи при цьому надійність і безпеку зберігання інформації. Приклади серверів баз даних включають MySQL, PostgreSQL, Oracle Database і Microsoft SQL Server.

І ось десь у дата-центрі на одному з віртуальних серверів буде крутитися ваш проект на Python і Django. Він працюватиме з базою даних, отримувати запити від NginX, і слати логи своїх дій у Splank.

Але саме завдяки вашому коду мільйони користувачів вашого продукту будуть щасливі. Вони будуть користуватися продуктом, платити за нього гроші, а в такому разі буде щасливий і власник продукту. Акції компанії будуть рости, ви будете отримувати бонуси акціями і теж будете щасливі. Прямо круговорот щастя в природі якийсь :)

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ