# Нефункциональные требования
Хранение кода всех разрабатываемых приложений происходит в GitLab заказчика. Используемые библиотеки, фреймворки и т.п. должны находиться либо в открытом доступе, например на github.com, либо на сервере GitLab заказчика. Также подрядчик следит за соблюдением лицензионной чистоты использумого кода.
## iOS-приложение
Язык программирования: Swift
Совместимость: iOS 14 и выше
Язык интерфейса: русский
## Android-приложение
Язык программирования: Kotlin
Совместимость: Android 8 и выше
Язык интерфейса: русский
## Frontend
Язык программирования и фреймворк: TypeScript, React
Совместимость: Google Chrome 100+, Mozilla Firefox 100+, Safari 14+, Microsoft Edge 100+
Язык интерфейса: русский
Дополнительные требования: SSR (server-side rendering) с запуском его на платформе kubernetes
Google Pagespeed должен выдавать показатели не ниже 90 для сайта
## Backend
Все приложения разворачиваются в кластерах kubernetes, находящихся в разных ЦОДах. Сами кластера являются независимыми. Базы данных разворачиваются вне kubernetes и реплицируются между ЦОДами. Приложение должно соблюдать следующие принципы:
1. конфигурация приложения производится через переменные окружения;
2. приложнение не должно осуществлять записи файлов на диск; для хранения файлов должно использоваться S3-совместимое хранилище через API;
3. логи приложения пишутся в /std/out и /std/err;
4. отправка технических и бизнес-метрик в prometheus;
5. размер образа контейнера приложения не должен превышать 512 Мб;
6. запуск контейнера должен быть не дольше 60 сек;
7. в приложении должны быть реализованы эндпоинты для liveness, readiness и startup probes;
8. приложение должно быть инструментировано для сбора APM-метрик (Elastic APM);
Технологический стек для backend-приложений: PHP (Symfony), Go и Node.js (только для SSR).
### Мобильный и web API
- 1000 rps по 95 персентили
- 300 ms максимальное время ответа, среднее 150ms
### PHP
Версия PHP: 8.1+
Версия Symfony: 5.4 LTS
Стиль кодирования: PSR-1 и PSR-12
### Go
Версия Go: 1.18+