БИЗНЕС-НАУКА

Удаление монолитов: сервис-ориентированная архитектура

Максимизируйте рентабельность инвестиций при внедрении SOA

Сегодня все программное обеспечение состоит из сложных систем кода, работающих вместе в серии операций для выполнения широкого круга задач. То, как разработчики определяют, выбирают, пишут, интегрируют и разрешают коду взаимодействовать, формирует то, что мы называем архитектурой программного обеспечения. Архитектуры имеют повторяющиеся и отдельные шаблоны кода, которые решают определенные задачи в рамках определенных ограничений. .

Думайте о каждой группе кода, которая выполняет одну задачу, как о кирпичике. Исторически сложилось так, что каждый кирпичик зависит от тех, кто его окружает, и особенно от тех, кто выступает в качестве его основы, когда вы встраиваете код в свой последний шедевр: программное обеспечение.

Монолит

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

Монолитное приложение имеет единую кодовую базу с несколькими модулями. Модули делятся на бизнес-функции и технические характеристики. Все это часть единой системы сборки, которая собирает все приложение или зависимость.

Неудивительно, что в этом традиционном контексте небольшие изменения в любом блоке кода могут иметь значительное влияние на систему. Взаимодействие между частями кода усугубляет эффекты, делая практически невозможным быстрое улучшение программного обеспечения или корректировку для клиентов. Чем ближе к основанию, тем сложнее изменить код.

Это проблема. Хорошее обслуживание = быстрое обслуживание. По крайней мере, в большинстве областей, но особенно когда дело касается технологий. Программное обеспечение не может быть громоздким и при этом хорошо выполнять свою работу.

Что такое сервис-ориентированная архитектура (SOA)?

Одно решение? Сервис-Ориентированная Архитектура.

Сервисно-ориентированная архитектура (SOA) разбивает монолитную сложность на отдельные блоки, которые работают частично независимо. Каждый кирпич называется служебным. Затем эти службы слабо связаны для передачи данных или координации действий. Сервисы могут обмениваться данными, даже если у них нет напрямую связанных функций, но они не зависят друг от друга в своей работе.

Эта совместимость - критическая особенность SOA. Приложения и службы можно быстро настроить, не настраивая всю систему. Они могут масштабироваться, поскольку каждая служба легко становится частью более крупной децентрализованной, но согласованной системы.

Ценность бизнеса важнее технологий

Разница между монолитной архитектурой и сервис-ориентированной архитектурой больше, чем техническая; это философское. Согласно Манифесту SOA, ценности сервис-ориентированной архитектуры:

  • Ценность бизнеса по сравнению с технической стратегией
  • Стратегические цели важнее преимуществ для конкретного проекта
  • Внутренняя совместимость по сравнению с индивидуальной интеграцией
  • Общие службы по сравнению с реализациями для конкретных целей
  • Высокая гибкость по сравнению с оптимизацией
  • Эволюционное совершенствование вместо стремления к изначальному совершенству

Другими словами, SOA - это максимизация ценности за счет автоматизации и постепенных изменений.

Переход на SOA для конечных пользователей и разработчиков

Я регулярно обсуждаю важность ценности над всем остальным. Данные, оптимизация, автоматизация, ИИ: все это просто инструменты, которые помогают нам максимизировать ценность. SOA работает на том же предположении. Технологии важны, но лучший код в мире ничего не значит, если он не приносит с прибылью ваших целей.

К счастью, SOA делает это проще с преимуществами как для конечных пользователей программного обеспечения, так и для разработчиков. Сервис-Ориентированная Архитектура:

  • Упрощает внесение изменений и обслуживание. Службы независимы, поэтому их можно изменять в соответствии с потребностями клиентов, не затрагивая другие службы.
  • Повышает надежность. Службы легче отлаживать, чем монолитный код, что позволяет разработчикам находить и исправлять ошибки и более оперативно реагировать на проблемы клиентов.
  • Легкость масштабирования. Службы можно использовать повторно, что означает, что они могут развиваться в новые приложения и функции. Кроме того, SOA позволяет службам работать на разных серверах, а это означает, что расширения менее ограничены доступностью дисков и уровнем взаимодействия между клиентами и службами.
  • Способствует взаимодействию. Службы используют стандартизированный протокол связи, поэтому платформы могут легко передавать данные между клиентами и службами независимо от языков, на которых они созданы.

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

Доводы в пользу перехода на SOA: Evo Market Tracker

Вы можете предположить, что моя собственная компания Evo с самого начала использовала SOA, поскольку ее ценности так близки к моим. Однако, как и большинство компаний, мы по умолчанию придерживались традиции при создании одного из наших инструментов: Evo Market Tracker.

Evo Market Tracker - это инструмент, который позволяет вам отслеживать историческую эволюцию рынка и в реальном времени. Вы можете следить за тенденциями в ценах, запасах, предложениях и т. Д., А также следить за своими конкурентами. Это один из самых простых инструментов с технической точки зрения, поэтому изначально мы не особо беспокоились о взаимосвязанности его кода. Мы создали высококачественный инструмент, который хорошо достиг желаемых результатов, и это не было нашей основной задачей.

Со следующей архитектурой мы без особого труда смогли достичь наших целей:

Однако со временем мы поняли, что можем обеспечить большую ценность, добавляя дополнительные функции и масштабируя наши услуги. Вот тогда у нас и начались проблемы. Внесение этих изменений стало гораздо более важным делом, чем это было необходимо, из-за взаимосвязанного характера кода. Нам пришлось внести изменения.



Максимальное воздействие с наименьшими нарушениями

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

Лучшим кандидатом казался пакетный код как он есть:

  • Легко отделяется от монолита
  • Не сталкивается с приложением напрямую
  • Не требует хранения данных
  • Использует интенсивные ресурсы как для управления данными, так и для планирования
  • Требуются возможности масштабирования

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

Когда выдается запрос на эту службу, он направляется первой доступной службе для анализа. Рабочие организованы в кластеры, но система тегов может вместить более одной службы внутри каждого рабочего. Поскольку они объединены в сеть, они могут быть расположены где угодно, даже в смешанных средах. Рабочие могут быть физическими или виртуальными машинами. Они могут находиться в разных дата-центрах - даже в других странах! Простой переход на SOA позволяет лучше адаптировать программное обеспечение к эпохе облачных вычислений.

Как увеличить рентабельность инвестиций при внедрении SOA

Через несколько дней после развертывания Evo Market Tracker стал быстрее, требовал меньше места на диске и предоставлял более качественное обслуживание. Мы могли быстрее корректировать наш код, что привело к разработке новых функций и приложений. Раньше второстепенный инструмент в нашем стеке вырос в цене и позволил нам лучше обслуживать наших клиентов.

Легко рассматривать это как единичный случай, а не как урок для всех компаний, создающих программное обеспечение. Это ошибка. Хотя бывают времена и места для монолитных приложений (и архитектурных ответвлений SOA, таких как микросервисы), идеи, лежащие в основе SOA, всегда актуальны. Когда вы развиваетесь, ставя своей основной целью служение, вы всегда будете добиваться лучших результатов.

Все еще не на борту? Посмотрите, как работает Университет Эво. Наша техническая команда проведет вас через весь процесс перехода от монолитной архитектуры к SOA для Evo Market Tracker в курсе Архитектура программного обеспечения. Вы можете получить доступ к используемому нами коду и видеоурокам, которые покажут вам, как завершить процесс от начала до конца. Это бесплатно, так что почему бы не записаться?

Даже если вы не планируете создавать собственное программное обеспечение на основе SOA, важно понимать теоретические основы и придерживаться их. Пусть бизнес-ценность движет технологиями и каждый день приближается к оптимальному. Вы никогда не ошибетесь.

PS Я регулярно пишу о Business Science. Рекомендуемая дополнительная литература:





Monthly Business Science in your inbox, new software, and University-level learning:
Free access
Questions? Please reach out on Linkedin

Получите доступ к экспертному обзору - Подпишитесь на DDI Intel