💻
Подготовка к собеседованию
  • Оглавление
  • Архитектурные вопросы
    • Как избавиться от монолитности приложения?
    • Модульность VS Микросервисы
    • Микросервисы VS Монолит
    • Web services, RESTfull, SOAP
    • Распределенные системы
    • Вопросы по микросервисам
    • Разложение монолита
  • Языки программирования
    • Императивные и декларативные языки программирования
    • Функциональное программирование
  • Коммуникация
    • Основы WEB
    • Уровни модели OSI
    • IP
    • TCP
    • UDP
    • TCP и UDP – в чем разница?
    • TCP/IP
    • Приложения TCP / IP
    • ICMP
    • HTTP
    • HTTP/1.1 vs HTTP/2
    • Разница между HTTP и HTTPS
    • URL и URI - в чем различие?
    • SSL
    • TLS
    • Web Sockets
    • SOAP vs REST vs GraphQL vs RPC
    • DNS
    • Как работает интернет
  • среда выполнения
    • Процессы, потоки,нити
  • Алгоритмы
    • Алгоритмы и структуры данных
  • БД
    • Основы БД
    • Транзакции
    • Нормализация БД
    • SQL
  • Брокеры сообщений
    • Введение в kafka
    • kafka
    • 5 вещей, о которых должен знать любой разработчик Apache Kafka
  • Парадигмы проектирования
    • 10 важнейших принципов разработки программного обеспечения
    • Принципы для разработки: KISS, DRY, YAGNI, BDUF, SOLID, APO и бритва Оккама
  • Highload
    • За двумя зайцами погонишься — чеклист для HighLoad системы гуглить будешь
Powered by GitBook
On this page

Was this helpful?

  1. Архитектурные вопросы

Как избавиться от монолитности приложения?

PreviousОглавлениеNextМодульность VS Микросервисы

Last updated 4 years ago

Was this helpful?

Способы разделения монолитного приложения:

  1. Переход к модульной / сервис-ориентированной архитектуре (SOA, service-oriented architecture) Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор , взаимодействующих по протоколу , но существуют и другие реализации (например, на базе , , на основе ). Главное, что отличает SOA — это использование независимых сервисов с чётко определёнными интерфейсами, которые для выполнения своих задач могут быть вызваны неким стандартным способом, при условии, что сервисы заранее ничего не знают о приложении, которое их вызовет, а приложение не знает, каким образом сервисы выполняют свою задачу.

    SOA также может рассматриваться как стиль архитектуры информационных систем, который позволяет создавать приложения, построенные путём комбинации слабосвязанных и взаимодействующих сервисов. Эти сервисы взаимодействуют на основе какого-либо строго определённого платформенно-независимого и языково-независимого интерфейса (например, ). Определение интерфейса скрывает языково-зависимую реализацию сервиса.

    Таким образом, системы, основанные на SOA, могут быть независимы от технологий разработки и платформ (таких как , и т. д.). К примеру, сервисы, написанные на , работающие на платформах .Net и сервисы на Java, работающие на платформах , могут быть с одинаковым успехом вызваны общим составным приложением. Приложения, работающие на одних платформах, могут вызывать сервисы, работающие на других платформах, что облегчает повторное использование компонентов.

  2. Переход к микросервисной архитектуре Микросервисная архитектура — вариант программного обеспечения, направленный на взаимодействие насколько это возможно небольших, слабо связанных и легко изменяемых модулей — микросервисов, получивший распространение в середине 2010-х годов в связи с развитием практик и .

    Если в традиционных вариантах сервис-ориентированной архитектуры модули могут быть сами по себе достаточно сложными программными системами, а взаимодействие между ними зачастую полагается на стандартизованные тяжеловесные протоколы (такие, как , ), в микросервисной архитектуре системы выстраиваются из компонентов, выполняющих относительно элементарные функции, и взаимодействующие с использованием экономичных сетевых коммуникационных протоколов (в стиле с использованием, например, , , ). Философия микросервисов фактически копирует , согласно которой каждая программа должна «делать что-то одно, и делать это хорошо» и взаимодействовать с другими программами простыми средствами: микросервисы минимальны и предназначаются для единственной функции. Основные изменения в связи с этим налагаются на организационную культуру, которая должна включать автоматизацию разработки и тестирования, а также культуру проектирования, от которой требуется предусматривать обход прежних ошибок, исключение по возможности унаследованного кода (микросервисы часто заменяют целиком, поскольку их функции элементарны).

англ.
веб-служб
SOAP
jini
CORBA
REST
WSDL
Java
.NET
C#
Java EE
сервис-ориентированной архитектуры
гибкой разработки
DevOps
[1]
[2]
[3]
SOAP
XML-RPC
REST
JSON
Protocol Buffers
Thrift
философию Unix