Архітектура мікросервісів на Ruby: практичний посібник із налаштування

watch 9s
views 2

12:53, 16.09.2026

Зміст статті
arrow

  • Початок роботи з мікросервісами
  • Аналіз взаємодії та обміну повідомленнями  
  • Створення мікросервісів на Ruby    
  • Створення простого сервісу «Person»
  • Використання шаблонів репозиторіїв

Використання архітектури мікросервісів стає дедалі популярнішим, головним чином завдяки її масштабованості, більшій гнучкості та ізоляції несправностей. Немає необхідності запускати ваш проєкт на монолітній архітектурі; ви можете використовувати більш масштабоване рішення, де сервіси працюватимуть незалежно, але при цьому взаємодіятимуть між собою.

Тут ми проведемо вас через процес налаштування Ruby на реальних практичних прикладах та надамо корисні рекомендації.

Початок роботи з мікросервісами

У стандартному підході «клієнт-сервер» бекенд зазвичай працює на основі монолітної системи, яка включає весь доступ до даних та доменну логіку. Взаємодія з бекендом здійснюється через шар API. У архітектурі мікросервісів система поділяється на менші сервіси, де кожна частина має власні ресурси та домен. Крім того, всі ці сервіси масштабуються незалежно один від одного.

Сервіси з’єднані між собою та взаємодіють через архітектуру брокера. Весь процес працює наступним чином: повідомлення надсилаються до брокера через сервіси, а потім ці повідомлення маршрутизуються до потрібного адресата. Це означає, що сервіси не повинні бути пов’язані між собою безпосередньо, а лише знати, як взаємодіяти з брокером. Такий підхід є надзвичайно вигідним для ізоляції сервісів та підвищення загального рівня безпеки.

Аналіз взаємодії та обміну повідомленнями  

Для забезпечення взаємодії з брокером використовується асинхронний рівень. Ця взаємодія певною мірою нагадує HTTP. Вона працює наступним чином: сервіси надсилають запит через брокера, а потім отримують відповідь.

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

Створення мікросервісів на Ruby    

Візьмемо, наприклад, архітектуру з брокером та кількома сервісами на Ruby. Щоб правильно запустити процес, спочатку налаштуйте брокер, переконавшись, що він працює належним чином. Ви можете додавати мікросервіси на Ruby.

Якщо говорити про конкретний проект сервісу, він зазвичай включає такі компоненти:

  • Конфігурацію, що містить рівні логування, налаштування бази даних та адресу брокера.
  • Ініціалізатори, які відповідають за визначення залежностей.
  • Об’єкти передачі даних (DTO) та об’єкти доступу до даних (DAO).
  • Репозиторії, що керують операціями доступу до даних.
  • Маппери, необхідні для перетворення між DAO та DTO.
  • Класи сервісів, необхідні для оркестрування репозиторіїв та реалізації бізнес-кінцевих точок.

Створення простого сервісу «Person»

Тепер розглянемо приклад сервісу «Person». Перший крок пов’язаний із налаштуванням з’єднання з базою даних та визначенням таблиці «person». Модель DAO потрібна для представлення записів у таблиці, а DTO використовується для представлення форми зовнішнього корисного навантаження.

Після цього для перетворення між DTO та DAO використовується мапер. Усі ці компоненти об’єднує репозиторій, щоб забезпечити виконання операцій більш високого рівня. Останнім кроком є використання класу сервісу для об’єднання всіх компонентів та надання структурованої відповіді.

Наприклад, за допомогою методу get можна отримати інформацію про всіх користувачів. Якщо така інформація відсутня, генерується стандартна помилка 404. Якщо така інформація доступна, її перетворюють у DTO та повертають клієнту. Потім сервіс прив’язується до брокера, маршрути пов’язуються, і це гарантує, що вхідні запити будуть надіслані до правильного обробника.

Для тестування кінцевих точок знадобляться лише невеликі скрипти. Завдяки простій логіці обробки помилок загальна взаємодія між усіма процесами стає набагато легшою для тестування та передбачуванішою.

Використання шаблонів репозиторіїв

Сервіси в описаній архітектурі не взаємодіють безпосередньо з моделями бази даних. Вони в основному базуються на репозиторіях, які, у свою чергу, ґрунтуються на принципі маперів, DTO та DAO. Такий підхід має кілька конкретних переваг:

  • Оскільки всі операції з доступом до даних централізовано зосереджені в репозиторіях, це позитивно впливає на логіку запитів та зберігання даних.
  • Основний принцип функціонування ґрунтується на обробці повідомлень та бізнес-логіці.
  • Гарантії стабільності контракту завдяки DTO.

Мікросервіси в основному функціонують за принципом чіткого розділення, де кожен сервіс має власну індивідуальну структуру та стратегію зберігання даних. Поєднання дисциплінованих шаблонів та архітектури обміну повідомленнями на основі брокерів робить цей підхід набагато простішим у підтримці та гнучкішим.

Поділитися

Чи була ця стаття корисною для вас?

Популярні пропозиції VPS

-20.4%

CPU
CPU
2 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 2048 HK Linux

18

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 2048 Windows

10.23

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 8192 Linux

115.5

При оплаті за рік

-10.1%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
60 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 2048 Linux

6.32

При оплаті за рік

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
KVM-NVMe 4096 Linux

16.45

При оплаті за рік

-5%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
40 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 1024 Windows

12.1

При оплаті за рік

-12.3%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 16384 Windows

237

При оплаті за рік

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 4096 Windows

18.65

При оплаті за рік

-10%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
aiKVM-NVMe 4096 Linux

16.93

При оплаті за рік

-10%

CPU
CPU
8 Epyc Cores
RAM
RAM
32 GB
Space
Space
200 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 32768
OS
CentOS
Software
Software
Keitaro

77.54

При оплаті за рік

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

Ми використовуємо файли cookie, щоб забезпечити вам найкращий досвід роботи на нашому сайті. Якщо ви продовжуєте користуватися сайтом, не змінюючи налаштувань, вважайте, що ви згодні на отримання всіх файлів cookie на сайті HostZealot.