Перейти к содержимому

Лекция 1. Введение в разработку интернет-приложений

Цели лекции

К концу занятия вы сможете:

  • объяснять, что такое интернет-приложение и чем оно отличается от настольного;
  • описывать клиент-серверную модель и роли frontend и backend;
  • перечислять основные этапы жизненного цикла разработки;
  • называть ключевые вызовы (масштабируемость, безопасность, производительность) и современные тенденции;
  • понимать место курса и стека Python/FastAPI в общей картине.

1. Понятие интернет-приложения

Интернет-приложение (веб-приложение) — это программный комплекс, который работает в распределённой среде и взаимодействует с пользователем через сеть Интернет. Его логика и данные размещаются на сервере, а пользователь обращается к ним удалённо — чаще всего через веб-браузер или специализированный клиент (мобильное приложение, другой сервис).

Ключевая идея: программа физически находится не на устройстве пользователя, а на сервере. Пользователь получает доступ к функциональности «как к услуге», не задумываясь о том, где именно выполняется код.

1.1. Отличие от настольных приложений

Классическое настольное (desktop) приложение устанавливается непосредственно на компьютер пользователя, выполняется его процессором и хранит данные локально. Интернет-приложение переносит вычисления и хранение на серверную сторону.

ПризнакНастольное приложениеИнтернет-приложение
Где выполняется логикаНа устройстве пользователяПреимущественно на сервере
УстановкаТребуется инсталляцияДостаточно браузера / тонкого клиента
ДоступС конкретного устройстваС любого устройства в сети
ОбновлениеКаждый пользователь обновляет самЦентрализованно на сервере
Хранение данныхЛокальноЦентрализованно (БД на сервере)
Зависимость от платформыВысокая (Windows/macOS/Linux)Низкая (нужен браузер)
Работа без сетиВозможнаОбычно ограничена или невозможна

1.2. Ключевые свойства интернет-приложений

  • Доступность — приложение доступно из любой точки, где есть подключение к сети, и в любое время.
  • Многопользовательность — с системой одновременно работают тысячи и миллионы пользователей; сервер должен корректно обрабатывать параллельные запросы и разделять данные между пользователями.
  • Обновляемость — новая версия выкладывается централизованно на сервере, и все пользователи сразу получают её без ручной переустановки.
  • Независимость от платформы — клиенту достаточно браузера; операционная система и «железо» пользователя почти не важны.
  • Централизованное хранение и обслуживание — данные и резервные копии находятся в одном управляемом месте.

1.3. Примеры

  • электронная коммерция: Ozon, Wildberries, Amazon;
  • социальные сети и медиа: ВКонтакте, Telegram Web, YouTube;
  • онлайн-банкинг: Сбербанк Онлайн, Т-Банк;
  • корпоративные системы: CRM, ERP, системы документооборота;
  • сервисы продуктивности: Google Docs, Notion, онлайн-почта.

2. Клиент-серверная модель

Интернет-приложения строятся по клиент-серверной архитектуре: функции разделены между клиентом, который отправляет запросы, и сервером, который их обрабатывает и возвращает ответ.

[ Клиент ] --- запрос (HTTP) ---> [ Сервер ] <---> [ База данных ]
браузер <--- ответ (HTML/JSON) --- логика

Базовый цикл взаимодействия:

  1. Клиент формирует запрос (например, открыть страницу, отправить форму).
  2. Запрос по сети (HTTP/HTTPS) приходит на сервер.
  3. Сервер выполняет бизнес-логику, при необходимости обращается к базе данных.
  4. Сервер формирует ответ (HTML-страница или данные в формате JSON).
  5. Клиент отображает результат пользователю.

2.1. Составные части системы

  1. Клиентская часть (Frontend) — пользовательский интерфейс и интерактивность.
  2. Серверная часть (Backend) — бизнес-логика, обработка данных, аутентификация и авторизация.
  3. База данных — хранение информации.
  4. Сеть и протоколы — транспорт между клиентом и сервером.

2.2. Сеть и протоколы

  • Основной протокол взаимодействия — HTTP/HTTPS (HTTPS — это HTTP, защищённый шифрованием TLS).
  • Для постоянного двустороннего обмена (чаты, уведомления, онлайн-игры) применяется WebSocket.
  • Для эффективного взаимодействия между сервисами — gRPC.
  • Основной формат обмена данными — JSON (де-факто стандарт), исторически также применялся XML.

3. Frontend и Backend

Разделение на frontend и backend — фундамент современной веб-разработки. Эти части решают разные задачи и используют разные технологии.

3.1. Frontend (клиентская часть)

Отвечает за то, что видит и с чем взаимодействует пользователь: вёрстку, оформление, реакцию на действия.

  • Базовые технологии: HTML (структура), CSS (оформление), JavaScript (поведение).
  • Современные библиотеки и фреймворки: React, Vue.js, Angular.
  • Распространённый подход — одностраничные приложения (SPA, Single Page Application), где страница не перезагружается целиком, а обновляет лишь нужные части, обращаясь к серверу за данными.

3.2. Backend (серверная часть)

Отвечает за «невидимую» логику: обработку запросов, правила работы системы, доступ к данным, безопасность.

  • Языки и фреймворки: Python (FastAPI, Django, Flask), JavaScript/TypeScript (Node.js, NestJS), Java (Spring), Go, PHP (Laravel), Swift (Vapor).
  • В нашем курсе основной стек — Python + FastAPI: современный фреймворк для построения веб-API, ориентированный на скорость разработки, асинхронность и автоматическую генерацию документации.

3.3. База данных

  • Реляционные СУБД (таблицы, связи, язык SQL): PostgreSQL, MySQL.
  • Нереляционные СУБД (NoSQL): MongoDB (документы), Redis (ключ-значение, кэш), Cassandra (большие распределённые данные).
СлойНазначениеПримеры технологий
FrontendИнтерфейс, интерактивностьHTML, CSS, JS, React, Vue
BackendЛогика, обработка, безопасностьPython/FastAPI, Node.js, Java
База данныхХранение информацииPostgreSQL, MongoDB, Redis
СетьТранспорт данныхHTTP/HTTPS, WebSocket, gRPC

4. Этапы разработки (жизненный цикл ПО)

Разработка интернет-приложения подчиняется общему жизненному циклу программного обеспечения.

  1. Анализ требований

    • определение целей и задач системы;
    • формирование технического задания (ТЗ);
    • согласование с заказчиком и будущими пользователями.
  2. Проектирование

    • выбор архитектурного стиля (монолит, микросервисы, serverless);
    • проектирование модели данных;
    • определение интерфейсов API.
  3. Реализация (разработка)

    • написание клиентской и серверной частей;
    • интеграция с базами данных и внешними сервисами.
  4. Тестирование

    • проверка корректности функционала (модульные, интеграционные тесты);
    • нагрузочное тестирование;
    • тестирование безопасности.
  5. Развёртывание и сопровождение

    • контейнеризация и публикация (Docker, Kubernetes);
    • настройка CI/CD (автоматическая сборка и доставка);
    • мониторинг, поддержка, выпуск обновлений.

Важно: этот цикл, как правило, итеративный — приложение развивается по кругу, проходя этапы заново при добавлении новой функциональности.


5. Основные вызовы разработки

  1. Масштабируемость

    • задача: обслуживать рост числа пользователей и нагрузки;
    • решения: горизонтальное масштабирование (добавление серверов), балансировка нагрузки, облачные технологии.
  2. Безопасность

    • угрозы: SQL-инъекции, XSS, CSRF, кража персональных данных;
    • меры: HTTPS/TLS, безопасное хранение паролей (хеширование), контроль доступа, валидация входных данных.
  3. Производительность

    • задача: обеспечить быстрый отклик системы;
    • методы: кэширование (Redis, CDN), оптимизация запросов к БД, асинхронная обработка.
  4. Кроссплатформенность

    • задача: одинаково удобная работа на ПК, смартфонах, планшетах;
    • решение: адаптивный интерфейс (responsive design).

Эти вызовы взаимосвязаны: например, кэширование одновременно повышает производительность и помогает масштабируемости, а небрежная оптимизация может ослабить безопасность.


6. Современные тенденции

  • SPA (одностраничные приложения) — отзывчивый интерфейс, обращающийся к серверу за данными, а не за готовыми страницами.
  • API-first разработка — приложение сначала проектируется как набор API (REST, GraphQL, gRPC), а интерфейсы (веб, мобильный) подключаются к ним. Этот подход естественно ложится на FastAPI.
  • Облачные технологии и DevOps — размещение приложений в облаке, контейнеризация (Docker), оркестрация (Kubernetes), автоматизация поставки (CI/CD).
  • Микросервисная архитектура — система разбивается на небольшие независимые сервисы вместо одного монолита, что упрощает развитие и масштабирование отдельных частей.
  • Serverless — выполнение отдельных функций в облаке без управления серверами (AWS Lambda, Google Cloud Functions).
  • Интеграция искусственного интеллекта — рекомендательные системы, чат-боты, голосовые ассистенты.

7. Значение интернет-приложений

Интернет-приложения сегодня — это основа цифровой экономики и повседневной жизни. Они обеспечивают:

  • автоматизацию бизнес-процессов;
  • новые каналы взаимодействия с клиентами;
  • глобальную доступность сервисов независимо от местоположения;
  • интеграцию с большими данными (Big Data), искусственным интеллектом и интернетом вещей (IoT).

Поэтому разработка интернет-приложений — комплексная дисциплина, объединяющая сетевые технологии, программирование, работу с базами данных и информационную безопасность. Именно эти компоненты мы будем изучать в течение курса, постепенно собирая полноценное backend-приложение на Python/FastAPI.


Краткие итоги

  • Интернет-приложение выполняет логику на сервере и доступно через сеть; в отличие от настольного, оно не требует установки и обновляется централизованно.
  • Ключевые свойства: доступность, многопользовательность, обновляемость, независимость от платформы.
  • Основа архитектуры — клиент-серверная модель: клиент шлёт запрос, сервер обрабатывает и возвращает ответ.
  • Frontend отвечает за интерфейс (HTML/CSS/JS, React/Vue), backend — за логику и данные (Python/FastAPI и др.).
  • Разработка проходит этапы жизненного цикла: анализ → проектирование → реализация → тестирование → развёртывание и сопровождение.
  • Главные вызовы: масштабируемость, безопасность, производительность, кроссплатформенность.
  • Тенденции: SPA, API-first, облако и DevOps, микросервисы, serverless, интеграция ИИ.

Вопросы для самопроверки

  1. Чем интернет-приложение принципиально отличается от настольного? Приведите 3 различия.
  2. Что означают свойства «доступность», «многопользовательность» и «обновляемость»?
  3. Опишите цикл взаимодействия клиента и сервера по шагам.
  4. За что отвечает frontend, а за что — backend? Назовите технологии каждого слоя.
  5. В чём разница между реляционными и нереляционными базами данных?
  6. Перечислите этапы жизненного цикла разработки и кратко поясните каждый.
  7. Какие меры применяют для защиты веб-приложения от основных угроз?
  8. Что такое SPA и подход API-first? Как они связаны с современной разработкой?
  9. Почему кэширование влияет одновременно на производительность и масштабируемость?
  10. Какое место в общей картине занимает стек Python/FastAPI?