Какие бывают уровни (tiers) в клиент-серверной архитектуре?

«Какие бывают уровни (tiers) в клиент-серверной архитектуре?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Клиент-серверная архитектура классифицируется по количеству уровней (tiers), которые логически разделяют ответственность. Основные модели:

  • Одноуровневая (1-tier): Клиент и сервер объединены в одном приложении (например, десктопная программа с встроенной базой данных).
  • Двухуровневая (2-tier): Классическая архитектура "клиент-сервер". Клиент (например, браузер или мобильное приложение) взаимодействует напрямую с сервером (например, веб-сервером или API).
  • Трехуровневая (3-tier): Наиболее распространенная современная архитектура, разделяющая:
    1. Презентационный уровень (Frontend): Пользовательский интерфейс.
    2. Уровень бизнес-логики (Backend/Application Server): Обрабатывает запросы, выполняет правила.
    3. Уровень данных (Database Server): Хранит и управляет данными.

Пример кода для 3-tier архитектуры (Python/Flask):

# Уровень 2: Сервер приложений (Backend)
from flask import Flask, jsonify
import mysql.connector

app = Flask(__name__)

@app.route('/users')
def get_users():
    # Уровень 3: Сервер базы данных
    db = mysql.connector.connect(
        host="localhost",
        user="user",
        password="pass",
        database="app_db"
    )
    cursor = db.cursor()
    cursor.execute("SELECT id, name FROM users")
    result = cursor.fetchall()
    cursor.close()
    db.close()
    # Данные отправляются на Уровень 1: Клиент (Frontend)
    return jsonify(result)

Почему это важно: Разделение на уровни повышает масштабируемость, безопасность и упрощает поддержку. Например, можно масштабировать сервер БД независимо от сервера приложений.