Между Строк Требований|Блог системного аналитика
181 subscribers
24 photos
2 videos
6 links
О системном и бизнес-анализе, ИТ-архитектуре, технологиях и работе.
Собственно я: @tekhazanov1
Download Telegram
#Devops для аналитиков
Решил я немного погрузиться в основы деплоя и раскатки ПО. Во-первых, у нас на проекте свои полноценные Devops-практики с блекджеком GitLab и CI/CD, да к тому же одна из моих задач сейчас связана с разработкой софтины по мониторингу работоспособности камер, а также с некоторыми сервисными операциями по восстановлению работоспособности отдельных камер. Среди нужных фичей там актуализация Docker-образов, перезапуск контейнеров и всякое такое... Короче, предлагаю сегодня в связи с этой темой посмотреть, какие файлики должны быть в папке с проектом, чтобы задеплоить и развернуть твой print("Hello World") с оркестрацией и релизным пайплайном. 😄
Итак, что у нас может быть в папке с проектом.

👩‍💻 Docker файлы
Dockerfile — инструкция для сборки Docker-образа;
docker-compose.yml — запуск нескольких контейнеров вместе;
docker-compose.dev.yml — версия для разработки;
.dockerignore — что НЕ копировать в Docker-образ.

👩‍💻 CI/CD (GitLab)
.gitlab-ci.yml — пайплайн автоматической сборки, тестов, деплоя;
k8s-cronjob.yaml — задания по расписанию в Kubernetes.

👩‍💻 Git и документация
.gitignore — какие файлы игнорировать в Git;
.gitattributes — настройки обработки файлов в Git;
README.md — документация проекта;
.ipynb — Jupyter notebook с примерами/анализом.

🛠 Конфигурация
config.yml — общие настройки приложения;
.local.env.tests, env.tests — переменные окружения для тестов;
lockalhost_local_start.sh — скрипт для запуска локально.

👩‍💻 Python
.python-version — какая версия Python используется;
.pylintrc — настройки линтера (проверка качества кода);
mypy.ini — настройки статической типизации;
pip.conf — настройки менеджера пакетов pip;
logging.conf — настройки логирования;
.pyarmor_config — настройки обфускации кода.

👩‍💻 Rust (ну раз уж он у нас тоже на проекте есть)
Cargo.toml - зависимости и настройки проекта (как requirements.txt);
Cargo.lock - точные версии зависимостей (генерируется автоматически).

🎯 Что все это дело дает для деплоя:
1. Сборка → Dockerfile + docker-compose;
2. Тестирование → .gitlab-ci.yml + env.tests;
3. Деплой → .gitlab-ci.yml + k8s-cronjob.yaml;
4. Настройка → config.yml + переменные окружения.

In conclusion: у каждого в команде своя роль и своя специализация, но системный аналитик должен разбираться во всех этапах разработки ПО и ввода его в эксплуатацию (в том числе иметь представление, как работают Devops-инженеры).

#DevOps #системныйанализ #работа #docker #python
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍21
🔛 Фича-флаги: что делать, чтобы не класть весь прод разом
Честно скажу, я совсем недавно узнал, как это на самом деле называется: Feature Flag. Я, в общем-то, всегда звал это просто — рубильник. 💩 Ну да ладно, короче, к сути.

Фича-флаг, он же Feature Toggle, а также Feature Flag (как же чертовски круто это все звучит) — это переключатель, который позволяет включать или выключать функциональность в работающем приложении без перевыпуска кода.

Ну грубо говоря как-то так:
if feature_flag.is_enabled('new_payment_system'):
use_new_payment()
else:
use_old_payment()

После того, как по моим постановкам пару раз положили прод там, где лучше бы этого было не делать, я начал частенько прописывать необходимость рубильника. (Чтобы я не сидел потом, как эта несчастная псина на картинке).

Зачем вообще это все нужно?
🟣Безопасные релизы. Увидели проблему? ➡️ Выключаем тумблер ➡️ Фича не работает, хотя код уже в проде.
🟣Dark Launches. Можно задеплоить код в прод, но не показывать его пользователям (пока не пришло время).
🟣Условный доступ: включить фичу только для внутренних тестировщиков/конкретной группы пользователей.
🟣Для A/B-тестов, но это для PO, наверное, интересно, я за такое вообще не шарю. 🤷 Просто знаю, что так делают.

Какие есть способы дернуть рубильник?
🔴Таблица в БД: плюс в том, что возможно динамическое изменение без перезапуска. Минусы — нужна соответственно инфраструктура (сама БД).
🔴Переменные окружения. Переключение через .env файл достаточно просто реализовать, но из минусов — переключение флага скорее всего потребует перезапуска.
🔴Конфигурационные файлы (JSON, YAML, TOML, .properties) — примерное те же минусы и плюсы, что в случае с переменными окружения.
🔴Специальные сервисы фича-флагов (их, оказывается, много всяких есть): LaunchDarkly, Split, Flagsmith, Unleash, CloudBees Feature Management. Тут и гибкость в настройке, и изменения в режиме реального времени, но с другой стороны зависимость от еще одного сервиса.

Что важно учитывать:
⚠️ Постараться Не забывать убирать флаги после полного внедрения фичи;
⚠️ Постараться Документировать флаги — какие есть, для чего, кто отвечает;
⚠️ Постараться Не превращать систему в спагетти-код из условий.

In conclusion: Фича-флаги — это не просто технический инструмент, это стратегия безопасной поставки изменений.

#SystemAnalysis #FeatureFlags #Разработка #python #IT #businessanalysis
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥21