Какие основные виды (типы) приложений вы знаете?

Ответ

Приложения классифицируют по среде выполнения и архитектуре. Основные виды:

1. По среде выполнения (клиент):

  • Веб-приложения (Web Apps): Работают в браузере, обращаются к серверу. Не требуют установки. Пример: Gmail, Notion.
    • Технологии: HTML, CSS, JavaScript, фреймворки (React, Angular).
  • Мобильные приложения (Mobile Apps): Устанавливаются на смартфоны/планшеты.
    • Нативные (Native): Пишутся под конкретную ОС (Swift/Kotlin). Высокая производительность.
    • Гибридные (Hybrid): Веб-приложение в "обёртке" (Cordova). Единая кодовая база.
    • Кроссплатформенные (Cross-platform): Компилируются в нативный код (Flutter, React Native).
  • Десктопные приложения (Desktop Apps): Устанавливаются на ПК (Windows, macOS, Linux). Пример: VS Code, Slack (десктопная версия).
  • Встраиваемые системы (Embedded): ПО для специализированных устройств (IoT, медицинское оборудование, автомобили).

2. По архитектуре:

  • Монолит (Monolith): Единое приложение, где все компоненты tightly coupled.
  • Клиент-серверные (Client-Server): Чёткое разделение на клиентскую часть (UI) и сервер (бизнес-логика, БД).
  • Микросервисы (Microservices): Приложение как набор независимых сервисов, общающихся по сети (часто через HTTP/REST или messaging).

Пример теста для веб-API (микросервисная архитектура):

import requests
# Тест эндпоинта получения пользователя
response = requests.get("https://api.service.com/users/1", headers={"Authorization": "Bearer token"})
assert response.status_code == 200
assert response.json()["id"] == 1  # Проверка данных в теле ответа (JSON)

Ответ 18+ 🔞

Ну ты смотри, какие приложения бывают, блядь! Это ж целая наука, а не хухры-мухры. Сейчас разложу по полочкам, чтобы даже мартышлюшка поняла.

1. Где эта штука работает, то есть среда выполнения (клиент):

  • Веб-приложения (Web Apps): Это когда ты в браузере сидишь и что-то там делаешь. Всё у тебя на сервере, а ты только кнопки жмёшь. Устанавливать нихуя не надо. Примеры: Gmail, Notion.
    • Из чего сделаны: HTML, CSS, JavaScript, ну и всякие фреймворки (React, Angular) — без них сейчас никуда.
  • Мобильные приложения (Mobile Apps): Ну это понятно, на телефоне или планшете.
    • Нативные (Native): Пишутся специально под iOS или Android. Быстрые, красивые, но для каждой платформы свой код — овердохуища работы.
    • Гибридные (Hybrid): По сути, веб-приложение, которое запихнули в коробочку от телефона (типа Cordova). Один код на все платформы, но часто тормозит и выглядит как говно.
    • Кроссплатформенные (Cross-platform): Золотая середина, ёпта. Пишешь один раз, а оно компилируется под все платформы (Flutter, React Native). Почти как нативное, но не совсем.
  • Десктопные приложения (Desktop Apps): Старая добрая классика для компьютера. Устанавливаешь и работает. VS Code, например, или Slack в виде отдельной программы.
  • Встраиваемые системы (Embedded): Это уже для спецов, блядь. ПО для всяких умных чайников, медицинских приборов или машин. Там свои заморочки, в рот меня чих-пых.

2. Как это всё внутри устроено (архитектура):

  • Монолит (Monolith): Всё свалено в одну кучу. И интерфейс, и логика, и база данных — всё в одном месте. Пока маленький проект — норм. А как вырастет — пиши пропало, любое изменение может всё развалить, блядь.
  • Клиент-серверные (Client-Server): Тут уже умнее. Чёткое разделение: на клиенте только красивые кнопочки (UI), а вся бизнес-логика и данные на сервере сидят.
  • Микросервисы (Microservices): А это уже высший пилотаж, ёперный театр! Приложение разбито на кучу маленьких независимых сервисов. Каждый живёт своей жизнью и общается с другими через сеть (обычно HTTP или messaging). Один сломался — остальные работают. Красота!

Вот тебе пример, как можно протестировать API такого микросервиса (смотри, не обосрись от простоты):

import requests
# Тест эндпоинта получения пользователя
response = requests.get("https://api.service.com/users/1", headers={"Authorization": "Bearer token"})
assert response.status_code == 200
assert response.json()["id"] == 1  # Проверка данных в теле ответа (JSON)

Вот и вся магия. Отправил запрос, проверил, что статус 200 (всё ок) и что в ответе нужный id. Если не ок — значит, где-то косяк, и пора идти разбираться, кто тут у нас пиздабородатый код написал.