ТОП знаний и навыков директора по ИТ: техническая часть
– Какие технические навыки нужны ДИТу?
– Всё просто: если убрать управленческую часть, которая занимает 80% работы, директор по ИТ — это Senior «на стероидах»
– из диалога с нашим CIO
Продолжаем цикл статей от нашего ИТ-директора. В прошлом материале мы разобрали, какими управленческими навыками и знаниями должен обладать CIO. В этом материале углубимся в техническую часть. Итак, что точно должен знать директор по ИТ, чтобы быть эффективным и двигать компанию вперёд?
Важно: об отличиях ИТ-директора и технического директора
ИТ-директор (CIO) и технический директор (CTO) – это разные должности, которые требуют специфических скилов. Если коротко, CIO отвечает за управление ИТ-процессами внутри компании, следит за тем, чтобы ИТ-стратегия соответствовала целям бизнеса. Технический директор, в свою очередь, отвечает за ИТ-сервисы “снаружи” – всё то, чем пользуются клиенты. Подробно об отличиях рассказывали тут.
Архитектура ИТ-инфраструктуры
Это – фундамент, который определяет, как технологии будут поддерживать стратегические цели компании. Понимание того, как выстраивать архитектуру, позволяет CIO принимать взвешенные решения, обеспечивать надежность, масштабируемость и эффективность ИТ-систем. Рассмотрим ключевые компоненты.
1. Серверы
Физические серверы – CIO должен разбираться в типах серверов (стоечные, башенные, блейд-серверы) и уметь выбирать их под нужды бизнеса. Важно знать, как конфигурация сервера влияет на производительность приложений.
Виртуализация – CIO обязан разбираться в технологиях виртуализации, понимать устройство гипервизоров, уметь управлять виртуальными машинами и знать, как работает консолидация.
Облака – CIO должен понимать, как работают облака, а также отличать модели облачных услуг:
- IaaS (Infrastructure as a Service) – виртуальные серверы, хранение данных и сетевых ресурсов в облаке.
- PaaS (Platform as a Service) – платформы для разработки, тестирования и развёртывания приложений без необходимости управления серверной инфраструктурой.
- SaaS (Software as a Service) – готовые приложения, например, CRM, ERP, которые можно внедрить без локальной установки.
Хороший CIO также умеет оценивать предложения провайдеров с точки зрения безопасности, стоимости и соответствия требованиям бизнеса. Кстати, как это делать — мы уже рассказывали.
2. Сети
Локальные сети (LAN) связывают устройства внутри компании. CIO должен понимать принципы проектирования LAN, включая топологии сети (звезда, кольцо, шина), типы кабелей (витая пара, оптоволокно), и устройства (маршрутизаторы, коммутаторы, точки доступа). Также важно учитывать вопросы безопасности – знать про сегментацию сети и использование VLAN для разделения трафика.
Глобальные сети (WAN) соединяют офисы и филиалы компании по всему миру. CIO нужно понимать технологии передачи данных (MPLS, SD-WAN, VPN), которые обеспечивают надёжное и защищённое соединение между географически удаленными офисами.
Виртуальные частные сети (VPN) используются для безопасного соединения удалённых сотрудников и филиалов с корпоративной сетью через интернет. CIO должен разбираться в типах VPN (site-to-site, client-to-site), протоколах шифрования (IPsec, SSL/TLS) и их роли в защите данных при удаленном доступе.
Данные: хранение, управление, аналитика
Данные – ключевой актив современного бизнеса. Грамотное хранение, управление и анализ информации могут стать мощным драйвером роста компании. CIO необходимо владеть этими компетенциями, чтобы превратить массивы данных в ценные инсайты и стратегические преимущества. Рассмотрим основные аспекты работы с данными.
Технологии хранения
SAN (Storage Area Network) — это высокопроизводительная сеть для передачи данных между серверами и устройствами хранения. SAN позволяет централизовать управление данными, обеспечивает быструю передачу и высокую доступность. CIO важно понимать, как интегрировать SAN в инфраструктуру, чтобы добиться отказоустойчивости.
NAS (Network Attached Storage) предоставляет доступ к данным через сеть на уровне файлов. В отличие от SAN, NAS проще в развертывании и управлении, но может иметь ограничения по производительности для высоконагруженных приложений. Толковый CIO умеет определять, когда использование NAS будет оптимальным.
Облачное хранение данных предлагает практически неограниченное пространство для хранения с возможностью масштабирования. Но нужно учитывать факторы стоимости, скорости доступа, безопасности и соответствия требованиям бизнеса при выборе облачных хранилищ. Важно понимать различия между типами хранения (холодное, горячее, архивное) и выбирать подходящие решения для различных бизнес-задач.
Технологии резервного копирования и восстановления данных – CIO не может не разбираться в методах резервного копирования (инкрементальное, дифференциальное, полное) и восстановлении данных, включая DR (Disaster Recovery). Необходимо регулярно проверять и тестировать планы восстановления, чтобы минимизировать потери данных в случае аварий.
Управление и аналитика
Эффективное управление данными начинается с их правильной организации. CIO должен понимать, как:
- Определять тип данных (структурированные, неструктурированные, полуструктурированные) и классифицировать их. Это помогает при выборе методов хранения и защиты.
- Создать централизованный каталог (Data Catalog), который обеспечит быстрое и легкое обнаружение нужных данных.
Управление качеством данных – CIO должен внедрить процессы, включающие:
- Очистку (Data Cleansing): удаление ошибок, дубликатов и аномалий.
- Обогащение (Data Enrichment): добавление дополнительных данных из внешних или внутренних источников для полноты и контекста.
- Управление (Data Governance): ведение точных и актуальных метаданных.
Управление данными в реальном времени
- Обработка потоковых данных (Stream Processing): использование технологий Apache Kafka, Apache Flink или Apache Spark Streaming для анализа данных в реальном времени.
- Реактивное программирование – парадигма программирования, которая позволяет создавать системы, мгновенно реагирующие на изменения в данных.
Интеграция данных: для создания полноценной аналитической платформы CIO должен организовать интеграцию данных. Важно знать:
- ETL-процессы (Extract, Transform, Load) – подход, включающий извлечение данных из различных источников, их преобразование в нужный формат и загрузку в централизованное хранилище данных.
- ELT-процессы (Extract, Load, Transform) – подход, при котором данные сначала загружаются в хранилище, а затем трансформируются, что особенно полезно при работе с большими данными (Big Data).
- Data Lakes – хранилища данных, способные вместить огромные объёмы сырых, неструктурированных данных, которые могут быть обработаны и проанализированы позже. CIO нужно понимать, как организовать Data Lake, чтобы извлекать максимум пользы из хранившихся данных.
Хранилища данных и платформы
CIO должен быть знаком с различными типами СУБД и понимать, какие из них подходят для конкретных задач:
- Реляционные СУБД (RDBMS) – системы, которые используют структурированные данные и поддерживают SQL-запросы (например, Oracle, MySQL, PostgreSQL). Идеально подходят для транзакционных систем, где важны целостность данных и поддержка сложных запросов.
- NoSQL СУБД – нереляционные базы данных. Например, MongoDB, Cassandra, Couchbase. Они лучше подходят для работы с неструктурированными данными и сценариями с высокой масштабируемостью.
CIO также важно понимать, как использовать инструменты для анализа больших объемов данных:
- Apache Hadoop – фреймворк для распределенной обработки больших данных, который позволяет хранить и обрабатывать огромные объемы данных на кластерах серверов. ИТ-директору стоит знать, как развернуть и управлять Hadoop-кластером, а также использовать экосистему инструментов, таких как Hive, Pig и HBase.
- Apache Spark – платформа для обработки данных в реальном времени и пакетного анализа, которая обеспечивает высокую скорость и масштабируемость. Spark поддерживает различные языки программирования и может быть интегрирован с Hadoop, что делает его мощным инструментом для работы с большими данными.
Безопасность данных
Одна из задач ИТ-директора — внедрить механизмы управления доступом к данным, чтобы обеспечить их защиту. Например:
- Role-Based Access Control (RBAC) – назначение доступа на основе ролей сотрудников, что упрощает управление и минимизирует риски утечек данных.
- Data Masking – маскирование данных, чтобы ограничить доступ к конфиденциальной информации, например, для разработки и тестирования.
- Data Loss Prevention (DLP) – инструменты для предотвращения утечек данных, которые контролируют и ограничивают доступ к конфиденциальной информации.
Извлечение данных и аналитика
CIO должен понимать, как извлекать данные из различных источников для анализа:
- SQL и NoSQL запросы – использование SQL для извлечения структурированных данных из реляционных баз данных и специализированных запросов для работы с NoSQL базами данных.
- API и коннекторы – использование API для извлечения данных из облачных систем и интеграции их с внутренними хранилищами данных.
Анализ данных (Data Analytics)
Ещё одна компетенция хорошего ИТ-директора. Анализ данных включает использование статистических и математических методов для извлечения инсайтов:
- Descriptive Analytics — анализ исторических данных для выявления тенденций и паттернов, что помогает понять, что произошло в прошлом.
- Predictive Analytics — применение моделей машинного обучения для прогнозирования будущих событий на основе исторических данных.
- Prescriptive Analytics — использование аналитических моделей для рекомендации наилучших действий в определенных сценариях, что позволяет оптимизировать бизнес-процессы.
Оркестрация и управление ИТ-инфраструктурой
Это ключ к бесперебойной работе всех технологических систем компании. Умение CIO координировать множество компонентов, автоматизировать процессы и оптимизировать ресурсы определяет гибкость и конкурентоспособность бизнеса. Рассмотрим основные аспекты этой критически важной области ИТ-менеджмента.
Контейнеризация позволяет развертывать приложения изолированно, обеспечивая их независимость от основного окружения. CIO обязан понимать, как контейнеризация может ускорить развёртывание приложений и облегчить масштабирование.
Автоматизация и оркестрация – CIO должен быть знаком с инструментами типа Ansible, Puppet, Chef и Terraform. Оркестрация процессов, например, в DevOps-среде, позволяет интегрировать и автоматизировать развертывание, тестирование и управление приложениями.
Мониторинг и управление производительностью – ИТ-директору нужно разобраться, как использовать инструменты мониторинга. Например, Nagios, Zabbix, Prometheus. Это поможет отслеживать ключевые показатели производительности (CPU, RAM, I/O, сетевой трафик) и быстро реагировать на проблемы. Важно также понимать роль APM-инструментов (Application Performance Management) в анализе производительности приложений и их влияния на бизнес-процессы.
Управление конфигурацией и изменениями – грамотный CIO умеет использовать CMDB (Configuration Management Database) для отслеживания всех компонентов инфраструктуры и их взаимосвязей. Также он без проблем применяет инструменты управления изменениями, чтобы минимизировать риски и обеспечить контроль над обновлениями и модификациями системы.
Управление жизненным циклом ПО (SDLC)
Software Development Life Cycle, SDLC — процесс, который охватывает все этапы разработки, развертывания и поддержки программных продуктов. В зависимости от характера проекта и бизнес-требований, CIO должен выбрать подходящую методологию SDLC – Waterfall, Agile, Scrum, DevOps, Lean Development. Рассмотрим каждый этап SDLC.
1. Планирование и анализ требований
Этап включает сбор и анализ бизнес-требований к ПО:
- Взаимодействие с заинтересованными сторонами (владельцы продуктов, пользователи, руководство) для понимания их потребностей и ожиданий от будущего ПО.
- Анализ требований для выявления возможных противоречий, пробелов или рисков. На этом этапе создается спецификация требований (Software Requirements Specification, SRS), которая будет служить основой для всех последующих этапов разработки.
- Оценка технической и экономической осуществимости проекта, включая анализ стоимости, времени разработки, рисков и доступных технологий.
2. Проектирование архитектуры
Этап включает создание архитектуры будущего ПО:
- Определение общей структуры системы, включая выбор технологий, платформ, языков программирования и компонентов. Архитектурный дизайн охватывает такие аспекты, как модульность, масштабируемость, отказоустойчивость и безопасность.
- Разработка схемы базы данных, определение сущностей, их атрибутов и отношений между ними. Важно учитывать оптимизацию запросов и поддержку будущих изменений.
- Проектирование пользовательского интерфейса и опыта, что включает создание макетов, прототипов и сценариев взаимодействия пользователя с системой.
- Создание документации, описывающей архитектуру системы, её компоненты, интерфейсы и внутренние процессы.
3. Разработка
На этапе разработки происходит непосредственное написание кода и реализация проектных решений:
- Написание кода на выбранных языках программирования, согласно техническим спецификациям и архитектурному дизайну. Важно следовать кодовым стандартам и использовать средства контроля версий, такие как Git.
- Кодирование отдельных компонентов или модулей системы, которые позже будут интегрированы в единое целое.
- Регулярные ревью кода (Code Review) для выявления ошибок, отклонений от стандартов кодирования и улучшения качества продукта.
4. Тестирование
Тестирование — критически важный этап SDLC, направленный на обнаружение и устранение ошибок:
- Юнит-тестирование отдельных модулей или компонентов системы для проверки их корректной работы.
- Интеграционное тестирование – проверка взаимодействия между различными модулями системы. Помогает убедиться в их совместимости и правильной интеграции.
- Полное тестирование всей системы в целом, включая функциональное тестирование, проверку производительности, безопасности и надежности.
- Приемочное тестирование (UAT) пользователями для подтверждения, что продукт соответствует ожиданиям и требованиям.
5. Развертывание
Этап развертывания включает подготовку программного обеспечения к запуску в эксплуатацию:
- Настройка серверов, баз данных и других компонентов инфраструктуры для успешного развертывания.
- Первичное развертывание в тестовой среде для окончательной проверки системы перед выходом в прод.
- Перенос системы на продуктивную среду, включая миграцию данных и настройку всех необходимых сервисов.
- Создание инструкций по развертыванию и конфигурации системы, которые будут полезны для поддержки и обновления ПО.
6. Поддержка и сопровождение
Этот этап охватывает управление программным обеспечением после его развертывания:
- Саппорт – поддержка пользователей и устранение ошибок, которые не были выявлены на этапе тестирования.
- Выпуск обновлений и патчей – могут включать исправления ошибок, добавление новых функций или адаптацию к изменениям в окружающей среде.
- Управление изменениями – внедрение процессов управления изменениями (Change Management) для минимизации рисков и обеспечения стабильной работы системы при обновлениях.
6. Непрерывная интеграция и развертывание (CI/CD) — это ключевая практика в современном SDLC, которая позволяет быстро и качественно внедрять изменения:
- Непрерывная интеграция (CI): автоматизация процесса интеграции кода от нескольких разработчиков в общую кодовую базу. CI включает автоматические сборки, тестирование и уведомления о результатах.
- Непрерывное развертывание (CD): автоматизация развертывания ПО на тестовых и продуктивных средах. CD помогает сократить время выхода продукта на рынок и улучшить качество за счёт автоматизации развертывания и тестирования.
Помимо перечисленных знаний и навыков, ИТ-директор должен держать руку на пульсе технологических новинок, знать о мировых практиках и стремиться к тому, чтобы ИТ способствовало достижению бизнес-целей.
Рекомендуем ознакомиться с другими материалами от нашего ДИТа:
– 5 книг для ИТ-директора: выбор CIO/CTO
– Как стать руководителем в ИТ: советы человека, которому удалось дойти до CIO и CTO
– Cloud Native – революция в мире разработки
– Как разработать ИТ-стратегию
Подписывайтесь на наш канал для будущих и действующих директоров по ИТ.