Найти тему

Об архитектуре для системного аналитика

Оглавление

Перед вами карта компетенций системного аналитика и сегодня мы поговорим про архитектуру.

Карта компетенций системного аналитика
Карта компетенций системного аналитика

Микросервисы и монолит

Микросервисы и монолит
Микросервисы и монолит

Сначала поговорим о клиент-серверной архитектуре и микросервисах. Приложение может представлять из себя монолит. Тогда клиент просто обращается к этому монолиту как к серверу и получает нужные данные. В таком формате проект проще реализовать, но сложнее поддерживать. Особенно если он сильно разрастается. Любое изменение в монолите может в теории повлиять на все его функции, а отказ монолита (сервер упал, например) приведет к недоступности сразу всех сервисов. Чтобы избежать большей части этих проблем, можно использовать микросервисную архитектуру. Тут каждый микросервис может выступать как отдельное приложение, иметь свою БД и поддерживаться независимо от остальных микросервисов.

Запрос-ответ

Запрос-ответ
Запрос-ответ

Клиент общается с микросервисами по системе «запрос ответ». Например, нужно получить какие-то данные от сервиса 1. Этот сервис сам знает, куда ему нужно обратиться чтобы эти данные собрать и отдать. Например, он запросит и получит данные от сервисов 2 и 3, а потом используя полученные данные сформирует запрос к сервису 4, получит ответ, обработает его и отправит клиенту. Точно также клиент может иметь возможность обратиться напрямую к тому или иному сервису (а может её и не иметь).

Serverless

Serverless
Serverless

Что касается так называемой serverless (безсерверной) архитектуры – она очень похожа на микросервисную, только все эти микросервисы зашиты в облако и клиент общается именно с ним по API. Внутри облака провайдер уже сам разбираться сколько инстенсов (экземпляров) тех или иных сервисов ему поднять и как между ними распределить очередь запросов от клиентов. Это удобнее масштабировать, т.к. масштабирование по сути лежит на провайдере, но вот сменить провайдера при таком подходе будет достаточно сложно. Да и сюрпризы в виду того, что провайдер решил отключить какие-то редко используемые сервисы и при запросе будет запускать их заново вследствие чего клиенту придется подождать, не исключены.

Заключение

В заключении повторим основные моменты:

  • Ваше приложение может быть монолитным и клиент будет общаться с ним как с единым сервером, но такое приложение сложнее поддерживать и масштабировать.
  • Микросервисы проще поддерживать и масштабировать.
  • А если использовать serveless подход, масштабирование вообще можно свалить на провайдера, но это чревато излишней зависимостью от него.