uz
Feedback
DevOps | Вопросы собесов

DevOps | Вопросы собесов

Kanalga Telegram’da o‘tish
5 502
Obunachilar
-324 soatlar
-107 kunlar
-530 kunlar
Postlar arxiv
🤔 Чем DevOps отличается от Agile? Это два различных подхода в разработке и доставке программного обеспечения, которые имеют разные цели и методы, но могут взаимодополнять друг друга. Давайте рассмотрим основные различия и связи между ними. 🚩Agile Увеличение гибкости и адаптивности разработки программного обеспечения. 🟠Итеративная разработка Разработка проходит в коротких циклах (итерациях), что позволяет регулярно представлять работающее программное обеспечение. 🟠Непрерывная обратная связь Регулярные встречи (например, ежедневные стендапы, спринт-ревью) для получения обратной связи от команды и заинтересованных сторон. 🟠Кросс-функциональные команды Команды, состоящие из разработчиков, тестировщиков, аналитиков и других специалистов, работают вместе над проектом. 🟠Фокус на клиенте Постоянное взаимодействие с клиентами для уточнения требований и проверки соответствия продукта их ожиданиям. Фреймворки: Scrum, Kanban, XP (Extreme Programming). 🚩DevOps Увеличение скорости и качества доставки программного обеспечения через автоматизацию и улучшение сотрудничества между разработчиками и операционными командами. 🟠Непрерывная интеграция и доставка (CI/CD) Автоматизация сборки, тестирования и развертывания кода, чтобы изменения могли быстро и надежно попасть в рабочую среду. 🟠Инфраструктура как код (IaC) Использование кода для управления и автоматизации инфраструктуры, что делает процессы повторяемыми и предсказуемыми. 🟠Мониторинг и логирование Постоянное отслеживание состояния приложений и инфраструктуры для быстрого обнаружения и устранения проблем. 🟠Сотрудничество и обмен знаниями Улучшение взаимодействия между разработчиками и операционными инженерами через общие инструменты и процессы. Инструменты: Jenkins, Docker, Kubernetes, Ansible, Terraform, Prometheus, Grafana. 🚩Сравнение и различия 🟠Фокус Agile: Сфокусирован на процессе разработки и управлении проектами, улучшая гибкость и адаптивность команды разработки. DevOps: Сфокусирован на процессе доставки и эксплуатации, улучшая автоматизацию и сотрудничество между разработчиками и операционными командами. 🟠Команды Agile: Включает кросс-функциональные команды, которые работают вместе над созданием программного обеспечения. DevOps: Включает команды разработчиков и операций, которые совместно работают над автоматизацией и улучшением процессов развертывания и эксплуатации. 🟠Методы и инструменты Agile: Методы Scrum, Kanban и другие Agile-практики, которые улучшают процесс управления проектами. DevOps: Инструменты и практики для автоматизации развертывания, мониторинга и управления инфраструктурой. 🚩Связь между Agile и DevOps 🟠Agile Помогает улучшить процесс разработки, делая его более гибким и отзывчивым к изменениям. 🟠DevOps Дополняет Agile, автоматизируя развертывание и эксплуатацию программного обеспечения, что позволяет быстрее доставлять изменения пользователям. 🟠Agile команда Может использовать Scrum для управления спринтами и задачами. 🟠DevOps практики Могут быть использованы для автоматизации CI/CD пайплайнов, чтобы каждая итерация разработки могла быть быстро и надежно развернута на серверы. Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие протоколы знаешь? Протоколы: TCP (надежная передача данных), UDP (быстрая и ненадёжная), HTTP/HTTPS (веб-протоколы), FTP (передача файлов), SMTP/IMAP/POP3 (почтовые протоколы), WebSocket (двусторонняя связь) и DNS (разрешение имён). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как вы думаете почему редис используют с mongobd, а не постгрес например? Redis часто используется вместе с MongoDB по нескольким причинам, связанным с их совместимостью, функциональными возможностями и типами данных, которые они поддерживают. Ниже приведены основные причины, почему эта комбинация предпочтительнее в некоторых сценариях. 🟠Совместимость и дополнение функциональности MongoDB — это документно-ориентированная база данных, оптимизированная для хранения и управления JSON-подобными документами. Она хорошо подходит для хранения сложных данных и поддерживает гибкую схему. Redis — это база данных в памяти, которая используется для высокопроизводительного кэширования и обработки данных. Она поддерживает различные структуры данных, такие как строки, списки, множества и хэши. Эти два инструмента дополняют друг друга, предлагая сочетание долговременного хранения данных (MongoDB) и быстрого доступа к данным (Redis). PostgreSQL — это реляционная база данных с расширенными возможностями, такими как поддержка транзакций, строгая схема и ACID-соответствие. Она хорошо подходит для сложных запросов и аналитики. 🟠Типы данных и схемы Гибкая схема MongoDB позволяет легко изменять структуру данных без сложных миграций. MongoDB отлично работает с JSON-документами, что делает его удобным для хранения полуструктурированных данных. Redis поддерживает различные структуры данных, такие как списки, множества, сортированные множества и хэши, что делает его идеальным для использования в качестве кэша и обработки данных в реальном времени. 🟠Производительность и масштабируемость Redis работает в памяти, что обеспечивает очень высокую скорость чтения и записи. Это делает его идеальным для кэширования и временного хранения данных, которые требуют быстрого доступа. Redis может обрабатывать большое количество операций в секунду, что делает его подходящим для высоконагруженных систем. MongoDB масштабируется горизонтально, что позволяет эффективно управлять большими объемами данных. Поддержка шардинга в MongoDB позволяет распределять данные по нескольким узлам, улучшая производительность и отказоустойчивость. 🟠Кэширование и обработка данных в реальном времени Redis часто используется для кэширования результатов запросов из MongoDB. Это снижает нагрузку на MongoDB и улучшает производительность системы. Redis может использоваться для хранения сессий пользователей, очередей задач и других временных данных, которые требуют быстрого доступа и обновления. 🚩Примеры использования 🟠Кэширование Использование Redis для кэширования часто запрашиваемых данных из MongoDB. Например, результаты сложных запросов или часто используемые документы могут храниться в Redis для быстрого доступа.
import redis
from pymongo import MongoClient

# Подключение к Redis и MongoDB
redis_client = redis.StrictRedis(host='localhost', port=6379, db=0)
mongo_client = MongoClient('localhost', 27017)
db = mongo_client['example_db']
collection = db['example_collection']

# Получение данных из Redis
data = redis_client.get('key')
if not data:
    # Если данных нет в Redis, получить их из MongoDB
    data = collection.find_one({'_id': 'key'})
    # Сохранить данные в Redis для кэширования
    redis_client.set('key', data)   
Ставь 👍 и забирай 📚 Базу знаний

🤔 Где лучше всего хранить state? State лучше хранить в управляемых внешних хранилищах, таких как базы данных или распределённые системы (Redis, Consul). Это упрощает масштабирование и сохраняет данные при перезапуске контейнеров. Использование локального хранилища не рекомендуется из-за рисков потери данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

📺 Уникальная база записей IT собеседований 300+ записей реальных собеседований на программиста, тестировщика, аналитика и прочие IT профы. Записи собесов от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство! У тебя есть запись собеседования? Мы готовы ее купить и заплатим до 3000 руб. за каждую

Надежная IT-инфраструктура для бизнеса от Selectel. Комплексные IaaS-решения для всех уровней бизнеса. - Выделенные серверы -
+5
Надежная IT-инфраструктура для бизнеса от Selectel. Комплексные IaaS-решения для всех уровней бизнеса. - Выделенные серверы - Облачные серверы - Объектное хранилище - Мобильная ферма - DBaaS и Managed Kubernetes - 1С в облаке Перейти на сайт #реклама 16+ selectel.ru О рекламодателе

🤔 Что нужно сделать чтобы после того как вы создали репозиторий с этим репозиторием можно было работать? После создания нового репозитория, будь то локальный или удаленный, необходимо выполнить несколько шагов для начала полноценной работы с ним. Эти шаги включают инициализацию репозитория, настройку удаленного репозитория, добавление файлов, коммит и настройку синхронизации с удаленным репозиторием. 🚩Основные шаги 1⃣Создание нового репозитория Перейдите на GitHub и войдите в свой аккаунт. Нажмите на кнопку "New" для создания нового репозитория. Введите имя репозитория, описание (опционально), выберите публичный или приватный доступ, инициализируйте с README (если нужно). Нажмите "Create repository". 2⃣Клонирование или инициализация репозитория Если репозиторий уже существует на GitHub
git clone https://github.com/yourusername/your-repository.git
cd your-repository
Если вы создаете новый локальный репозиторий
mkdir your-repository
cd your-repository
git init
3⃣Добавление файлов и коммит начального состояния Создайте или добавьте файлы
echo "# Your Repository" > README.md   
Добавьте файлы в индекс
git add README.md   
Сделайте первый коммит
git commit -m "Initial commit"   
4⃣Настройка удаленного репозитория Если вы инициализировали локальный репозиторий, вам нужно настроить удаленный репозиторий.
git remote add origin https://github.com/yourusername/your-repository.git
5⃣Пуш изменений в удаленный репозиторий Отправьте ваши изменения в удаленный репозиторий
git push -u origin master
🚩Дополнительные шаги для совместной работы 1⃣Создание веток Для разработки новых функций или исправлений багов рекомендуется создавать отдельные ветки
git checkout -b feature-branch   
2⃣Создание Pull Request (PR) После завершения работы в ветке создайте Pull Request на GitHub для обзора и слияния. 3⃣Настройка файлов `.gitignore` Добавьте файл .gitignore для исключения ненужных файлов из коммитов.
echo "node_modules/" > .gitignore
git add .gitignore
git commit -m "Add .gitignore"
   
4⃣Настройка CI/CD Подключите сервисы Continuous Integration/Continuous Deployment, такие как GitHub Actions, Travis CI или Jenkins, для автоматизации тестирования и развертывания.
# Пример файла .github/workflows/ci.yml для GitHub Actions
name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'
      - run: npm install
      - run: npm test   
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Kubernetes? Kubernetes — это система оркестрации контейнеров, автоматизирующая развертывание, управление и масштабирование приложений. Она управляет группами контейнеров (подами) и их состоянием. Kubernetes позволяет эффективно использовать ресурсы и обеспечивает высокую доступность. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Откройте подписку на Кинопоиск и Музыку за 1₽ Ответьте на 1 вопрос и получите в подарок доступ к Кинопоиску, Музыке и Книгам
Откройте подписку на Кинопоиск и Музыку за 1₽ Ответьте на 1 вопрос и получите в подарок доступ к Кинопоиску, Музыке и Книгам на 60 дней за 1 рубль. ✨ Сервисы будут доступны не только для Вас, но и для трёх ваших близких Попробовать #реклама 18+ kinopoisk.ru О рекламодателе Реклама на Яндексе

🤔 В каких случаях будете использовать foreach а в каких count приведите пример? В Terraform, for_each и count используются для создания нескольких экземпляров ресурсов на основе списка значений или карты (map). Выбор между ними зависит от структуры данных и конкретного сценария использования. 🚩count count используется для создания фиксированного количества экземпляров ресурса на основе числового значения. Это простой способ создания ресурсов, если количество экземпляров известно заранее и не зависит от ключей или других атрибутов. Сценарий: Создание трех экземпляров виртуальных машин с одинаковой конфигурацией.
resource "aws_instance" "example" {
  count         = 3
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "example-instance-${count.index}"
  }
}
🚩for_each for_each используется для создания ресурсов на основе ключей карты (map) или множества (set). Это позволяет более гибко управлять созданием ресурсов и ссылаться на конкретные экземпляры по их ключам. Сценарий: Создание экземпляров виртуальных машин с разными конфигурациями на основе карты значений.
locals {
  instances = {
    instance1 = { ami = "ami-0c55b159cbfafe1f0", instance_type = "t2.micro" }
    instance2 = { ami = "ami-0c55b159cbfafe1f0", instance_type = "t2.small" }
    instance3 = { ami = "ami-0c55b159cbfafe1f0", instance_type = "t2.medium" }
  }
}

resource "aws_instance" "example" {
  for_each = local.instances
  ami           = each.value.ami
  instance_type = each.value.instance_type

  tags = {
    Name = each.key
  }
}
🚩Когда использовать `count` 🟠Фиксированное количество ресурсов Если количество экземпляров известно заранее и одинаково для всех экземпляров. 🟠Простые сценарии Когда все экземпляры имеют одинаковую конфигурацию или различия минимальны. Создание трех одинаковых экземпляров S3 бакетов.
resource "aws_s3_bucket" "example" {
  count  = 3
  bucket = "example-bucket-${count.index}"
}
🚩Когда использовать `for_each` 🟠Динамическое создание ресурсов Если количество экземпляров и их конфигурация зависят от динамически определяемых данных. 🟠Работа с ключами Когда нужно использовать ключи для идентификации и управления экземплярами ресурсов. Создание IAM пользователей с различными именами и политиками.
locals {
  users = {
    alice = "arn:aws:iam::aws:policy/AdministratorAccess"
    bob   = "arn:aws:iam::aws:policy/ReadOnlyAccess"
  }
}

resource "aws_iam_user" "example" {
  for_each = local.users
  name     = each.key
  path     = "/users/"
}

resource "aws_iam_user_policy_attachment" "example" {
  for_each        = local.users
  user            = aws_iam_user.example[each.key].name
  policy_arn      = each.value
}
Ставь 👍 и забирай 📚 Базу знаний

Москвич 3 Современный городской кроссовер Москвич 3 за 17 500 рублей в месяц. Подробности уточняйте на официальном сайте mosk
Москвич 3 Современный городской кроссовер Москвич 3 за 17 500 рублей в месяц. Подробности уточняйте на официальном сайте moskvich.ru Перейти на сайт #реклама moskvich.ru О рекламодателе

🤔 Что вы выберете между Terraform и opentofu? Это инструменты для управления инфраструктурой как кодом (IaC), которые помогают автоматизировать развертывание, управление и масштабирование ресурсов в облачных и локальных средах. Оба инструмента имеют свои сильные и слабые стороны. Выбор между ними зависит от конкретных требований и контекста использования. 🚩Terraform ПлюсыПопулярность и сообщество Terraform — это один из самых популярных инструментов IaC с большим сообществом и обширной документацией. Множество готовых модулей и примеров, что облегчает начало работы. ➕Поддержка множества провайдеров Terraform поддерживает широкий спектр облачных провайдеров и сервисов (AWS, Azure, Google Cloud, и т.д.). Разработчики активно добавляют новые провайдеры и обновляют существующие. ➕Мощная и гибкая конфигурация Использование HashiCorp Configuration Language (HCL) для написания инфраструктурного кода. Поддержка сложных сценариев развертывания с использованием модулей, переменных и терраформ-рабочих областей. МинусыКоммерциализация Некоторые функции доступны только в коммерческой версии Terraform Enterprise. Переход на платные функции может быть дорогостоящим для небольших команд. ➖Сложности с масштабированием В некоторых случаях могут возникнуть проблемы с производительностью при управлении очень большими инфраструктурами. 🚩OpenTofu (ранее OpenTF) OpenTofu — это форк Terraform, который возник в ответ на изменения в лицензионной политике HashiCorp. ПлюсыОткрытость OpenTofu полностью открыт и не требует коммерческих лицензий для использования всех функций. Активное сообщество, которое стремится сохранить инструмент полностью свободным. Совместимость с Terraform OpenTofu сохраняет совместимость с конфигурациями и модулями Terraform, что позволяет легко перейти с Terraform на OpenTofu. ➕Быстрое развитие Открытое сообщество разработчиков может быстрее внедрять новые функции и исправления. МинусыМеньшее сообщество Хотя OpenTofu быстро растет, его сообщество и экосистема пока меньше, чем у Terraform. Ограниченное количество документации и примеров по сравнению с Terraform. ➖Потенциальные риски совместимости Хотя OpenTofu совместим с Terraform на текущий момент, в будущем могут возникнуть различия в функциональности и поддержке провайдеров. 🚩Выбор инструмента 🟠Когда выбрать Terraform Если вам нужна стабильность и зрелость инструмента с широким сообществом и обширной документацией. Если ваша инфраструктура уже использует Terraform и вы не хотите менять инструмент. Если вам нужны коммерческие функции Terraform Enterprise для управления и обеспечения безопасности инфраструктуры. 🟠Когда выбрать OpenTofu Если вы хотите использовать полностью открытый инструмент без коммерческих ограничений. Если вас беспокоят изменения в лицензионной политике HashiCorp и вы хотите избежать потенциальных проблем в будущем. Если вы хотите поддержать открытое сообщество и активно участвовать в развитии инструмента. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как покрываете Ansible тестами? Для тестирования Ansible используют инструменты, такие как Molecule, который позволяет создавать тестовые сценарии, запускать плейбуки и проверять их результаты. Также используются статические анализаторы, такие как ansible-lint, для проверки кода на соответствие стандартам. Кроме того, можно применять интеграционные тесты с помощью Docker или виртуальных машин. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Миграция в облако? Это легко! Собственная инфраструктура устарела или не справляется с нагрузками? Используйте облачные ресур
Миграция в облако? Это легко! Собственная инфраструктура устарела или не справляется с нагрузками? Используйте облачные ресурсы! Эксперты Yandex Cloud помогут перейти в облако быстро, легко и безопасно. ✅ Мы полностью сопровождаем процесс. ✅ От вас — только инженер с доступом к инфраструктуре. ✅ Архитектура под ваши задачи, миграция и поддержка на каждом шагу — всё включено. ⚡Переходите в Yandex Cloud и забудьте о старом железе. А если успеете подать заявку до 31 декабря, мы покроем расходы на инженеров и тестовую инфраструктуру. Подать заявку #реклама 16+ yandex.cloud О рекламодателе Реклама на Яндексе

🤔 Как linux выбирает, какой из процессов завершить? Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы. 🚩Как работает OOM Killer? 🟠Очки OOM (OOM Score) Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки). 🟠Формула расчета OOM Score Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры. 🟠Принудительное завершение Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым. 🚩Пример расчета OOM Score 🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный) Процесс A использует 1 ГБ памяти. Процесс B использует 2 ГБ памяти. Процесс C использует 500 МБ памяти, но это критический системный процесс. 🟠OOM Score для этих процессов может выглядеть так Процесс A: 300 Процесс B: 600 Процесс C: 100 (низкий, так как процесс критический) 🚩Настройка OOM Killer Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге /proc. Например, для изменения приоритета процесса:
echo -1000 > /proc/<PID>/oom_score_adj
🚩Логирование и мониторинг При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно /var/log/syslog или /var/log/messages), что позволяет администраторам анализировать причины и предпринимать меры по предотвращению в будущем. Ставь 👍 и забирай 📚 Базу знаний

По прогнозам, к 2027 году дефицит ИБ-специалистов достигнет 60 000 человек. Это сложная ситуация для компаний, которые не мог
По прогнозам, к 2027 году дефицит ИБ-специалистов достигнет 60 000 человек. Это сложная ситуация для компаний, которые не могут конкурировать в найме с «гигантами» рынка. Кажется, ИБ-специалиста можно только «перекупить», предложив зарплату побольше. Можно ли обойтись без «жирных» офферов? Один из путей — подготовка молодых кадров.  Делимся подкастом о том, как начать карьеру в ИБ и почему это сложно:   - Почему вузы не готовят к реальной работе в ИБ?   - Почему выпускники часто не знают, чем заниматься?   - Кто выиграет борьбу молодых — ИБ или разработка?   - Где карьерный рост быстрее: в ИТ или ИБ?   Проблема глазами провайдера SECaaS (Владимир Зайцев из NGENIX) и ИБ-компании (Дмитрий Федоров из Positive Technologies). Если вы уже столкнулись с дефицитом ИБ-кадров или хотите попасть в кибербез, но не знаете, с чего начать — смотрите видеоподкаст. #реклама О рекламодателе erid: LjN8KG9Ui

🤔 Что такое firewall? Firewall — это сетевой фильтр, который контролирует входящий и исходящий трафик на основе заданных правил безопасности. Он используется для защиты систем от несанкционированного доступа и обеспечения фильтрации вредоносного трафика. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Лицензионные решения Microsoft доступные в России Доступные решения к продаже на территории России со сроком подписки 12 меся
Лицензионные решения Microsoft доступные в России Доступные решения к продаже на территории России со сроком подписки 12 месяцев: - Microsoft Office 365 для бизнеса (Basic, Standard, Premium) - Office E1, E3, E5, Microsoft F1, F3, F5 - Project Plan 5 - Microsoft Power BI - Microsoft Dynamics 365 Заполните заявку, чтобы подключить продукт Microsoft Попробовать #реклама 16+ cloud4y.ru О рекламодателе

🤔 Как обеспечить достоверность уведомлений которые вы получаете? Для того чтобы уведомления были достоверными и надежными, необходимо учитывать несколько важных аспектов. 🟠Тщательная настройка правил алертинга Правильно настроенные правила алертинга помогают избежать ложных срабатываний и пропусков важных событий.Определите четкие пороговые значения для метрик. Настройте правила так, чтобы они учитывали контекст и временные интервалы (например, CPU usage > 80% в течение 5 минут). Используйте тренды и аномалии вместо статических порогов для более точного алертинга. 🟠Корреляция событий Объединение нескольких метрик и событий для повышения точности алертов. Настройте алерты, которые срабатывают только при наличии нескольких условий. Используйте системы, такие как Prometheus и Alertmanager, для сложной логики алертинга. 🟠Визуализация и проверка метрик Использование дашбордов и графиков для визуализации метрик и проверки правильности алертов. Настройте дашборды в Grafana или Kibana для постоянного мониторинга метрик. Регулярно проверяйте данные на предмет аномалий и соответствия реальной картине. 🟠Тестирование алертинга Периодическое тестирование системы алертинга для проверки ее работоспособности. Вручную вызывайте условия, при которых должны сработать алерты. Настройте тестовые сценарии для автоматической проверки системы алертинга. 🟠Настройка систем уведомлений Убедитесь, что системы уведомлений настроены правильно и доставляют сообщения своевременно. Используйте надежные каналы уведомлений (например, локальный почтовый сервер, локальные мессенджеры). Настройте резервные каналы уведомлений на случай отказа основного канала. Ставь 👍 и забирай 📚 Базу знаний

А вы знали что?... 🕵️В Windows есть папка, которая собирает на вас компромат! Посмотрите видео выше — насколько легко узнать всю информацию о вас Простых способов узнать о вас практически всё — сотни, и если вы хотите соблюдать хотя бы минимум сетевой гигиены — подпишитесь на IT ВЕДОМСТВО Они рассказывает о признаках майнеров, как удалить трояны и порно-баннеры за 5 минут Помимо всего этого, сейчас владелец канала проводит розыгрыш умной колонки, для всех новоприбывших подписчиков 💻 Подписываемся на IT ВЕДОМСТВО — выигрываем призы и соблюдаем цифровую гигиену