Код Меркури – Telegram
Код Меркури
2.15K subscribers
3.45K photos
486 videos
2 files
3.59K links
Микромедиа об IT для айтишников-релокантов и удаленщиков по всему миру 🪐

Познакомиться поближе: https://mercdev.com
Download Telegram
И сам пример Jenkins Job описанной на Groovy в ту эпоху:


package jobdsl.build.jobs

import com.kvendingoldo.jdcl.core.Functions

class UdcPreCommit {
static job(dslFactory, jobConfig) {
dslFactory.job(Functions.generateJobName(jobConfig)) {
denoscription(jobConfig.job.denoscription)
label(jobConfig.job.label)
concurrentBuild()
logRotator(jobConfig.job.daysToKeepBuilds, jobConfig.job.maxOfBuildsToKeep)
environmentVariables {
env('GENERATED_VERSION_TYPE', jobConfig.job.generatedVersionType)
overrideBuildParameters(true)
}
wrappers {
colorizeOutput()
timestamps()
preBuildCleanup()
}
scm {
git {
remote {
credentials(jobConfig.job.credentials.github)
github(jobConfig.job.repository, 'ssh')
refspec('+refs/pull/*:refs/remotes/origin/pr/*')
}
branch('${sha1}')
extensions {
wipeOutWorkspace()
submoduleOptions {
recursive()
}
}
}
}
triggers {
githubPullRequest {
cron('*/1 * * * *')
permitAll()
}
}
steps {
gitHubSetCommitStatusBuilder {
statusMessage {
content('building...')
}
}
shell(dslFactory.readFileFromWorkspace('jobdsl/common/bash/emailValidator.sh'))
shell('gcloud docker -a')
shell(dslFactory.readFileFromWorkspace(jobConfig.job.variablesGeneratorScript))
shell(dslFactory.readFileFromWorkspace(jobConfig.job.versionGeneratorScript))
envInjectBuilder {
propertiesFilePath('variables.txt')
propertiesContent('')
}
buildNameUpdater {
fromFile(false)
buildName('${VERSION}')
fromMacro(true)
macroTemplate('${VERSION}')
macroFirst(false)
}
maven {
goals('clean install')
goals('-B')
goals('-C')
goals('-q')
goals(' -Pimage')
goals('-Ddocker.registry.host=gcr.io')
}
}
publishers {
gitHubCommitNotifier {
resultOnFailure('fail')
statusMessage {
content('build is completed')
}
}
}
}
}
}
😱4
Kubernetes уже у всех, верно? 🤔 Кажется, что так.

Иногда разработчики удивляются, когда я не предлагаю K8S для нового проекта. В последнее время у многих сложился майндсет: «Поставил куб — и дальше оно как-нибудь само», вплоть до выписывания TLS сертификатов и автоматического создания DNS-записей.

Ну, в целом, конечно, можно накидать YAML'ов и посмотреть, что будет. Но ни одно коробочное решение (вроде CozeStack, DeckHouse или OpenShift) не сделает всё за вас. Kubernetes — это не волшебная таблетка, а сложный инструмент, который требует глубокого понимания.


🚀 Давайте посмотрим, что вам нужно понимать с технической точки зрения , когда вы онбордите Kubernetes.

🔹 Базовый уровень (уровень сертификации CKAD)
Это минимум, без которого лучше вообще не лезть в Kubernetes:
Управление подами. Как создавать, удалять и масштабировать поды.
Sidecars и init-контейнеры
PVC/PV. Как хранить данные в Kubernetes и не потерять их при пересоздании подов.
Service / Ingress. Как прокинуть трафик из кластера наружу
Helm / Kustomize. Как управлять конфигурациями через темплейты.

🔹 Средний уровень (уровень сертификации CKA)
Что такое SMI/CNI/etc. Как сети работают в Kubernetes и почему это важно.
Траблшутинг кластера. Как читать логи, смотреть события через kubectl get events и находить корень проблемы.
Разные CNI-плагины и их особенности. Calico, Flannel, Cilium — чем они отличаются и какой выбрать.
Архитектура Kubernetes (правда ли, что куб это всего 5 бинарей?). Как работают kubelet, API-сервер, etcd и другие компоненты.
Service Mesh. Зачем он нужен и как выбрать между Istio, Linkerd и другими.
Автоматизация сертификатов. Как использовать cert-manager или встроенные возможности Istio.
Тюнинг системных компонентов. Например, как оптимизировать etcd для высокой нагрузки.
Генерация YAML'ов через kubectl. Как не писать их вручную и не допускать ошибок.
Работа с секретами. Как безопасно их хранить и управлять ими.
Логирование и мониторинг. Настройка Prometheus, Loki, OpenTelemetry в Kubernetes.
GitOps. Внедрение ArgoCD или FluxCD для управления конфигурациями.
kubernetes-the-hard-way. Если вы прошли этот гайд, то уже понимаете, как всё устроено под капотом.

🔹 Высокий уровень (beyond CKA/CKS)
Kubernetes и eBPF. Как они связаны и что можно сделать с помощью eBPF для улучшения производительности и безопасности.
Кастомные контроллеры. Создание CRD (Custom Resource Definitions) и разработка операторов.
Мультикластерные решения. Как управлять несколькими кластерами и синхронизировать их. Как собрать федерацию.
Безопасность. Использование OPA, Kyverno, Falco для защиты кластера.
Производительность. Как понять, что API-сервер или etcd не справляются с нагрузкой, и что с этим делать.
👍1
📌 И напоследок…

Kubernetes — это не просто инструмент, это целая экосистема, которая требует глубокого понимания. Если вы думаете, что можно просто «поставить куб и забыть», то вы сильно ошибаетесь.

В приложении к посту есть картинка от компании Flant (из доклада «Как правильно сделать Kubernetes» Дмитрия Столярова), которая показывает, насколько глубоким является айсберг Kubernetes.


А как вы оцениваете свой уровень владения K8S? Не бесит ли вас, когда кто-то говорит, что умеет с ним работать, но по факту не разбирается дальше создания Deployment? 😅🚀

PS: Как бонус - отличная статья про куб на хабре https://habr.com/ru/companies/h3llo_cloud/articles/902188/
2
"Айсберг K8S технологий"
😭6
🚀 Kubernetes — новый язык для разработки инфраструктуры?
Раньше инфраструктура была просто средой для запуска приложений. Сегодня Kubernetes (K8S) изменил правила игры: теперь инфраструктура — это код, который нужно писать, версионировать и управлять как программным продуктом.

Почему Kubernetes стал де-факто "языком инфраструктуры"?

🔹 Декларативный подход — манифесты YAML описывают желаемое состояние системы, а K8s сам обеспечивает его выполнение. Это как сказать системе: «Хочу, чтобы было вот так» — и она сделает всё за вас.

🔹 Композиция — как код состоит из модулей и функций, так и инфраструктура в Kubernetes собирается из Deployments, Services, Ingress и других объектов. Это как LEGO для взрослых — собирай, что нужно, и не изобретай велосипед.

🔹 Абстракции — Разработчикам больше не нужно заботиться о физических серверах, балансировке и автошкаллировании. Всё это управляется на уровне кластера. Вы просто говорите: «Мне нужно 10 подов» — и Kubernetes делает это (но помните, только в случае managed решения).

🔹 Расширяемость — С помощью Custom Resource Definitions (CRD) и Custom API servers можно создавать собственные объекты и управлять ими как встроенными ресурсами. Это как добавить в язык программирования свои ключевые слова.


Инфраструктурные инженеры → DevOps-разработчики
Если раньше инфраструктура настраивалась вручную или с помощью bash-скриптов, то теперь:

Helm-чарты = пакетные менеджеры

Kustomize = управление конфигурациями без дублирования кода

Operators и CRD = объектно-ориентированное программирование в инфраструктуре

GitOps (ArgoCD, FluxCD) = версионирование и автоматизация развертывания


К чему мы идем?
Мы движемся к тому, чтобы заранее, на понятном языке, декларировать, что мы хотим от системы. Это понимание должно быть одинаково глубоко на уровне DevOps инженеров и разработчиков.


Но почему мы говорим только про K8S?
Terraform и подобные инструменты хороши, но они, в первую очередь, описывают облачные ресурсы, что ближе к инфраструктурным инженерам, чем к разработчикам. Kubernetes, напротив, представляет собой более высокоуровневую абстракцию, которая позволяет сосредоточиться на архитектуре приложения и его управлении, без глубокой привязки к конкретным облачным провайдерам и их ресурсам.


💡 Вывод
Kubernetes — это не просто оркестратор контейнеров, а новый язык разработки инфраструктуры, который требует от инженеров понимания концепций, аналогичных программированию.


А как у вас?
Kubernetes — удобный инструмент или сложный барьер для входа? Используете ли вы GitOps, Operators или другие продвинутые практики? Считаете ли вы, что K8S действительно стал «языком инфраструктуры»?

PS: Если вам интересно послушать про мой опыт разработки операторов, кастомных планировщиков или подготовку к CKA/CKAD, пишите в комментариях 👇 Сделаю отдельный пост с лайфхаками и советами!
🔥3
Давайте немного поговорим о главном холиваре в мире IaC: OpenTofu vs Terraform. Ну и что использовать в 2025 для описания инфраструктуры.

Почему все так сложно? Контекст драмы
- 2023: HashiCorp перевел Terraform на BSL-лицензию, запретив коммерческое использование в конкурентных продуктах. Сообщество взорвалось — так родился OpenTofu (форк Terraform под MPL 2.0).

- 2024: OpenTofu набрал хайп, но… внезапно заблокировал доступ для пользователей из России и удалил российские облака из реестра. Теперь оба инструмента стали проблемными для многих команд и проектов.


👉 Если коротко имеем следующую картину:
Terraform = стабильность, но BSL и зависимость от HashiCorp/IBM.
OpenTofu = open-source, но без российских провайдеров и с политическими ограничениями.

К сожалению, подобное происходит не только с Terraform, и подробнее об этом можно прочитать здесь. Ну а пока мы с вами разберемся, что же выбрать для нового проекта в 2025 году.

🔥 Ключевые различия:

1️⃣ Лицензия и открытость
🔹 OpenTofu — полностью open-source (MPL 2.0), управляется сообществом, решения принимаются коллективно, без полного контроля одной компании.
🔹 Terraform — изначально open-source, но теперь использует BSL, что вводит ограничения на коммерческое использование. Развивается HashiCorp (а теперь и IBM).


2️⃣ Функциональность
🔹 Оба инструмента работают по декларативному принципу: вы описываете желаемое состояние инфраструктуры, а система сама приводит её в нужное состояние.
🔹 OpenTofu уже предлагает дополнительные возможности, например:
- Шифрование state-файлов из коробки
- Ранняя обработка переменных
- Улучшения в планировании изменений
🔹Terraform выигрывает в стабильности, интеграциях и зрелости экосистемы.


3️⃣ Экосистема и сообщество
🔹 Terraform существует дольше (7+ лет развития), у него зрелая экосистема, HashiCorp активно поддерживает экосистему плагинов и Terraform Cloud. Помимо этого, Terraform обладает огромной базой пользователей.
🔹 OpenTofu растёт быстрыми темпами, за ним стоят крупные игроки, но его сообщество пока не такое зрелое и сформированное


4️⃣ Ограничения для российских пользователей
🔹Terraform заблокировал доступ к реестру провайдеров ещё в 2022 году, но не удалял существующие провайдеры.
🔹 OpenTofu полностью заблокировал пользователей из России и удалил российских облачных провайдеров вызвал этим длительную дискуссию в сообществе. На данный момент, отсуствие провайдеров в официальном реестре делает его непригодным для работы с российскими облаками.


В любом случае, для обхода блокировки реества вам в обоих случаях понадобятся зеркала. Для Terraform их существует достаточно много, а вот для OpenTofu пока ни одного. Про настройку зеркалов вы можете прочитать здесь.
👍2
Что же мне выбрать?

Terraform стоит выбрать, если:
Вам нужна зрелая экосистема и стабильность.
Вы не создаёте конкурента Terraform Cloud или другие продукты, которые могут нарушать BSL.
Вам не критично, что код частично закрыт, и вы доверяете HashiCorp/IBM.


OpenTofu подходит, если:
Вам нужен полностью open-source инструмент без ограничений BSL.
Вы видите риски в использовании Terraform и хотите обезопасить себя от частично закрытых лицензий.
Вы не работаете с российскими облачными платформами.
Вам не нужно поддерживать большое количество legacy кода на Terraform


🚀 А стоит ли обновляться с Terraform 1.5.7? Он же все еще работает, и он MPL-2.0
Да, однозначно! В обоих проектах появилось множество новых фич.
Следить за актуальностью возможностей можно здесь 👉 cani.tf


🔍 Вывод:

🔹 OpenTofu
Отличный выбор для новых проектов, где не используются российские облака.
Подходит для тех, кто хочет участвовать в развитии сообщества и продвигать новые фичи.
Рекомендуется, если ваш продукт потенциально конфликтует с лицензией BSL и Terraform Cloud.

🔹 Terraform
Оптимален для типичных DevOps-проектов и CI/CD-инфраструктуры под AWS, GCP, Azure.
Выбор для тех, кому важны стабильность, зрелая экосистема и поддержка HashiCorp.
Подходит, если BSL-лицензия не критична, а доверие к HashiCorp выше благодаря опыту и корпоративному уровню решений.

🚀 Ну а если вам нужно быстро переключаться между версиями Terraform и OpenTofu, попробуйте 👉 tofuutils/tenv


🤔 А что используете вы? Terraform или OpenTofu? Делитесь мнением в комментариях!
👍3
Лучшие инструменты для Terraform и OpenTofu в 2025 году 🚀

Infrastructure-as-Code (IaC) продолжает активно развиваться, а вместе с ним растёт и экосистема инструментов, облегчающих управление инфраструктурой. Многие из них изначально создавались для Terraform, но теперь полностью поддерживают и OpenTofu, что делает их универсальными помощниками для DevOps-инженеров и облачных архитекторов.

Этот пост - подборка самых полезных инструментов, которые сделают вашу работу с IaC быстрее, удобнее и безопаснее.

🛠 Управление версиями

🔹 tenv – лёгкий и быстрый менеджер версий для Terraform, OpenTofu, Terragrunt и Atmos. Поддерживает автоматический парсинг версий из конфигурационных файлов, проверку подписей (cosign, PGP), доступен как Go-пакет, а еще во всех популярных пакетных менеджерах и ОС (включая Windows). В отличие от asdf, не требует зависимостей, работает быстрее и оптимизирован для Terraform/OpenTofu-экосистемы. (🔗 GitHub)


🤖 Автоматизация и генерация IaC
🔹 Aiac – AI-инструмент для генерации Terraform-кода, CI/CD пайплайнов, OPA-политик и других IaC-конфигураций. Поддерживает OpenAI, Amazon Bedrock и Ollama. (🔗 aiac.dev)

🔹 Atmos – мощный фреймворк для структурирования инфраструктуры в Terraform/OpenTofu с YAML-конфигурациями. Упрощает управление модулями и окружениями. (🔗 GitHub)

🔹 Terramate – инструмент для автоматизации IaC-оркестрации, code generation и работы со стэками. (🔗 GitHub)


🏗 Улучшение работы с Terraform/OpenTofu

🔹 Terragrunt – обёртка над Terraform, сокращающая дублирование кода и упрощающая управление состоянием, зависимостями и окружениями. (🔗 terragrunt.io)

🔹 Atlantis – автоматизация Terraform в pull request'ах. Идеален для командной работы и интеграции с CI/CD. (🔗 runatlantis.io)

🔹 Burrito – Kubernetes-оператор для автоматизации Terraform, аналог ArgoCD для IaC. (🔗 GitHub)


🔍 Безопасность и анализ кода

🔹 Checkov – мощный инструмент статического анализа IaC, выявляющий уязвимости и ошибки конфигурации в Terraform/OpenTofu, Kubernetes, Docker и других платформах. (🔗 GitHub)

🔹 Trivy – универсальный сканер, находящий уязвимости в контейнерах, IaC, артефактах и облачных сервисах. (🔗 trivy.dev)

🔹 TFLint – продвинутый линтер для Terraform, предотвращающий ошибки в коде и проверяющий соответствие best practices. (🔗 GitHub)


💰 Контроль затрат и управление ресурсами

🔹 Infracost – оценка стоимости облачных ресурсов в Terraform/OpenTofu до их развертывания. Интеграция с CI/CD и GitHub PR. (🔗 GitHub)

🔹 Terratag – автоматическое добавление тегов в Terraform/OpenTofu-код, обеспечивающее лучшее управление ресурсами в AWS, GCP и Azure. (🔗 GitHub)


⚙️ Управление состоянием и миграции
🔹 Tfmigrate – инструмент для безопасных миграций Terraform/OpenTofu state с возможностью dry-run. (🔗 GitHub)
🔹 Tfmv – CLI-инструмент для автоматического переименования ресурсов Terraform/OpenTofu без потери состояния. (🔗 GitHub)


А какие инструменты используете вы? Делитесь опытом в комментариях! 🚀
👍41
🚀 *Ops — в чём разница?
Современный IT-мир давно вышел за рамки простой разработки. Сегодня инженеры отвечают не только за код, но и за его тестирование, развертывание, безопасность, мониторинг и оптимизацию затрат. Пока все привыкали к DevOps, новые «ops» начали появляться повсюду, словно грибы после дождя. Давайте разберёмся, какие бывают «ops»-методологии и чем они отличаются между собой.


DevOps (Development + Operations)
Что это?
DevOps объединяет процессы непрерывной разработки, интеграции, тестирования, развертывания и мониторинга, способствуя инновациям, гибкости и масштабируемости.

Ключевые моменты:
🎯 Цель: ускорение релизов через тесное взаимодействие разработчиков и администраторов.
🛠 Инструменты: CI/CD (GitHub Actions, GitLab CI, Jenkins), Kubernetes, Terraform, Ansible, Go.
💡 Идея: Автоматизация и инфраструктура как код (IaC) позволяют обеспечивать быстрые и надёжные обновления без даунтайма.



DevSecOps (Development + Security + Operations)
Что это?
DevSecOps — это DevOps с интегрированной безопасностью. В отличие от традиционного подхода, где безопасность добавляется в конце разработки, здесь она встроена в каждый этап разработки, превращая её в общую ответственность команды.

Ключевые моменты:
🎯 Цель: встроить безопасность на всех этапах CI/CD процесса.
🛠 Инструменты: SAST/DAST (SonarQube, Snyk, OWASP ZAP), системы управления секретами (Vault, Sealed Secrets).
💡 Идея: Безопасность — это не отдельная проверка перед релизом, а часть всего процесса разработки.



MLOps (Machine Learning + Operations)
Что это?
MLOps — это DevOps для машинного обучения, обеспечивающий автоматизированное развертывание и управление ML-моделями в продакшене.

Ключевые моменты:
🎯 Цель: обеспечить непрерывную интеграцию, тестирование, развертывание и мониторинг ML-моделей.
🛠 Инструменты: MLflow, Kubeflow, TensorFlow Extended (TFX), Apache Airflow.
💡 Идея: Автоматизация и контроль качества жизненного цикла моделей критичны для успешного внедрения. ML — это не только тренировка модели, но и её продакшен.
SecOps (Security Operations)
Что это?
SecOps интегрирует безопасность в повседневные IT-операции, снижая риски кибератак.

Ключевые моменты:
🎯 Цель: автоматизировать критически важные задачи по безопасности и быстро реагировать на угрозы.
💡 Идея: Безопасность должна быть встроенной в процессы



SaaSOps (SaaS Operations)
Что это?
SaaSOps занимается управлением и оптимизацией облачных приложений, предоставляемых по модели Software-as-a-Service.

Ключевые моменты:
🎯 Цель: улучшить управление доступом, обеспечить безопасность и повысить эффективность поддержки SaaS-приложений.
💡 Идея: Автоматизация процессов управления SaaS помогает повысить удовлетворённость пользователей и эффективность команд.
1
SRE (Site Reliability Engineering)
Что это?
SRE фокусируется на обеспечении стабильности и отказоустойчивости сервисов, объединяя инженерные подходы разработки и эксплуатации. SRE это в первую очередь про продакшен и мониторинг.

Ключевые моменты:
🎯 Цель: минимизация сбоев, повышение доступности и эффективное управление инцидентами.
🛠 Инструменты: Мониторинг (Prometheus, Grafana), хаос-тестирование (Chaos Monkey), метрики SLA/SLO/SLI.
💡 Идея: SRE — это DevOps с акцентом на надежность и управляемость продакшен систем.



GitOps
Что это?
GitOps - методология, котоаря использует Git как единственный источник правды для управления инфраструктурой.

Ключевые моменты:
🎯 Цель: стандартизировать процессы развертывания и обеспечить прозрачность изменений.
🛠 Инструменты: ArgoCD, Flux, Jenkins X
💡 Идея: Версионный контроль помогает быстро откатывать изменения и повышает безопасность обновлений.



AIOps (Artificial Intelligence for IT Operations)
Что это?
AIOps применяет машинное обучение и аналитику больших данных для автоматизации мониторинга и управления инцидентами.

Ключевые моменты:
🎯 Цель: автоматическое обнаружение и устранение проблем в реальном времени. Поиск аномалий.
💡Идея: AI помогает командам быстрее реагировать на сбои и снижать нагрузку на инженеров.



NoOps (No Operations)
Что это?
NoOps — концепция, при которой традиционные операционные команды становятся ненужными благодаря полной автоматизации в облаке.

Ключевые моменты:
🎯 Цель:
максимальная автоматизация инфраструктуры. Минимизация операционных затрат.
🕒 Когда используется: в облачных средах (AWS Lambda, Google Cloud Run, FaaS)
💡Идея: Если всё управляется облаком, зачем нужны Ops-инженеры?



ChatOps
Что это?
ChatOps позволяет управлять процессами через чат-платформы, интегрируя DevOps-инструменты в мессенджеры.

Ключевые моменты:
🎯 Цель: автоматизация команд и управление через Slack, Microsoft Teams, Discord.
💡Идея: Рабочие процессы и мониторинг в одном месте делают командную работу эффективнее.



FinOps (Finance + Operations)
Что это?
FinOps помогает компаниям управлять облачными расходами, объединяя финансовые и инженерные команды.

Ключевые моменты:
🏗Фазы: Inform (осведомлённость и распределение затрат), Optimize (оптимизация расходов) и Operate (управление ROI).
💡 Идея: Совместное управление бюджетом и ресурсами повышает экономическую эффективность и прозрачность расходов.



DataOps (Data Operations)
Что это?
DataOps автоматизирует обработку данных, улучшая их качество и ускоряя аналитические процессы.

Ключевые моменты:
🎯 Цель: наладить работу между дата-инженерами и командами разработки.
💡 Идея: Автоматизация процессов обработки данных позволяет устранить повторяющиеся задачи и повысить точность результатов.



ContentOps (Content Operations)
Что это?
ContentOps отвечает за весь жизненный цикл цифрового контента: от создания и редактирования до публикации и архивирования.

Ключевые моменты:
🎯 Цель: обеспечить координацию между отделами и своевременность публикаций
💡 Идея: Автоматизация контент-процессов помогает быстрее создавать и публиковать материалы без дублирования и ошибок



ITOps (IT Operations)
Что это?
ITOps охватывает классические IT-операции, включая поддержку пользователей и администрирование инфраструктуры.

Ключевые моменты:
🎯 Цель: бесперебойная работа IT-сервисов.
💡 Идея: Классическое администрирование IT-инфраструктуры.
1👍1
Вывод

IT-мир развивается, и «ops»-методологии адаптируются к новым вызовам:

DevOps, NoOps, MLOps, DevSecOps, SRE ускоряют разработку и обеспечивают стабильность.

FinOps, DataOps, GitOps, AIOps, ContentOps, ChatOps, ITOps, SecOps, SaaSOps помогают оптимизировать процессы, затраты и безопасность.

Вопрос не в том, какой подход выбрать, а как их комбинировать для максимальной эффективности. А какие «ops» знаете вы? 🤔👇

PS: Отличный доклад про это с DevOpsConf 2021: https://www.youtube.com/watch?v=Am84iPcVZlc
1
📜 Software Architecture Document: Что это такое и почему это необходимость для энтерпрайза и зло для стартапа

В IT архитектурная документация (Software Architecture Document, SAD) играет важную роль. Но в зависимости от контекста она может как помогать, так и тормозить процесс.

🔹 Что такое SAD?
SAD (грустная дока — это не только шутка, но и правда жизни) — это Software Architecture Document, документ, в котором описывается high-level архитектура системы. Обычно он разбит на разделы, каждый из которых охватывает одно ключевое архитектурное решение, связывающее бизнес-требования и техническую реализацию.

Альтернативные подходы к этим решениям часто выносятся в отдельный документ. В итоге SAD становится своего рода blueprint’ом проекта, с которого начинается имплементация.

Но всё не так радужно. Иногда такие документы раздуваются до 200–300 страниц, особенно если включают в себя C4-диаграммы, data flow, и прочие артефакты. Тут я могу только посоветовать учиться читать такие документы, а если на вашем проекте их нет — предложить архитектору или лиду заняться их написанием.
2
🔹 Почему энтерпрайзу нужен SAD?

Сложные системы — нужна прозрачность
В корпоративных (enterprise) системах много команд, легаси-код, сложные интеграции. Без архитектурной документации разработчики просто не поймут, как всё работает.

Безопасность и соответствие требованиям
Для банков, финтеха и госкомпаний документирование архитектуры необходимо для аудитов и сертификаций (SOC2, ISO 27001, PCI DSS, ГОСТ).

Контроль и масштабируемость
В больших компаниях архитектурные решения принимаются годами. Документация фиксирует прошлые решения, чтобы не наступать на те же грабли.



🔹 Почему стартапам SAD вреден?

Медленный процесс
На стартапах нельзя тратить время на бумажную работу. На этапе разработки MVP важнее быстро проверять гипотезы и выпускать продукт. Пока стартап пишет архитектуру, конкуренты уже пивотят свой продукт.

Архитектура меняется слишком быстро
В стартапах архитектура и код переписываются каждые несколько месяцев. Писать документацию в таких условиях — значит тратить время на создание заранее устаревающего артефакта.

Фокус должен быть на продукте
Вместо того чтобы писать длинные SAD, стартапу лучше фиксировать архитектурные решения в коротких ADR (Architecture Decision Records). Это более гибкий и быстрый формат. Многие ребята это делают прямо в Notion без особого формализма.



🔹 А что насчёт Open Source проектов?

Для Open Source проектов нет строгих стандартов, аналогичных SAD. Конечно, в больших проектах есть roadmap и подробное обсуждения фич, но общего документа, как правило, нет. Однако есть похожий формат — EP (Enhancement Proposal). EP - подробное описание одной фичи, часто схожее с SAD по духу. Хорошим примером являются KEP (Kubernetes Enhancement Proposals), которые могут быть полезными для изучения.



🔹 Что использую я?
Когда стартует новый проект или появляется большая фича, я предпочитаю писать документы в духе SAD — пусть и без фанатизма, но с описанием ключевых решений и архитектурных идей.

А вот для небольших проектов или на этапе раннего старта мне вполне хватает ADR-ов, зафиксированных в вики. Главное — чтобы команда всё это обсудила и была на одной волне.



А у вас на проекте есть SAD, или хватает быстрых записей и ADR? 🤔👇
👍2🔥1
Расскажу, как я настраиваю свой ноутбук

В течение последних 6-7 лет я использую только макбуки в качестве личного девайса, но этот подход, на мой взгляд, вполне работает и на Linux/Windows.

Так как же выглядит настройка моего компьютера?

У меня есть приватный репозиторий на GitHub для бустрапа окружения. Я просто закидываю его на новый ноутбук в виде Zip-архива, а затем запускаю скрипт init.sh. Этот скрипт делится на несколько частей:

1️⃣Установка и настройка brew / nix

2️⃣Установка тяжеловесного софта — Java, Docker, Xcode и т.д.

3️⃣Установка и конфигурация zsh / oh-my-zsh

4️⃣Настройка терминала — tmux, alacritty, мои персональные алиасы

5️⃣Установка и настройка рядового софта — от Terraform до Chrome

6️⃣Настройка Git / VSCode / IntelliJ / SSH / Maven и создание привычных папок на компьютере

7️⃣ Настройка внешнего вида macOS через defaults

// На скриншоте - layout моего репозитория
🔥4
Какие ещё “tips & tricks” я использую в своём сетапе?
- Храню все конфигурации в репозитории и линкую файлы на файловую систему. Так я не забываю обновлять репозиторий и не теряю новые конфигурации.

- Стараюсь гибко настраивать консольные тулы, такие как Git, AWS, Kubernetes и тд. Если вам интересно, могу поделиться классными алиасами или настройками в комментариях.

- Каждый раз, когда я запускаю свои скрипты, я замеряю, сколько мануальных действий мне нужно выполнить, и стараюсь сократить их количество. Сейчас это примерно три действия на весь сетап ноутбука. Естественно, это количество действий я пытаюсь сокращать.
- Периодически читаю чужие репозитории с "dotfiles" на GitHub, чтобы подрезать что-то полезное.

🔹 Вывод:
Автоматизировать настройку ноутбука — очень полезно. Вместо 5–6 часов ручной рутины вы переносите все привычные конфиги, алиасы и настройки буквально за пару минут (и один кофе-брейк).


📌А как вы подходите к автоматизации? Делитесь в комментариях своими скриптами, настройками и лайфхаками — будет интересно сравнить подходы.
💻 Почему стоит разделять работу и личную жизнь на два ноутбука?

Совмещать работу и личные дела на одном устройстве кажется удобным. Но на практике это создаёт массу проблем — частенько даже там, где вы их не видите.


1️⃣Безопасность данных
Рабочий ноутбук под корпоративными политиками: VPN, шифрование, мониторинг, ограниченный доступ к файлам. Загружая туда личные данные, вы рискуете их случайно потерять, нарушить корпоративные правила или даже попасть под санкции работодателя. А если вас уволят, то все личные файлы останутся на корпоративном ноутбуке. Аналогично и с личными компьютеров - нельзя мешать среду где вы скидываете друзьям котиков, и где у вас есть доступ к продакшен базе данных клиента.


2️⃣Баланс между работой и отдыхом
Когда всё в одном месте, границы стираются: сложно полноценно отдыхать, если в браузере открыта Jira, а уведомления Slack всплывают даже в выходные. И наоборот — личные дела могут отвлекать во время работы. Представьте, что вы бронируете себе дорогие авиабилеты, а в этот момент приходит срочный (как вам кажется в моменте) алерт из продакшена. Что будете делать?


3️⃣Конфликты софта и настроек
Корпоративный VPN может ломать доступ к вашим любимым сервисам, а политика безопасности может блокировать запуск нужных программ. Рабочие версии инструментов часто не совпадают с теми, что вам удобны лично. Git, ключи SSH, редакторы, контейнеры — всё может быть настроено по-разному и в итоге начнёт мешать друг другу. Как банальный пример - врядли вы захотите использовать корпоративную сборку VSCode для своих проектов.


4️⃣ Производительность и ресурсы
Рабочие процессы требуют стабильности. Личные эксперименты с софтом, обновления, кастомные настройки, игры и случайные загрузки могут вызвать неожиданные сбои, тормоза или даже полный отказ системы. Неудачный апдейт — и вы остаетесь без рабочего инструмента в критический момент. Что скажете на утреннем синке после такого? :)


5️⃣Чистота и порядок
Раздельные устройства = минимум хаоса. На рабочем ноуте — только рабочие файлы, на личном — всё остальное. Никакого Telegram на рабочем устройстве, никакого Slack на личном — и так со всем. Таким образом будет легче держать фокус и не путать важные данные.


6️⃣Данные на рабочем ноутбуке - собственность компании
Всё, что создаётся на рабочем ноутбуке, юридически принадлежит компании. Если вы делаете личные проекты на корпоративном устройстве, могут возникнуть проблемы: в некоторых случаях работодатель может заявить права на ваш код, файлы или наработки. Особенно это касается программного кода, дизайнов, исследовательских данных и других интеллектуальных активов.


7️⃣Конфиденциальность и защита данных
Если ты используешь личный ноут для работы, особенно с конфиденциальной информацией компании (персональные данные клиентов, финансы, внутренние документы), ты становишься уязвимым с точки зрения законодательства, например:
🔹 Закон о персональных данных (GDPR, 152-ФЗ и т.д.) требует защиты данных от утечек. Если данные слились с твоего личного ноутбука, ты можешь попасть под раздачу.
🔹Работодатель обязан обеспечивать безопасность данных, и для этого обычно используют управляемые устройства (MDM, шифрование, VPN и т.д.). На личном ноуте это сложно реализовать корректно.


💡 Вывод
Разделение ноутбуков помогает эффективно работать, безопасно хранить данные и лучше отдыхать. Если хотите минимизировать стрессы и технические проблемы — лучше сразу выбрать этот подход.


📌 А как у вас: один ноутбук на всё или чёткое разделение рабочих и личных дел? 🤔
2👍1