👁Учим алгоритмы и структуры данных на C++ —28 лекций
Нереально крутой преподаватель Тимофей Хирьянов уже прославился на русском Ютубе своими лекциями по Python. В них он рассказывал про основы языка, алгоритмы и структуры данных.
Так вот, через год после того курса он выпустил новый — по C++. В целом, содержание там похожее, но в качестве языка был выбран более низкоуровневый.
Особенно круто в его новом курсе то, что он в начале сравнивает синтаксис Python и C++: это поможет вам, если вы плохо знакомы со вторым языком.
Перейти к просмотру
#программирование
Мой первый PR в опенсорс вмержен в Grafana repo 🎉
Вот он (прошел review и вмержен)
Выше в посте про конференцию я упомянул GCX - это CLI (command line interface) новая тула от Grafana для работы с дашбордами, алертами, метриками и т.д.
И по умолчанию в этой туле для авторизации можно было использовать только токен (service account token) или OAuth.
Проблема:
во многих компаниях Grafana стоит за Teleport или другим прокси, который использует клиентские сертификаты (mTLS) вместо токенов.
А токен создать нельзя - нет Admin прав.
Что я добавил:
Теперь можно указать путь к сертификату и ключу:
gcx config set contexts.prod.grafana.tls.cert-file /path/to/cert.pem
gcx config set contexts.prod.grafana.tls.key-file /path/to/key.pem
Или через переменные окружения (для CI/CD):
export GRAFANA_TLS_CERT_FILE=/path/to/cert.pem
export GRAFANA_TLS_KEY_FILE=/path/to/key.pem
И gcx авторизуется через mTLS - без токена, без OAuth, просто по сертификатам.
Теперь конечно же при любом удобном случае можно рассказывать что я contributor в опенсорс, конкретно в Grafana.
Но помимо этого, прикольное чувство, ведь теперь возможно другие пользователи/разработчики будут использовать этот тип авторизации в Grafana, то что добавил я)
ps.
Это совсем другое чувство, не то когда твоими фичами пользуются миллионы пользователей на проде (это уже мне знакомо). А это чувство опенсорс контрибуторское какое то новое 😀
#программирование
Опять ускоряем проект, на этот раз сборку еще в 3 раза
Тут я писал как я ускорял проект в "100 раз")
А тут как ускорял сборку проекта
Оказалось я изобретал велосипед
чтобы деплоить свое приложение (которое у меня на Next.js), изначально выбрал AWS Amplify, это стоило мне примерно 10 евро в месяц, чтобы хостить его там и деплоить автоматически при пуше комита в github.
Я знал что Next.js разработан Vercel, и думал в будущем попробовать перейти на него, может будет быстрее, наконец-то нашел время перенести и настроить.
Результат сборки теперь
с 6 минут 30 секунд -> 2 минуты 5 секунд
Экономится 4 минуты!
во время разработки не все локально можно протестировать поэтому иногда я ждал просто 6 минут чтобы протестировать фикс/фичу)) а теперь 2 минуты это вообще не заметно, + на Vercel встроенная Observability с Аналитикой, очень удобно
+ не надо прогревать лямбды, проект всегда доступен и очень быстро все открывается (реально заметнее быстрее работать стало все приложение)
и я пока не уперся в бесплатные лимиты, потом будет 20-30 евро в месяц
В итоге я переехал буквально за пару часов из AWS Amplify в Vercel. Но только фронтенд, бекенд и все остальное останется в AWS (Amazon Web Services).
#программирование | расписание постов
@andreyposnov
Традициональный вайбкодинг - все. Убийцы Cursor, их несколько и я их попробовал
Хорошо звучит)) да он уже традицональный и если вы не успели повайбкодить, пропустили эту фазу ничего страшного, мы уже входим в другую фазу, которая более правильная с моей точки зрения
—-
Cursor - это форк VS Code (IDE от Microsoft), очень удобный со всеми штуками для AI вайб кодинга, упрощает работу программистов
—-
Форк - это ответвление от основной версии, существует IDE (программа где программисты пишут код), называется VS Code, в ней есть уже Copilot (AI от Майкрософот, преимущественно на моделях OpenAI типа gpt4.x), но он не такой удобный как удалось сделать Cursor.
Последний год Cursor был “лидером рынка”
Но пока шла конкуренция между Meta, OpenAI, Google, про Амазон как то подзабыли в этой гонке, а он вот выдал.
Периодически еще компании из Китая выстреливают опенсорсными LLM монстрами, ниже будет про это
——
Топ 3 "убийц курсора"
——
1️⃣Kilo Code
Не отдельная IDE, разработана энтузиастами, расширение для VS Code (есть несколько режимов),
Architect - запланировать что будет сделано перед написанием кода
Debug - для дебага
Code - кодинг
Orchestrator - разбить большую задачу на несколько
Под капотом
Cline - собственно Core который позволяет работать в разных модах и запускать MCP
Roo code - был форком Cline но ушел в агенты
Continue - делает автокомплит и другие штучки
Context7 - документация для всего
OpenRouter - универсальный шлюз для работы со всеми LLM, единый API ключ по которому подклчючаешься ко всем и платным и бесплатным (OpenAI, Claude, Gemini, LLaMA)
недавно новая китайская Kimi K2 (чтобы ее установить надо повозится), а так с OpenRouter практически сразу стала доступна, она кодит типа на уровне Claude Sonnet 4, но намного дешевле, я написал типа потому что проверил, и да близко но не Claude Sonnet 4
——
2️⃣Windsurf
Еще один форк VS Code, ходили слух что их купят OpenAI за 3 млдр, но в итоге 16 июля закончилась это неопределенность и их официально купила компания Cognition.
Windsurft в целом умеет все описанное выше, только у них еще есть своя LLM которая называется SWE (Software Engineer) но кодит она пока хуже Cluade, но зато лучше Devops штуки делает.
Пока скучноват из убийц Курсора, но подает надежды
——
3️⃣Kiro🔥
Новая IDE от Amazon, которая вышла 14 июля (свежак)
На деле очередной форк VS Code
Почему сейчас?
Я пользуюсь Cursor последнее время практический каждый день, это очень удобный инструмент, 20 евро в месяц стоило удовольствие, мы были почти лучшие друзья
и тут в июнь-июль он начал чарджить 20+20+20 20+20 евро
я такой че началось-то?
Оказалось Cursor сменил в начале июня свою ценовую политику, ничего плохого в этом нет, действительно тул крутой и стоит больше чем 20 евро в месяц, но об этом надо было предупредить а не чарджить так
Я не один кто не доволен этим, много людей по миру подняли шум, что так не делается и вообще Cursor плохие,
😂и тут Амазон такой… ааа кстати! мы IDE тут делали думали когда выпустить, думаем что пора сейчас
и выкатили, там пока все бесплатно, Claude и тд, скоро тоже начнут чарджить) но пока пытаются захватить аудиторию от Cursor.
Основная идея Kiro, действовать по спекам - сначала придумываем -> потом кодим, как кстати и надо)
пока сыровато отваливается постоянно что-то, поэтому бесплатно
—-
👋Как видно многие приходят от вайбкодинга, к другому типу (AI) кодинга, который условно пока называют Spec Driven Development
Это очень крутой подход, сначала ты с AI создаешь requirements, проектируешь систему по требованиям, и создаешь задачи, то есть такая имитация Software Development Lifecycle
В IDE от Amazon это реализовано классно, в kilo code чуть хуже, остальные к этому придут 100%, а Вайбкодинг станет больше такое творческое когда не знаешь, что хочешь создать/поэкспереминтировать и тд
Правда все еще пропущен один этап из SDLC - Testing, но об этом я сделаю отдельный пост сегодня
В общем Киро, пришел на рынок и такой але! вы забыли как делать софт, и кажется что это очень во время)
#программирование | расписание постов
@andreyposnov
Ускоряем проект в X100 раз или как держать веб сервис тепленьким
Хотел бы написать что Amazon мне не плотит! Но именно сегодня он мне заплатил, точнее вернул деньги за мои эксперименты, с кубернетес и тд которые я описывал тут, после того как я увидел счет за ЕС2 вернулся назад на лямбды и lightsail, я им написал с просьбой понять и простить
Вот тут я писал как пробовал свой serverless бекенд переписывать на Java, Go, Rust, в итоге остался на python и node.js (если у вас огрессия и зубы скрипят когда видите что сравнивают яблоки с помидорами, то добавлю контекста, сравниваются рантаймы (среды выполнения) а не языки, просто в python стандартный рантайм называется CPython, так как он написан на C и кратко пишут одноименно Pyhon, а если огресия на огресию, то это не опечатка а мем)
Так вот, прежде чем я заметил что после холодного старта в 2 секунды Java, на вторые и далее разы отдавал результат намного быстрее в зависимости от задачи 100-500мс
Еще я заметил что иногда мой проект открывался 10 секунд, столько дождется конечно тот кто очень хочет, но это не дело
Оказалось у AWS Amplify под капотом тоже лямбды которые засыпают
Выход для фронтенда, это настроить healthcheck любым способом, один из способов в AWS Route53, где настраиваются домены и тд, можно настр healthcheck кажды 30секунд вашего сайта, в течение месяца, если 3 проверки подряд fail, можно настроить алерт (уведомление), что сайту плохо, стоит это 0.50€ в месяц
Для веб сервисов (лямбд) если их много, это будет накладно, в этом случае можно написать своего робота неСпать, положить его на vps, например в AWS Lightsail или еще где, и он будет ходить пр всем сервисам дергать /health ендпоинт чтобы тот незасыпал
Да, хорошо сделать каждому вебсервису ендпоинт /tiKakDrujok или /health /healthCheck /health-check который просто будет отдавать ответ 200 «я в порядке»
Таким образом лямбды всегда будут «прогреты», и ваш проект ускорить в N раз 🤓
#программирование | @andreyposnov
Подключил Typescript Go
И действительно проверка типов стала 1.6 секунд, вместо 4 секунд, в 2.4 раза быстрее
Вот тут новость пост о том что Microsoft выпустил Typescript на Go
Это конечно классно, но не сильно влияет пока на общую сборку
1️⃣Но следующий этап это генерация из .ts в .js, сейчас в моем проекте это делает SWC (Speedy Web Compiler) который встроен в Next.js, он написан на Rust, и делает это быстрее, чем Babel который работает на Node.js, а будет еще быстрее с Go, но пока непонятно когда выйдет
Для меня это еще уменьшит сборку секунд на 20 в будущем
2️⃣Я начал смотреть как еще можно ускорить, оказалось по умолчанию:
В prebuild запускался tsc и eslint
А потом ещё раз они же внутри next build (по умолчанию)
Убрать один раз убрало еще секунд 20
3️⃣Далее, я начал смотреть библиотеки иконок, я как то не задумывался сколько они занимают, оказалось тоже тратится значительное время на них, убрал их заменил на эмоджи и размер билда уменьшил мегабайт на 60 и сборку еще секунд на 15 ускорил
В итоге локальный билд теперь собирается вместо 60 секунд - 23 секунды,
👉в 3 раза быстрее чем было, я думаю если еще Sentry выпилить и найти что то легковесное будет еще быстрее
Вот так вот я начал с теста нативного порта Typescript на Go, увидел всего профит 3 секунды, остался недоволен и начал искать дальше способы оптимизации, оказалось их и так не мало
#программирование | @andreyposnov
Стало хуже, переписал на Go/Rust/Java свои лямбды (AWS Lambda)
Описание смысла мема с картинки: обычно первые квесты/уровни в играх простые, и идет сравнение с языком С++, где даже в самом простом можно сделать ошибку и не сразу понятно почему не работает, Rust мне напомнил С++, это как на первом уровне в играх можно было бы сразу погибнуть
вот тут начало , я хотел посмотреть что если свои лямбда переписать на языки с которыми я еще не работал, тем более что с ai это можно сделать очень быстро
и вот что вышло
если вы вдруг не знаете что такое AWS Lambda
то по сути это где лежит ваш бекенд, файлов может быть много разных, и разного назначения,
от сходить в базу дернуть что-то и вернуть в json формате, до запустить мини браузер и что то им поделать типа тестирования, очень удобно, называется такое serverless, но есть ограничения которые я описывал в начале по ссылке выше
у меня было все на Python и Node.js я попробовал посмотреть что будет если перенести на Go/Rust/Java
👉и СТАЛО ХУЖЕ
Дело в том что у меня в основном функциональность если прям упростить упростить, это дергать разную подготовленную информацию из баз и отдавать в json, иногда сходить на разные API, разного назначения,
👉технические это выглядит так
Для Node.js (и для Python)
[Запрос от пользователя] -> [Lambda запускается] -> [Node.js/Python runtime уже готов] -> [Загружается handler (код)] -> [Handler исполняется] -> [Ответ от Lambda]
И занимает это 100-300мс (почти моментально)
А вот для Go это уже выглядит так
[Запрос от пользователя] -> [Lambda запускается] -> [Создаётся новая среда] -> [Загружается скомпилированный Go-бинарник] -> [Handler исполняется] -> [Ответ от Lambda]
И занимает это 300-500мс, все еще быстро но когда это было почти моментально это более заметно
Но вот для Java это вот так
[Запрос от пользователя] -> [Lambda запускается] -> [Создаётся новая среда] -> [Загружается Java Runtime (JVM)] -> [Загружается и инициализируется приложение (например, Spring Boot)] -> [Handler исполняется] -> [Ответ от Lambda]
И занимает это…. до 2 секунд! а это уже сильно “бросается в глаза”
—
👉Дело в том что после исполнения, и простоя больше 15 минут, лямбда засыпает, и чтобы стартануть опять, это занимает время, для более-менее нагруженных проектов, наверное такие старты не сильно заметны так как постоянно пользуется, а когда у меня 2-3 пользователя в день, то это заметно
Ну на самом деле я прост оне умел их готовить, правильная схема была бы такая.
Гибрид
[Запрос от пользователя] -> [Lambda на Python/Node.js] -> [Запрос на сервер типа vps/lightsail/ec2 где сервис постоянно запущенный на одном из компилируемых языков Go/Rust/Java/.Net] -> [Код исполняется] -> [Ответ в лямбду] -> [Ответ от Lambda]
В таком случае максимальный профит, холодный старт от Python/Node.js и быстрое выполнение кода типа: запрос к бд, обработка (json,map и тд), сериализация в Райнтаме компилируемых языков Go/Rust/Java/.Net, которые уже постоянно живут (подняты) и ожидают запросов.
Java мне показался довольно громоздким но надежным, в том плане что прям подробно надо написать что запрашиваешь, что ожидаешь и тд
Rust постоянно что-то хочет во время билда, чем то напоминает C++ который не прощает ошибки, было много это самое, я бы сказал не для новичков, надо понимать - зачем
а вот Go мне понравился, мне чем то напомнил Swift, в том плане, что сахарок есть и такой он как бы весь понятный, баланс простоты и производительности, думаю останавлюсь на нем для своих сервисов, для схемы
Холодный старт на Python/Nodejs -> запрос в сервис на Go
Всем := 🙌
А для холодного старта какой лучше выбрать?
👍 - Python
❤️ - Node.js (Typescript)
🔥 - Не знаю
#программирование | @andreyposnov
AWS и Datadog*
*это облачная платформа для мониторинга и наблюдения за инфраструктурой, приложениями и сервисами. В Amazon Web Services есть встроенные инструменты, но они сложные, неповоротливые, и не всегда понятные без обучения/долгого вникания.
У меня на работе тоже будут скоро использовать Datadog, поэтому для своего проекта я тоже решил поставить и полазить что там пораньше, к рабочему пока нет доступа.
Зарегался, стал смотреть что там есть, смотрю
👉О! AWS Cloud Cost Management,
думаю, ого прикольно, это мне поможет оптимизировать расходы для моего облака AWS, а то уже больше 50€ в месяц
Подключаю, там настройка интеграция с облаком полуавтоматом, можно подключить Google Cloud, Microsoft Azure и AWS, начал настраивать, че то не хочет работать, думаю ладно с несколько кликов не завелось потом разберусь
Смотрю на след день мое облако растет, в цене,
я думаю блин надо разобраться скорее с Datadog, чтобы узнать че там такое ест, через пару дней вернулся к вопросу, настроил, оказывается в первый раз не тот формат отчета подключил, и он его не видел, подключил верный, но надо ждать 24 часа пока сгенерится, ну ладно
Захожу сегодня в AWS а там уже 80€, что совсем ненормально, я думаю уже ладно отключу все это Кубернетесное, просто на лямдах продержусь до первых платных клиентов)
Захожу в Datadog, он говорит все наладил подключение жди еще сутки, пока обработаем, я думаю блин уже интересно
Обращусь ка я к великому и могучему Чату Хэ Пэ Тэ к модели о3, скидываю ему отчеты и говорю разберись пожалуйста почему растет цена облака
😬Воздуха набрали?
Цена облака выросла из за подключения Datadog!
Он за каким-то хером фигом включил мне все зоны (на фото видно), а у меня был только Париж, и давай логи опрашивать вертеть мое облачку, такое опрашивание мне стоило по 7€ в день 🥲
Короче, вот так вот без опыта с облаками играться)
я вот подумал хорошо что я это теперь знаю, на своем небольшом проекте
в крайнем случае можно написать в AWS простите извините. Я был на сессии с AWS тренером из Лосанжелоса и спросил его если не туда кликну и стотыщ спишут, он меня уверил что для individual, кто ошибся скорее всего отменят чек и не надо платить, а вот бизнесу скажут плати,
залетел бы в aws на текущей работе, или на новой, потыкал бы там на свисьмисот тыщ и аль-ля лю-лю
Вот так вот я Cost Management в Датадог попользовался 😅
еще про проект
AI Пишет неплохую документацию и Readme
Как хранить секреты?
Ansible. Настройка серверов (в добавок к Terraform)
Terraform и другие ДевОпс штучки
#программирование | @andreyposnov
AI Пишет неплохую документацию и Readme
В моем проекте у меня помимо описанных выше штук
есть 12 лямбда функций, они у меня написаны на TypeScript (JavaScript) и Python, после моих экспериментов с EC2 и Kubernetes, Lightsail я вижу огромную разницу в цене при serverless архитектуре.
Условно за свои лямбды (AWS Lambda) функции я плачу 2 евро в месяц, а за EC2 инстансы 50 евро в месяц.
Можно было бы все сделать на лямбдах, но у нее есть ограничения
👉Максимальное время исполнения 15 минут (то есть долгие задачи не смогут выполняться)
👉Максимальный размер кода в архиве 50mb (дело в том что все зависимости должны быть установлены в этом архиве тоже типа папка node_modules), но можно такими штуками как layers увеличивать до 250mb, у меня например так в одной из функций подключен headless chromium
👉Холодный старт (200-1000мс)
Ограничение памяти 10ГБ
Поддерживаемые рантаймы .NET 8 C# , Java 21, Node.js 22, Python 3.13, Ruby 3.4, Go, Rust, C++
Короче я решил переписать свои лямбды на Go и Rust, так как никогда с ними не имел дела, и охото посмотреть что там)
Но столкнулся с тем, что я их писал 4-5-6 месяцев назад, естественно уже многое не понятно, половину не помню зачем, и хочется оптимизировать, зарефакторить, и тд.
В итоге решил начать с того, чтобы вспомнить, что за что отвечает, и Cursor с AI мне в этом поможет, я выгружаю свою функцию, открываю в Курсоре, и прошу Claude Sonnet 4, оказалась она лучше всего справляется с этим, выполнить вот такую задачу:
создай readme на русском языке чтобы я запушил в свой приватный репо, и не забыл о чем эта лямбда функция, хорошо бы добавить описание методов и ендпоинтов
И получаю очень крутой Readme где все понятно и сразу вспоминаю что куда и зачем, не считая сегодня 4 часа копания в лямбде которая делает картинку из html)
Что получится из переписывания на Go, Rust, расскажу попозже, пока создаю Readme для каждой функции и отправляю в Github, чтобы потом через Codex с мобильного телефона программировать :)
А еще узнал, оказывается в Github показывается активность в приватных репо https://github.com/aposnov , просто не обращал на это внимания, решил приукрасить заодно, чтобы отправлять вместе с отликами на вакансии)
#программирование | @andreyposnov
12 июня «сломался интернет» и вот что случилось
Примерно в 19:51 по Барселоне началось и продолжалось до 03:18 ночи, основные сервисы удалось поднять к 22:49
Пострадали более 50 сервисов Google Cloud и Workspace, включая:
GCP (Google Cloud Platform): API Gateway, Compute Engine, Cloud Storage, BigQuery, Spanner, Pub/Sub, Cloud Run, Workstations, Memorystore, Vertex AI, AlloyDB, Firestore, API Gateway, IAM и др.
Workspace: Gmail, Drive, Docs, Meet, Chat, Calendar, Tasks, Voice, AppSheet и т.д.
Это отразилось и не на гугловских сервисах
Spotify, Discord, Snapchat, Twitch, Character.AI, Shopify, Anthropic, Etsy, Cloudflare, Gitlab, YouTube, OpenAI(ChatGPT) и др
👉Причина:
29 мая была внедрена новая фича в систему Service Control (отвечает за политику и квоты), которая не имела feature‑флага и содержала баг с ошибкой null‑pointer при определённых условиях
12 июня кода был добавлен ранее пустой/некорректный квотный объект, который активировал баг, и Service Control начал аварийно падать по всему миру роняя за собой остальные сервисы
👉Как исправляли
В течение 2 минут SRE-руководители начали расследование (верим?), через 10 минут локализовали причину и запустили «красную кнопку», отключающую проблемный путь .
Через 40 минут нормализация началась и прошла по регионам; однако работа в регионе us-central1 зависала дольше из-за перегрузки базы квот и отсутствия экспоненциальных задержек — полное восстановление случилось примерно через 2 часа 40 минут после начала
Подробный RCA тут
☀️☀️☀️
На самом же деле первая запись что инцидент есть на статус странице https://status.cloud.google.com поставили через 46 минут после начала инцидента в 20:37 по Барселоне (а сбой начался в 19:51).
К 22:49 восстановили основные сервисы (через 2 часа).
👉Немно отличается от опубликованного RCA (Root Cause Analysis)*
*это разбор инцидента по шагам: что случилось, почему, как восстанавливали и что сделают, чтобы больше не повторилось.
В официальном RCA указано что проблему начали изучать после 2 минут после начала, а через 10 мин уже локализовали и начали чинить.
🦸♂️В Гугле наверняка работают супермены, но думаю в таких больших компаниях они бы 10 мин только авторизовывались в свои системы мониторинга, наверняка есть внутренний RCA с реальным таймингом) но для больших компаний немного фэнтезийный чтобы акции не падали и клиенты не уходили
Но в целом хорошо знать что даже супермены забывают добавлять фича флаги, и писать код так чтобы не было Null pointer, ошибку, достаточно типичную
Я иногда поглядываю репорты инцидентов крупных компаний, и там обычно никакой магии, но импакт конечно большой, одно дело не обработать ошибку в пет проекте а другое заимпактить миллионы пользователей)
#программирование | @andreyposnov
Apple выпустили свой Docker
Он будет бесплатный и опенсорный, вот репо https://github.com/apple/container
Он написан на Swift, безопаснее (каждый в своем sandbox), быстрее и экономит батарею, нативный.
Поддерживает OCI(Open Container Initiative), стандарт описывающий слои, манифест и конфиг.
Docker-образы хранятся в том же формате (Docker = OCI + пару своих расширений), поэтому любой docker pull alpine — уже OCI-image.
Apple Containerization работает через CLI, берёт обычный OCI-образ и через Containerization разворачивает его в микро-ВМ Virtualization.framework; старт ≈ 100 мс, изоляция аппаратная (EL2).
👉На что я еще лично ещеобратил внимание,
это тот, кто его представил, некий Michael Crosby, но LinkedIn у него нет, что для человека который работает в США странно,
и больно он уже похож на AI аватар, либо он себе создал его потому что так легче было создать ролик, либо Apple уже генерирует AI аватары чтобы представлять продукты и сервисы))
Можно посмотреть видео и проверить мою теорию здесь https://developer.apple.com/videos/play/wwdc2025/346
#программирование | @andreyposnov
Еще немного про секреты (сервисов)
У меня сейчас CI/CD такой, что код своих микросервисов я комичу в гитхаб, в гитхабе на actions собирается docker image и отправляется в мой docker hub.
На моем kubernetes, поднят ArgoCD (такой опенсорс тул для GitOps*), в него добавлены репозитории микросервисов, он видит что код изменился, и скачивает новый docker image что поднять его Pod в кубернетесе
Как можете видеть взаимодействует много сторонних сервисов, все они приватные, везде свои ключи, которые по безопасности еще должны меняться раз в какое то определенное время
*GitOps - это способ управления инфраструктурой и приложениями с помощью Git как единственного источника правды. Это касается не только микросервисов, но и всей моей Infrastructure as Code (терраформ и ансибл).
В итоге в кубернетес у меня создано 3 сервис аккаунта
Platform
Integration
Workload (Сервисы и приложения)
Это как паспорта, кубернетес выдает jwt token каждому поду, и token подтверждает личность пода.
👉Получается примерно такой воркфлоу, при запросе секрета.
Под говорит Vault: "Я workload-secrets-sa, вот мой токен"
Vault спрашивает у Kubernetes: "Этот токен правда от workload-secrets-sa?"
Kubernetes отвечает: "Да, токен валидный"
Vault выдает доступ: "OK, можешь читать только secret/workload/*"
Пример моей структуры
secret/platform/
-database/postgres
-database/dynamodb
-monitoring/grafana
-monitoring/prometheus
-infra/argocd
-infra/kubernetes-dashboard
secret/integration/
-registry/dockerhub
-cloud/aws-s3
-api/github
-payment/stripe
-notification/tg
secret/workload/
- backend-api/config
-telegram-bot/tokens
-backup-script/keys
-frontend/env
И здесь указаны далеко не все сервисы и компоненты моего проекта, и у каждого есть секреты (ключи), я просто не представляю уже как я раньше все это хранил без Hashicorp Vault, а уж как поддерживать нужный уровень безопасности с постоянной сменой секретов, без автоматизированного инструмента невозможно
Теперь мои сервисы и CI/CD получают секреты из Vault, чудеса
Другие посты на эту тему
1. Terraform (создание серверной инфрастуктуры)
2. Ansible (конфигурация серверов)
3. Как хранить секреты? для сервисов и не только
🍏ps. Презентация Apple WWDC сегодня уже через 10 часов 🤓в 19:00 по Барселоне
#программирование | @andreyposnov
Как хранить секреты? для сервисов и не только
Продолжаю рубрику “девопс штучки”.
1. Terraform (создание серверной инфрастуктуры)
2. Ansible (конфигурация серверов)
Мое открытие на сегодня Hashicorp Vault.
Токены, логины, пароли хранить в заметках или confluence, это конечно замечательно я это видел и в стартапах и корпорациях
Следующий этап это в .env или секретах облака (типа GitHub), тоже норм, но все еще не идеально.
После того как я ознакомился что такое Терраформ и Ansible, пока я экспериментировал с переустановками
да они быстрые, но меняются секреты, а сервисов даже на моей части проекта уже много, типа токены от dashboard kubernetes, grafana, prometheus, PostgreSQL, vpn tunnel, ArgoCD, API токены, а сколько еще будет…
Я это кидал в заметки просто а потом рылся, но решил разобраться наверняка есть у КлаудИнженеров и на это решение
И действительно нашлось, это пипец, чудеса, Hashicorp Vault это централизованное хранилище секретов, помимо хранения всех токенов, ведется история их изменений, ведется лог аудит кто когда и зачем обращался к токену (у Vault есть API, по которому токены доставать в приложениях или CI/CD), выдавать доступ по ролям и политикам! (Типа одной команде такие, а этой другие), автоматически менять пароли/обновлять токены (по политике безопасности), даже выдавать SSL серты внутренним сервисам.
И еще веб интерфейс есть, чтобы те кто работают не по API, или не всегда по API, имели доступ к нужным секретам, например как мне к веб мордам выше перечисленных сервисов, но думаю интегрировать и дальше 👍
ps. в командах от 7 человек, можно создать целое братство кольца как во Властелине Колец, root пароль к Vault, раздать 7 сотрудникам, и доступ будет только если они все соберутся вместе, такая вот защита) я слышал практикуют в финтехе
#программирование | @andreyposnov