Привет, Хабр.
Это вторая статья в цикле, в котором мы рассматриваем архитектуру основных сервисов OpenStack. Первая, в которой я рассказывал о Nova и общих паттернах построения платформы, находится здесь. Сегодня погрузимся в детали реализации сервиса DBaaS, который в платформе носит название Trove. Мы посмотрим, как устроены основные компоненты сервиса и их взаимодействие, затронем некоторые особенности реализации механизмов безопасности, а также кратко обсудим особенности code-style.
Cloud builder
Архитектурные нюансы OpenStack. Принципы работы компонентов Nova
OpenStack — широко распространенная облачная платформа. На ее базе построены десятки, а то и сотни проектов: приватных и публичных. Ее многочисленные модули позволяют достаточно просто наращивать функциональность конечного решения: от понятных DBaaS (Database as a Service) до специфичных AXaaS (Acceleration as a Service).
По мере развития CLO возникла необходимость доработки платформы под собственные нужды. В процессе написания патчей мне сильно не хватало понимания архитектурных принципов OpenStack. Часть информации я смог найти в документации, часть мне приходилось вытаскивать из исходников, поэтому я решил систематизировать знания и поделиться с сообществом.
В цикле статей мы рассмотрим основные компоненты OpenStack, механизмы их взаимодействия и как именно разработчиками был реализован основной функционал. Статья будет интересна инженерам, разработчикам облачных сервисов и всем тем, кто хотел заглянуть под капот, но стеснялся.
А так как Nova (он же Compute) является едва ли не основным сервисом, который эксплуатируют все остальные, с него и начнем.
История создания облачного сервиса, приправленная киберпанком
С ростом стажа работы в IT начинаешь замечать, что системы имеют свой характер. Они могут быть покладистыми, молчаливыми, взбалмошными, суровыми. Могут располагать к себе или отталкивать. Так или иначе, приходится «договариваться» с ними, лавировать между «подводными камнями» и выстраивать цепочки их взаимодействия.
Вот и нам выпала честь построить облачную платформу, а для этого потребовалось «уговорить» пару подсистем работать с нами. Благо, у нас есть «язык API», прямые руки и куча энтузиазма.
В этой статье не будет технического хардкора, но будет описание проблем, с которыми мы столкнулись при построении облака. Я решил описать наш путь в виде легкой технической фантазии о том, как мы искали общий язык с системами и что из этого вышло.
Добро пожаловать под кат.