Архітектура «клієнт‑сервер» — це спосіб організації взаємодії у обчислювальних системах, де ролі розподілені між постачальниками послуг (серверів) і їх споживачами (клієнтами). Клієнт і сервер — це програми; вони можуть працювати на одному пристрої, але частіше перебувають на різних машинах і спілкуються мережею. Сервер чекає запитів і надає ресурси: файли за HTTP або FTP, потоки мультимедіа, відповіді баз даних, поштові та месенджер‑сервіси. Один сервер обслуговує багатьох клієнтів, тому його зазвичай розміщують на виділеному потужному комп’ютері і теж називають сервером, а пристрої з клієнтськими програмами — клієнтами.
Роль клієнта та сервера
У моделі клієнт‑сервер сервер надає сервіс, а клієнт запитує його. Сервери розрізняють за функціями: одні надають веб‑сторінки, інші зберігають файли, треті керують базами даних. Ресурс може бути програмою, даними чи навіть апаратною складовою; надання доступу до цих ресурсів є сама послуга.
Одна й та сама машина може одночасно виступати як клієнтом, так і сервером — усе залежить від завдань. Клиєнтські й серверні компоненти можуть працювати на одному пристрої або на різних. Взаємодія між серверами для синхронізації або реплікації часто називають міжсерверною взаємодією.
Протоколи та API
Послуга — це абстракція: клієнту не потрібно знати внутрішню реалізацію сервера, достатньо розуміти формат відповіді. Спілкування будується за схемою «запит — відповідь», і для цього потрібна спільна мова — протокол.
API — це формальний інтерфейс сервісу. Він задає формат даних і спрощує аналіз відповідей, роблячи обмін між різними платформами передбачуваним і зручним.
Надійність і захист
Сервер може одночасно отримувати велику кількість запитів, тож на передній план виходять планування та пріоритетизація задач. Щоб уникнути зловживань та зберегти доступність, сервери застосовують обмеження на потік запитів. Атаки типу «відмова у обслуговуванні» експлуатують обов’язок сервера відповідати, перевантажуючи його. При передачі конфіденційних даних використовується шифрування для захисту інформації.
Порівняння з одноранговою архітектурою
У моделі клієнт‑сервер є центр — сервер, який концентрує ресурси та навантаження. Це вимагає масштабування апаратної частини та балансування навантаження при зростанні кількості клієнтів. У одноранговій (peer‑to‑peer) мережі вузли рівноправні: вони безпосередньо ділять ресурси та розподіляють навантаження між собою. Якщо один вузол виходить з ладу, інші продовжують обслуговувати мережу. При зміні доступності протоколи перенаправляють запити. Обидві моделі відносяться до розподілених систем і використовуються в різних задачах.
Переваги клієнт‑серверної архітектури наступного характеру:
- централізоване зберігання даних;
- підвищений захист доступу;
- економія ресурсів на клієнтських пристроях;
- відсутність дублювання сервера на клієнтах;
- можливість масштабування при зростанні навантаження.
Основні недоліки цієї архітектури такі:
- єдина точка відмови;
- висока вартість потужного серверного обладнання;
- потреба в кваліфікованому адмініструванні;
- складність розгортання та налаштування інфраструктури.
Багаторівнева архітектура клієнт‑сервер
Багаторівнева архітектура розділяє функції за шарами, що робить систему гнучкішою й зручнішою в обслуговуванні. Типовий набір рівнів включає:
- рівень подання (клієнт);
- рівень логіки застосунку (сервер застосунків);
- рівень даних (сервер баз даних).
Таке розділення спрощує масштабування, тестування та незалежне оновлення кожного шару.
Мережа з виділеним сервером
Мережа з виділеним сервером — це локальна мережа, де ресурси централізовані та керуються одним або кількома серверами. Клієнти звертаються до файлів, принтерів та інших сервісів через ці сервери, що спрощує адміністрування та контроль доступу. У навчальній літературі, зокрема в книзі Ендрю Таненбаума «Комп’ютерні мережі», детально описані переваги такої організації в корпоративних середовищах.