🍀BitBitGo🍀 Системный Анализ
3.22K subscribers
217 photos
154 videos
112 links
Курс «Системный анализ»
https://bitbitgo.by/
Пишем про системный анализ.
Поможем стартануть в карьере IT. Присоединяйся!
Download Telegram
🚀 Метки (Labels) и селекторы (Selectors) в Kubernetes: Как управлять объектами
_Простыми словами о ключевом инструменте организации в кластере_

Что такое метки (Labels)?
Метки — это пары «ключ-значение», которые добавляются к объектам Kubernetes (подам, сервисам и т.д.) для их идентификации и группировки. Например:
- env: prod — окружение (продакшн).
- app: frontend — название приложения.
- tier: cache — уровень приложения (кэш).

👉 Проще говоря: Метки — это «стикеры», которые помогают быстро находить и фильтровать объекты.

---

Что такое селекторы (Selectors)?
Селекторы — это запросы, которые фильтруют объекты по их меткам. Например:
- Найти все поды с меткой env=prod.
- Исключить сервисы с app=legacy.

👉 Проще: Селекторы — это «поисковый запрос» по вашим стикерам-меткам.

### Примеры использования
1. Группировка подов:

   metadata:
labels:
app: frontend
env: staging


2. Фильтрация через kubectl:

   # Все поды в продакшне
kubectl get pods -l env=prod

# Сервисы, кроме бэкенда
kubectl get services -l app!=backend



3. Связь сервисов с подами:
В манифесте сервиса селектор указывает, к каким подам направлять трафик:

   spec:
selector:
app: frontend
env: prod



Операторы в селекторах
- Равенство: env=prod, app=frontend.
- Неравенство: tier!=cache.
- Вхождение в список: env in (prod, staging).
- Исключение: env notin (test).

#SYSTEMDESIGN
👍21
🚀 Почему Redis такой быстрый, если он однопоточный? Разбираемся!

Redis — это легенда среди баз данных, способная обрабатывать 100 000+ запросов в секунду даже на одном потоке. Но как это возможно? Давайте разложим всё по полочкам!

🔥 4 главные причины скорости Redis

1. Данные в оперативной памяти (RAM)
Redis хранит всё в памяти, а не на диске. Доступ к RAM в 100 000 раз быстрее, чем к HDD/SSD.
→ *Пример:* Чтение данных за 100 наносекунд (RAM) vs 10 миллисекунд (SSD).

2. Мультиплексирование ввода-вывода
Redis использует механизмы вроде epoll (Linux) или kqueue (macOS), чтобы один поток мог управлять тысячами подключений.
→ *Как?* Поток отслеживает сокеты и обрабатывает только активные запросы.

3. Оптимизированные структуры данных
Строки, хэши, списки, множества — все они работают за O(1) благодаря хеш-таблицам.
→ *Кейс:* Хэш-таблицы позволяют найти ключ за константное время.

4. Преимущества однопоточности
- Нет переключений контекста между потоками.
- Нет блокировок (все команды атомарны).
- Проще отладка (никаких гонок данных).

⚡️ А как же многопоточность?
Redis не полностью однопоточный! Некоторые задачи выполняются в фоне:
- Асинхронное освобождение памяти (с Redis 4.0+).
- Многопоточный анализ протокола (с Redis 6.0+).

Но основная обработка запросов — всё ещё один поток. Это сохраняет простоту и эффективность.

⚠️ Ограничения однопоточности
- Долгие команды блокируют сервер (например, KEYS * на миллионах ключей).
- Узкие места: пропускная способность сети и объем памяти.
- Блокирующие команды (например, BLPOP) могут затормозить весь трафик.

Решение: избегайте «тяжелых» операций и используйте кластер Redis для масштабирования.

🚀 Как масштабировать Redis?
- Кластеризация: запустите несколько экземпляров Redis.
- Режим Sentinel: для отказоустойчивости.
- Шардирование данных между узлами.

#SYSTEMDESIGN
1
Как пустой S3-бакет может привести к неожиданным расходам: важные уроки по безопасности AWS S3

Ключевая проблема
Пользователь AWS создал приватный S3-бакет для тестирования. Через два дня был обнаружен счет на $1300, вызванный 100 миллионами PUT-запросов за 24 часа. Анализ показал, что запросы поступали от сторонних систем, использовавших имя бакета по умолчанию из популярного опенсорсного инструмента.

Причины расходов
1. Тарификация AWS S3:
- Плата взимается за все запросы, включая неавторизованные (ошибки 4xx).
- Стоимость: $0.005 за 1000 PUT-запросов.
- Запросы без указания региона автоматически направляются в us-east-1, что увеличивает расходы.

2. Риск утечки данных:
- При открытии бакета для публичной записи в него было загружено 10 ГБ данных от сторонних систем, включая конфиденциальную информацию.

Рекомендации по обеспечению безопасности
1. Именование бакетов:
- Используйте уникальные имена с добавлением случайных суффиксов.
- Избегайте распространенных названий (например, backup, data).

2. Настройка доступа:
- Запретите публичную запись через Bucket Policy.
- Регулярно проверяйте IAM-политики и права доступа.

3. Мониторинг:
- Включите логирование через AWS CloudTrail и S3 Server Access Logging.
- Настройте оповещения о нестандартной активности.

4. Региональные настройки:
- Всегда указывайте регион явно в запросах (CLI/SDK).

Ключевой вывод
Любое лицо, знающее имя вашего S3-бакета, может инициировать запросы, приводящие к незапланированным расходам. Единственный способ полностью исключить риск — удалить неиспользуемые бакеты.

Примечание: В описанном случае AWS аннулировал счет как исключение, однако такая практика не гарантирована. Рекомендуется регулярно аудитить настройки S3 и соблюдать лучшие практики безопасности.

#SECURITY
5
🔥 Список вопросов с реального собеседования на системного аналитика

Недавно удалось ознакомиться с вопросами, которые задавали на собеседовании кандидату на позицию системного аналитика уровня Middle (зарплата ~250 тыс. руб.). Компания крупная и известная на рынке. Делимся списком, который поможет понять, насколько вы готовы к таким техническим интервью:

📌 Раздел «Требования»:
- Какие виды нефункциональных требований вы знаете?
- Как именно вы обычно собираете требования с заказчиками?
- Был ли у вас опыт, когда приходилось менять требования непосредственно во время их презентации команде? Как вы поступали?
- Какие обязательные разделы должны входить в документ «Архитектура решения»?
- Какие виды диаграмм или схем вы обычно используете при описании архитектуры решения?
- В каких инструментах и нотациях предпочитаете работать при создании схем?
- Чем принципиально отличаются User Story и Use Case?

Отдельно рекомендуем быть готовым рассказать о стандартной структуре технического задания (ТЗ), которое вы привыкли готовить.

Эти вопросы помогут заранее подготовиться и успешно пройти собеседование!

#REQUIREMENTS
🔥10
🚀 Структура FastAPI-приложения: Быстрый старт для аналитиков и разработчиков

Многие системные аналитики и разработчики сталкиваются с необходимостью быстро развернуть простой REST API на FastAPI для тестирования или прототипирования. Но каждый раз создавать инфраструктуру с нуля не очень продуктивно, верно?

Автор статьи столкнулся с такой же проблемой и разработал универсальный шаблон FastAPI-приложения, который позволяет быстро стартовать проект «из коробки». В него входит:

🔹 Минимальная структура бэкенда: модели SQLAlchemy, API-роутинг, Pydantic-сущности, утилиты.
🔹 База данных Postgres в Docker-контейнере с готовым конфигом для docker-compose.
🔹 Готовая интеграция с Alembic для миграций БД.
🔹 Поддержка тестирования и CI/CD с простым пайплайном для линтеров и тестов.
🔹 Оптимизированный Docker-образ приложения на основе Python 3.12-slim.

Теперь вы можете за считанные минуты развернуть полностью работоспособный проект для аналитики, тестирования или разработки.

📌 Ссылка на готовый шаблон:
https://github.com/max31ru12/FastAPI-Template

🔗 #INTEGRATION
2👏2👍1
🚀 Трансформация роли системного аналитика в 2025 году 🔄

Системный аналитик, традиционно выполняющий роль «переводчика» между бизнесом и разработкой, сегодня сталкивается с новыми вызовами. Роль становится более комплексной и требует углубленного понимания технологий и разработки. 💻

1️⃣ Влияние гибких методологий (Agile, DevOps)
Границы между ролями в командах размываются. Системный аналитик теперь активно участвует в процессе разработки и тесно сотрудничает с UX-дизайнерами и DevOps-инженерами. 🤝

2️⃣ Роль искусственного интеллекта (ИИ)
ИИ активно автоматизирует рутинные задачи, но роль аналитика смещается в сторону более сложных стратегических задач и планирования. 🤖💡

3️⃣ Эволюция документации
Традиционные подходы к документации уступают место гибким решениям: документация как код, интерактивные схемы и спецификации API. 📑➡️💻

Будьте готовы адаптироваться к этим изменениям, чтобы оставаться востребованными! 🌟

#SYSTEMDESIGN
3
AI-ассистент Cursor для разработчиков: новый подход к программированию 🚀

Каждому разработчику знакома ситуация, когда написание кода становится утомительным процессом: синтаксис ускользает из памяти, ошибки скрываются в самых неожиданных местах, а иногда просто не хватает сил продолжать. В такие моменты хочется иметь помощника, который не только подскажет нужный фрагмент кода, но и будет полностью интегрирован в ваш рабочий процесс. Здесь на помощь приходит Cursor — AI-редактор, который кардинально меняет подход к разработке. 👨‍💻👩‍💻

1. Tab — умное автозаполнение

Функция Tab не просто дописывает одну строку, а предсказывает дальнейшие шаги в коде. Она понимает контекст и помогает с многострочными правками, а также исправляет синтаксические ошибки на лету. 🧠

2. ⌘ K — гуру программирования под рукой 🧑‍🏫

С помощью ⌘ K можно генерировать код по запросу, рефакторить и быстро получать ответы на вопросы прямо в контексте вашего проекта. Это как иметь опытного наставника, который всегда рядом. 👀

3. Терминал с AI ⚙️

Больше не нужно искать синтаксис команд — просто напишите запрос на обычном английском, и Cursor преобразует его в нужную команду, экономя ваше время. ⏱️

4. Chat — чаты с контекстом 💬

Cursor Chat анализирует код и помогает в реальном времени, понимая, где вы находитесь в проекте. Можно даже перетаскивать изображения макетов в чат для обсуждения. 🖼

5. Composer — генерация приложений 🏗

Composer позволяет создавать приложения, основанные на вашем описании. Это отличный инструмент для быстрого создания кодовой базы и рефакторинга. ⚡️

6. Контекст и AI Review 🔍

Cursor понимает всю вашу кодовую базу, а AI Review помогает проверять изменения и выявлять ошибки до их попадания в продакшен.

7. Простота и безопасность 🔒

Cursor работает без дополнительных настроек и гарантирует безопасность данных, не отправляя их в облако. 🔐

Cursor — это не просто редактор, а полноценный AI-помощник, который ускоряет и упрощает процесс разработки, улучшая качество кода и повышая продуктивность. 💪

#OTHER
4
Бенчмаркинг: Что это и где применяется 📊

Что такое бенчмаркинг?
Бенчмаркинг — метод анализа, который позволяет сравнивать практики и процессы с лучшими в отрасли для поиска эффективных решений. 📈

Цели и задачи:
- Создание конкурентоспособного продукта.
- Повышение эффективности процессов.
- Изучение успешных практик конкурентов и смежных отраслей. 🔍

Типы бенчмаркинга:
- Внутренний — сравнение показателей внутри компании.
- Внешний — анализ конкурентов и других отраслей.
- Функциональный — анализ конкретных функций (например, доставка).
- Сравнительный — изучение стратегий конкурентов в кризисных ситуациях. ⚖️

Преимущества:
- Снижение неопределенности.
- Доступность анализа на основе открытых данных.
- Низкие затраты, возможность провести анализ силами компании. 💡

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

#SYSTEMDESIGN
👍31
Что такое BPMN и как его использовать? 📊

BPMN (Business Process Model and Notation) — это стандарт для моделирования бизнес-процессов, который помогает описывать процессы как для бизнеса, так и для программных продуктов. Это удобный инструмент для визуализации и исполнения бизнес-процессов в разных системах.

🔑 Ключевые элементы BPMN:
- Event (Событие) — начало, завершение или промежуточные этапы процесса.
- Activity (Действие) — задачи, которые необходимо выполнить.
- Gateway (Шлюз) — точки принятия решений в процессе.
- Pool (Пул) — участники процесса, например, отделы или системы.

⚙️ Как применить BPMN?
BPMN используется для моделирования как исполняемых, так и неисполняемых процессов. В малом и среднем бизнесе это позволяет улучшить взаимопонимание и оптимизировать процессы без необходимости программного исполнения.

📈 Преимущества BPMN:
- Удобен для анализа и реинжиниринга бизнес-процессов.
- Легко воспринимается и читается без глубоких технических знаний.
- Подходит для всех уровней бизнеса.

Совет: Начните с неисполняемых моделей для иллюстрации и оптимизации, а для более сложных задач перейдите к исполняемым процессам.

#BPMN
4
Актуальная документация это из разряда фантастики
😁111
Из рутины в приятный процесс: как управлять бэклогом продукта 📋

Что такое бэклог продукта?
Бэклог продукта — это список всех функций и улучшений, которые должны быть реализованы в продукте. Это не просто список задач, а живой документ, который постоянно изменяется и приоритизируется в зависимости от потребностей бизнеса.

Разница между бэклогом продукта и бэклогом спринта:
- Бэклог продукта — включает все задачи, которые команда может выполнить в рамках разработки.
- Бэклог спринта — это задачи, которые команда возьмет на ближайший спринт для реализации.

Как управлять бэклогом?
1. Приоритизация: задачи в бэклоге сортируются по важности для бизнеса.
2. Оценка: каждая задача получает оценку сложности и ценности (Value & Effort).
3. Backlog Refinement: постоянное улучшение и уточнение задач.

Когда бэклог растет?
Если бэклог слишком большой, легко потерять фокус. Использование инструментов для управления бэклогом, например, Hygger, помогает структурировать задачи, оценивать их и визуализировать приоритеты с помощью таких функций, как Kanban-доски и Backlog Priority Chart.

#SYSTEMDESIGN
2👍2
HTTP-запросы: как работает обмен данными в вебе

Базовые понятия
Когда вы открываете сайт, браузер отправляет HTTP-запросы к серверу, чтобы получить ресурсы: HTML, CSS, JavaScript, изображения и другие файлы.

HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня, который определяет:
- Как клиент (браузер) формулирует запрос
- Как сервер возвращает ответ

Как это работает?
1️⃣ Установка соединения
- Браузер определяет IP-адрес сервера через DNS
- Открывает TCP-соединение (надежный канал передачи данных)

2️⃣ Отправка запроса
Пример GET-запроса:
GET / HTTP/1.1  
Host: example.com


Где:
- GET — метод запроса
- / — путь к ресурсу
- HTTP/1.1 — версия протокола

3️⃣ Получение ответа
Успешный ответ сервера:
HTTP/1.1 200 OK  
Content-Type: text/html


С последующим HTML-содержимым страницы.

Ключевые элементы HTTP
Методы запросов:
- GET — получение данных
- POST — отправка данных
- PUT/PATCH — обновление
- DELETE — удаление

Статус-коды ответа:
- 2xx — успех (200 OK)
- 3xx — перенаправления
- 4xx — ошибки клиента (404 Not Found)
- 5xx — ошибки сервера

HTTP vs HTTPS
HTTPS — это HTTP с шифрованием (TLS/SSL). Обязателен для защиты данных.

Практическое применение для аналитиков
1. Анализ API-интеграций
2. Чтение логов запросов/ответов
3. Тестирование веб-сервисов (Postman, cURL)
4. Понимание ошибок (4xx/5xx)

Пример для проверки:
curl -v https://api.example.com/users



Вопрос для обсуждения:
С какими HTTP-проблемами сталкивались в ваших проектах? Делитесь в комментариях!

#INTEGRATION
5