Scaling

Процеси та конкурентність є ключовими аспектами розробки сучасних програмних додатків, особливо у контексті 12-факторних додатків. У цьому лекційному матеріалі розглянемо, для чого потрібні Processes & Concurrency, які проблеми вони вирішують, як вони спрощують розробку та підтримку програмного забезпечення, роль черг та дотримання принципу Stateless у розробці додатків.

Фактор VII: Processes (Процеси)

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

Для чого це потрібно?

  1. Масштабованість: Легше масштабувати додаток, запускаючи додаткові екземпляри процесів.
  2. Гнучкість: Кожен процес може бути сконфігурований і запущений незалежно, що дозволяє легше управляти і виправляти проблеми.

Проблеми, які вони вирішують

  1. Монолітність: Поділ додатка на окремі процеси дозволяє уникнути створення монолітних структур, які важко підтримувати.
  2. Склейку: Окремі процеси можна легко зв’язати через API або черги, що дозволяє легше замінювати або масштабувати окремі компоненти.

Фактор VIII: Concurrency (Конкурентність)

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

Для чого це потрібно?

  1. Підвищення продуктивності: Одночасне виконання декількох задач підвищує використання ресурсів та зменшує час очікування.
  2. Покращення відмовостійкості: Якщо один процес падає, інші можуть продовжувати роботу, зменшуючи вплив на користувача.

Проблеми, які вони вирішують

  1. Обмеження ресурсів: Завдяки тому, що процеси можуть працювати в паралель, можна краще використовувати ресурси системи.
  2. Затори та блокування: Поділ роботи на окремі процеси дозволяє уникнути заторів, які можуть виникати в монолітних системах.

Використання черг (Queues)

Як черги допомагають?

  1. Асинхронність: Черги дозволяють процесам обмінюватися даними асинхронно, що зменшує блокування і підвищує загальну продуктивність.
  2. Надійність: Випадки падіння одного процесу не впливають на загальну стабільність системи, оскільки черга зберігає повідомлення до обробки іншим процесом.

Принципи використання черг

  1. Іденпотентність: Операції повинні бути іденпотентними, тобто виконання однієї операції кілька разів повинно мати той самий ефект.
  2. Життєвий цикл повідомлень: Управляйте терміном життя повідомлень, включаючи повторне відправлення у випадку помилок.

Stateless-принцип

Для чого це потрібно?

Stateless-принцип полягає в тому, що кожен екземпляр процесу повинен бути незалежним і не залежати від внутрішнього стану.

Як це спрощує роботу

  1. Легкість масштабування: Оскільки процеси не мають внутрішнього стану, їх можна легко запустити або зупинити в необхідній кількості.
  2. Простота відновлення: Немає необхідності відновлювати стан між перезапусками, що спрощує обслуговування і забезпечує відмовостійкість.

Висновок

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

results matching ""

    No results matching ""