1. Сучасні продукти
Сучасні продукти вже рідко називають просто «програмами». Один сучасний продукт може містити десятки проєктів, сотні інтернет‑сервісів і безліч API, розгорнутих у хмарі або в дата‑центрі.
Багато продуктів (якщо не більшість) працюють за парадигмою Клієнт—Сервер. На вашому пристрої (телефоні, ноутбуку, ПК) запускається застосунок, що відповідає за взаємодію з користувачем, а ключова функціональність виконується на віддалених серверах.
Іноді клієнт може спілкуватися з кількома незалежними серверами або сервер одного проєкту звертається до сервера іншого проєкту. Так формується глобальна мережа клієнтів і серверів, що взаємодіють між собою.
Тому сучасну модель застосунків частіше описують як Клієнт—Інтернет—Сервер — це скупчення складних комунікацій і проміжних сервісів. Зʼявилися також так звані «розумні канали звʼязку», які автоматично визначають, куди й коли передати запит.
2. Клієнти
Програми‑клієнти умовно можна поділити на чотири категорії:
- 🖥️ Desktop‑клієнт — застосунок, що працює на настільному компʼютері або ноутбуку.
- 📲 Mobile‑клієнт — застосунок для iOS або Android.
- 🌐 Веб‑клієнт — сайт або веб‑застосунок, який працює в браузері.
- 🌍 Server‑клієнт — застосунок, запущений на іншому сервері та звертається до ваших сервісів.
Кожен із них можна додатково розібрати на складові. Наприклад, веб‑клієнт — це браузер і сайт, що завантажується в нього. Браузери теж відрізняються між собою й можуть по‑різному інтерпретувати вміст.
Навіть у найпоширеніших випадках сайт складається з трьох базових технологій:
- 📄 HTML
- 🎨 CSS
- ⚡ JavaScript
Хоча на перший погляд це виглядає просто, сучасна розробка сайтів уже не обмежується чистим HTML і JavaScript. Для великих проєктів використовують фреймворки, такі як React, Angular або Vue. Це вже не просто сайти, а повноцінні веб‑застосунки зі збірками, тестами й власними парадигмами.
Чистий CSS теж рідко застосовують у великих проєктах: використовують CSS‑препроцесори й фреймворки. Навіть для електронних листів існують спеціальні інструменти, щоб повідомлення коректно відображалися в різних поштових клієнтах.
Так само чистий JavaScript часто замінюють на TypeScript, який компілюється в JavaScript для запуску в браузері.
3. Інтернет і інфраструктура
Комунікація між клієнтом і сервером здається простою, проте вона теж зазнала значних змін.
Ваш продукт, ймовірно, буде розміщено в одному з сучасних дата‑центрів або в хмарі. Багато компаній пропонують різні моделі хостингу — від виділених фізичних серверів до повністю керованих хмарних сервісів.
Фізичний сервер уже не обовʼязково означає лише апаратне забезпечення. Сучасні дата‑центри надають віртуальні сервери — програмно емульовані машини на базі фізичних хостів. Один фізичний сервер може містити кілька віртуальних, що полегшує масштабування: потрібно більше памʼяті або CPU — ви можете додати ресурси віртуальному серверу за кілька хвилин.
Ще один крок уперед — хмара. Це означає, що ваш продукт не лише розгорнуто на віртуальному сервері, а й активно використовує набір інфраструктурних сервісів провайдера.
Потрібен сервіс для зберігання резервних копій? У хмарі є готові рішення. Потрібна база даних із надзвичайно високою доступністю? Такі сервіси теж є. Kafka, RabbitMQ, NoSQL‑сервери — усе це можна підключити й налаштувати через інфраструктуру провайдера.
Хмарні сервіси стають частиною вашого застосунку. Наприклад, великі провайдери (AWS, Azure, Google Cloud) пропонують CDN‑мережі: ваш публічний вміст кешується на багатьох точках присутності, і користувачі в різних регіонах отримують його швидше.
Запити до API можна спрямовувати через шлюзи (API Gateway), які дають змогу гнучко налаштовувати маршрутизацію, розподіл навантаження, захист від DDoS‑атак, автоматизоване завантаження файлів і налаштування кешування.
Отже, між клієнтом і сервісами зʼявляється багато «розумних комунікацій», які слід враховувати під час проєктування системи. Навіть якщо ви не налаштовуватимете їх самостійно, корисно розуміти їхній вплив на роботу застосунку.
Це ще не повний перелік тем: маршрутизатори, базові станції 5G, супутники й підводні інтернет‑кабелі теж впливають на доставлення вмісту. Якщо відеопотік із сервера переривається через нестабільне зʼєднання клієнта, розв’язання таких проблем часто залежить від інженерів, які підтримують проєкт.
4. Сервер
Під поняттям «сервер» можуть ховатися різні сутності. Варто розглянути найпоширеніші варіанти.
- 🖥️ Фізичний сервер
Фізичний сервер — це апаратне обладнання, окремий компʼютер із процесором, памʼяттю та накопичувачем, призначений для обробки даних і хостингу різних застосунків. Такі сервери встановлюють у центрах обробки даних, де вони забезпечують ресурси для веб‑сайтів, застосунків, баз даних та інших служб. - 🪐 Віртуальний сервер
Віртуальний сервер — програмно емульована машина, що працює в середовищі фізичного хоста. За допомогою віртуалізації один фізичний сервер можна розбити на кілька ізольованих віртуальних машин, кожна з яких має власну операційну систему та може бути незалежно перезавантажена й налаштована. - 🕹️ Програмний сервер (наприклад, Nginx)
Програмний сервер, такий як Nginx, — це серверне програмне забезпечення для обробки запитів до веб‑ресурсів. Nginx широко використовують як веб‑сервер, зворотний проксі, поштовий проксі та балансувальник навантаження в архітектурах із мікросервісами. - 💾 Сервер баз даних
Сервер баз даних забезпечує керування базами даних і обробку запитів до них. Він надає централізоване зберігання даних, підтримку транзакцій, пошук і зміну даних із гарантіями надійності та безпеки. Приклади серверів баз даних: MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server.
І ось десь у дата‑центрі, на віртуальному сервері, працюватиме ваш проєкт на C# і ASP.NET Core. Він взаємодіятиме з базою даних, отримуватиме запити через Nginx або Azure Application Gateway, а журнали надсилатиме до систем моніторингу на кшталт Azure Monitor або Splunk.
Саме завдяки якісному коду користувачі будуть задоволені роботою продукту. Вони користуватимуться сервісом, платитимуть за нього, а власник отримуватиме дохід. У результаті команда може отримати бонуси або опціони — і це одна з мотивацій в індустрії.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ