К микросервисам и далее. Приближающийся сдвиг парадигмы в распределённых вычислениях

Мануэль Маццара1, Лариса Сафина1, Руслан Мустафин1, Иван Ланезе2
1Университет Иннополис, Россия
2Болонский университет / INRIA
m.mazzara@innopolis.ru, l.safina@innopolis.ru, r.mustafin@innopolis.ru, ivan.lanese@gmail.com

Аннотация

Архитектура микросервисов — это стиль, вдохновлённый сервис-ориентированными вычислениями, который недавно начал набирать популярность и обещает изменить способ восприятия, замысла и проектирования программного обеспечения. В этой статье мы предлагаем краткий обзор, предназначенный как сборник библиографических ссылок и ссылок в области науки и инженерии микросервисов (Microservices Science and Engineering, MSE).

CCS Concepts

• Программное обеспечение и его инженерия → проектирование программного обеспечения; архитектуры потоков данных;

Ключевые слова

Распределённые вычисления; Архитектура программного обеспечения; Микросервисы; Качество ПО

1. История

История языков программирования и парадигм за последние десятилетия характеризовалась прогрессивным сдвигом в сторону распределённости, модульности и слабой связности с целью повышения повторного использования кода и надёжности [3], что в конечном счёте продиктовано необходимостью повышения качества программного обеспечения — не только в критичных для безопасности и финансов приложениях, но и в более обыденных коробочных программных продуктах. Два направления — модульность (повторное использование кода и продуманная архитектура) и надёжность (качество ПО и формальные методы: верификация/корректность-посредством-построения) — развивались в некоторой степени независимо и продвигались разными сообществами, хотя пересечение между ними не пусто.

Объектно-ориентированные технологии занимают видное место в разработке ПО [13], включая языки, которые инкорпорируют оба упомянутых аспекта (модульность и корректность). Примечательным примером является язык программирования Eiffel [9], включающий устойчивые принципы ООП в рамки программирования, координируемые идеей проектирования по контракту (design-by-contract), которая направлена на корректность-посредством-построения. Тем не менее ни одна из этих технологий не исключает необходимости тестирования, которое по-прежнему остаётся столпом жизненного цикла разработки программного обеспечения. Существуют и другие примеры языков с сильным акцентом на корректность, как с архитектурной точки зрения, так и в отношении выполнения функциональных требований [7]. Однако до недавнего времени уделялось мало внимания интеграции этих принципов в распределённую среду, где важны такие свойства, как простота развёртывания, лёгкость проектирования и разработки и минимальная потребность в интеграционном тестировании.

2. Смена парадигмы

Jolie [12] — это язык программирования, функционально комбинирующий множество аспектов, которые могут революционизировать способы замысла, проектирования и понимания программного обеспечения. Происходящий из крупной формализационной работы [1] для рабочих процессов и композиции сервисов [8], язык не интегрирует понятие корректности как отдельную надстройку — он просто строится на нём. Интуитивность парадигмы обмена сообщениями поддерживает этап проектирования и избегает побочных эффектов, которые нетривиально тестировать.

Как проект с открытым исходным кодом, Jolie уже выстроила сообщество разработчиков по всему миру — как в промышленности, так и в академии — занимающихся развитием, непрерывно повышающим удобство использования и тем самым расширяющим область принятия. Последние разработки приближают язык к полной зрелости: расширение системы типов [14], разработка статической проверки типов [15], добавление дополнительных итеративных управляющих конструкций для поддержки программирования и встроенная автоматика документации [2] улучшили среду разработки и начали процесс превращения её в полный набор инструментов, делающий весь концепт привлекательным для разработчиков и коммерциализируемым для компаний.

С архитектурной точки зрения Jolie обладает потенциалом вести к сдвигу парадигмы. Компонентно каждый строительный блок создаётся как микросервис [11], встраивающий бизнес-возможности в изоляции. Каждый микросервис может быть повторно использован, оркестрирован и агрегирован с другими [10]. Такой подход упрощает управление компонентами, сокращает затраты на разработку и сопровождение, а также поддерживает распределённые развёртывания [6].

3. К микросервисам

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

Архитектура микросервисов [4] строится на очень простых принципах:

4. Микросервисы и далее

Архитектура микросервисов — это стиль, который всё больше набирает популярность как в академии, так и в промышленности. Хотя он, вероятно, приведёт к сдвигу парадигмы и драматическому изменению восприятия, он не рождается в вакууме и связан с хорошо установленными парадигмами, такими как ООП и SOA. В [4] представлен всесторонний обзор недавних разработок в области архитектуры микросервисов, фокусируя внимание на эволюционных аспектах больше, чем на революционных. Тамошнее изложение призвано помочь читателю в понимании отличительных характеристик микросервисов.

Несмотря на оптимизм, будущее, безусловно, не лишено вызовов. Безопасность парадигмы микросервисов — вопрос, до сих пор почти не исследованный [4]. Коммерческие пакеты высокого качества для разработки всё ещё далеки от совершенства, несмотря на рост интереса к теме. Полностью верифицированное программное обеспечение остаётся открытой проблемой так же, как и для более традиционных моделей разработки. Тем не менее несколько исследовательских центров по всему миру уже рассматривают и продолжают решать эти вопросы в попытке поймать волну и сделать новое поколение распределённых систем реальностью.

Благодарности

Мы хотели бы поблагодарить Университет Иннополис за логистическую и финансовую поддержку, а также всех коллег из лабораторий Service Science and Engineering и Software Engineering.

Литература

  1. EU Project SENSORIA. Доступ — апрель 2016. http://www.sensoria-ist.eu/
  2. A. Bandura, N. Kurilenko, M. Mazzara, V. Rivera, L. Safina, and A. Tchitchigin. Jolie community on the rise. https://arxiv.org/pdf/1609.09718.pdf
  3. E. S. de Almeida, A. Alvaro, D. Lucrédio, V. C. Garcia, and S. R. de Lemos Meira. Rise project: Towards a robust framework for software reuse. In Proceedings of the 2004 IEEE International Conference on Information Reuse and Integration, IRI - 2004, November 8-10, 2004, Las Vegas Hilton, Las Vegas, NV, USA, pages 48-53, 2004.
  4. N. Dragoni, M. Mazzara, S. Giallorenzo, F. Montesi, A. L. Lafuente, R. Mustafin, and L. Safina. Microservices: yesterday, today, and tomorrow. https://arxiv.org/pdf/1606.04036.pdf , (2016).
  5. E. Evans. Domain-driven design: tackling complexity in the heart of software. Addison-Wesley Professional, 2004.
  6. M. Fowler. Microservice Trade-Offs. http://martinfowler.com/articles/microservice-trade-offs.html , (2015).
  7. M. Mazzara. Deriving specifications of dependable systems: toward a method. CoRR, abs/1009.3911, 2010.
  8. M. Mazzara, F. Abouzaid, N. Dragoni, and A. Bhattacharyya. Toward design, modelling and analysis of dynamic workflow reconfigurations - A process algebra perspective. In Web Services and Formal Methods - 8th International Workshop, WS-FM, pages 64-78, 2011.
  9. B. Meyer. Object-Oriented Software Construction. Prentice-Hall, Inc., 1st edition, 1988.
  10. F. Montesi. JOLIE: a Service-oriented Programming Language. Master's thesis, University of Bologna, 2010.
  11. F. Montesi. Process-aware web programming with jolie. Science of Computer Programming, 2016.
  12. F. Montesi, C. Guidi, and G. Zavattaro. Service-Oriented Programming with Jolie. In Web Services Foundations, pages 81-107. Springer, 2014.
  13. J. Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, W. E. Lorensen, et al. Object-oriented modeling and design, volume 199. Prentice-hall Englewood Cliffs, NJ, 1991.
  14. L. Safina, M. Mazzara, F. Montesi, and V. Rivera. Data-driven workflows for microservices (genericity in jolie). In Proc. of The 30th IEEE International Conference on Advanced Information Networking and Applications (AINA), 2016.
  15. A. Tchitchigin, L. Safina, M. Mazzara, M. Elwakil, F. Montesi, and V. Rivera. Refinement types in jolie. https://arxiv.org/pdf/1602.06823.pdf