JavaRush /Курси /Frontend SELF UA /Модель продукту

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

Frontend SELF UA
Рівень 48 , Лекція 1
Відкрита

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.

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

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