# Вимоги до Архітектури

LLMS index: [llms.txt](/llms.txt)

---

## Резюме {#summary}

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

### Вимоги {#requirements}

- [Вимоги до застосунку](../application/)
- [Вимоги до OpenTelemetry](../opentelemetry/)
- [Системні вимоги](../system/)

### Цілі застосунку {#application-goals}

- Надати розробникам надійний зразок застосунку, який вони можуть використовувати для вивчення інструментування OpenTelemetry.
- Надати постачальникам засобів спостереження єдину, добре підтримувану, демонстраційну платформу, яку вони можуть додатково налаштовувати (або просто використовувати з коробки).
- Надати спільноті OpenTelemetry живий артефакт, який демонструє функції та можливості API, SDK та інструментів OTel.
- Надати підтримувачам та робочим групам OpenTelemetry платформу для демонстрації нових функцій/концепцій "у дикій природі".

Нижче наведено загальний опис логічних компонентів демонстраційного застосунку.

## Основний застосунок {#main-application}

Основна частина демонстраційного застосунку — це автономний застосунок на основі мікросервісів, який виконує деяку корисну "реальну" роботу, наприклад, сайт електронної комерції. Цей застосунок складається з кількох сервісів, які взаємодіють один з одним через gRPC та HTTP і працюють у Kubernetes (або Docker, локально).

Кожен сервіс повинен бути інструментований OpenTelemetry для трасування, метрик та логів (за наявності/доступності).

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

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

## Компонент прапорців функцій {#feature-flags-component}

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

Прапорці функцій можна встановлювати через інтерфейс користувача конфігуратора flagd.

## Оркестрування та Розгортання {#orchestration-deployment}

Усі сервіси працюють в Kubernetes. Колектор OpenTelemetry слід розгортати за допомогою OpenTelemetry Operator і запускати в режимі sidecar + gateway. Телеметрія з кожного podʼа повинна маршрутизуватися від агентів до шлюзу, а шлюз повинен стандартно експортувати телеметрію до відкритого візуалізатора трасування + метрик.

Для локального/не-Kubernetes розгортання колектор слід розгортати за допомогою файлу compose і моніторити не лише трасування/метрики з застосунків, але й docker контейнери за допомогою `dockerstatsreceiver`.

Метою проєктування цього проєкту є включення CI/CD конвеєра для самостійного розгортання в хмарних середовищах. Це можна пропустити для локальної розробки.
