О перспективе развития сетевых технологий «Сеть как код»
«Сеть как код» (Network as Code, NaC) – это применение концепции «Инфраструктура как код» (Infrastructure as Code, IaC) ко всему сетевому домену, включая традиционные центры обработки данных, облачные среды, глобальные и кампусные сети. NaC представляет собой перспективное направление развития коммуникационных технологий, которое может значительно повысить гибкость, адаптивность и экономическую эффективность телекоммуникационных сетей.
Для общего понимания платформы NaC рассмотрим «Инфраструктуру как код».
IaC – это название, данное методам, используемым для описания и предоставления вычислительных, репозиторных, сетевых и других ресурсов в рамках развертывания современных приложений на облачных платформах.
С помощью IaC разработчики встраивают требования к инфраструктуре программного обеспечения прямо вместе с вариантом приложения в репозиторий управления исходным кодом.
Эти требования предоставляются в форматах данных, которые могут быть легко обработаны средством развертывания инфраструктуры. Хотя существует множество инструментов для развертывания IaC, распространенным мультиплатформенным инструментом является программное обеспечение с открытым исходным кодом Terraform* от компании HashiCorp. С помощью Terraform инфраструктура для приложения может быть быстро создана, обновлена, уничтожена и воссоздана на основе «конфигурации», которая контролируется версиями, наряду с самим приложением. Кроме того, инструменты непрерывной разработки (Continuous Integration and Continuous Delivery, CICD*) могут выполнять управление инфраструктурой как часть конвейера сборки.
*Terraform – это инструмент управления состоянием инфраструктуры. С его помощью можно разворачивать серверы, настраивать сети, балансировщики нагрузки и прочие элементы инфраструктуры.
*CICD (Continuous Integration and Continuous Delivery – непрерывная интеграция и доставка) – это технология автоматизации тестирования и доставки новых модулей разрабатываемого проекта заинтересованным сторонам (разработчикам, аналитикам, инженерам качества, конечным пользователям и др.).
В большинстве случаев IaC используется в облачных средах, где требования к инфраструктуре приложений разрабатываются одновременно с самими приложениями, которые создаются для облака или переносятся в него.
Платформа NaC позволяет разработчикам приложений получить более широкий доступ к информации и возможностям сетевых интерфейсов прикладного программирования (Application Programming Interfaces, API*), комплектов для разработки программного обеспечения (Software Development Kits, SDK), специально выделенной (изолированной) среде («песочнице») для безопасного исполнения компьютерных программ, а также «фрагментов кода», применяемых для создания новых программных продуктов.
Успешная реализация NaC является частью более широкого внедрения методологии, интегрирующей сетевую автоматизацию в процесс разработки операции по развитию сети (Network Development Operations, NetDevOps,) в рамках предприятия. Это повлечет за собой значительные изменения в проектировании и эксплуатации сети, инструментах и технологиях, используемых для создания и управления конфигурациями.
*API (Application Programming Interfaces) – сетевые интерфейсы прикладного программирования используются разработчиками программного обеспечения для создания приложений, которые могут взаимодействовать с базовой сетью. API предоставляют приложениям единый способ доступа к аналитическим и статистическим данным из сетей, облегчая реализацию вариантов использования, основанных на опыте работы с клиентами. Сетевые API могут получать информацию о сети и запрашивать изменения конфигурации.
При реализации концепции Network as Code в рамках NetDevOps соблюдаются следующие принципы:
1. Хранение конфигурации сети в системе управления исходным кодом.
Для использования платформы «Сеть как код», нужно рассматривать конфигурацию сети как версию, которая хранится в системе управления исходным кодом, например, Git. Такие системы управления версиями, позволяют эффективно отслеживать изменения в файлах «репозиториев кода» с помощью инструментов, созданных для того, чтобы программисты могли легко работать над своими проектами. «Распределенное управление версиями» – наиболее распространенная на сегодняшний день реализация системы управления исходным кодом, позволяющая членам команды разработчиков совместно использовать репозитории, «отправляя» изменения в центральное удаленное хранилище, откуда другие технические исполнители могут «забирать» их на свои локальные рабочие станции.
Переходя к системам управления исходным кодом, ИТ-специалисты оставляют позади более «традиционные» методы контроля версий в пространстве сетевых конфигураций, имея в виду распространенные стратегии именования файлов: «switch1-V1.txt», «switch1-V2.txt», «switch1-V3.txt» и т. д. Этот метод управления версиями подвержен ошибкам, неточен и лишен какого-либо способа отчетности. Однако при контроле исходных кодов все версии хранятся в истории репозитория вместе с такими подробностями, как кто внес изменения, когда они были сделаны и каковы причины изменения. Более того, в любой момент их можно быстро просмотреть и увидеть различия между разными версиями, а также «откатиться» к любой точке времени с помощью одной команды управления исходным кодом.
Наряду с базовой системой контроля исходных кодов Git, используется платформа, обеспечивающая совместный доступ к репозиториям для всей команды инженеров. Например, такие продукты, как GitHub, GitLab, BitBucket, Gogs и другие, представляют собой реализацию Git в виде веб-портала, с помощью которого ИТ-специалисты могут обмениваться репозиториями проектов. Но эти решения предлагают гораздо больше, чем просто централизованное удаленное расположение для хранилищ. Они также включают в себя такие функции совместной работы, как регистрация проблем, отслеживание релизов, вики-документация, доски управления проектами и многое другое. Это означает, что команды NetDevOps специалистов могут использовать обзоры кода, журналы регистрации проблем, запросы на извлечение и релизы так же, как это делают команды разработчиков программного обеспечения.
- Управление исходным кодом является единым источником истины.
Применяя сетевые конфигурации, хранящиеся в системе управления исходными версиями, пользователям следует рассматривать их как единственный источник истины о том, как должна быть настроена сеть. В настоящее время во многих организациях такой основой является текущая сетевая конфигурация, которая активна в производственной сети. Это дает преимущество, заключающееся в том, что текущая сеть всегда «точна», однако это худший способ управления в современной системе «Инфраструктура как код».
Одной из причин использования подхода «Инфраструктура как код» в облачных приложениях является возможность быстро и эффективно запускать новые варианты платформ, необходимые для решения задач в различных средах. Типовые решения будут иметь производственные, испытательные, гарантирующие качество среды, а также системы поддержки ИТ-специалистов. Благодаря применению IaC каждая создаваемая структура будет построена с использованием одних и тех же параметров конфигурации, ограничивая различия между ними до минимума.
Это значительно повышает вероятность успешного развертывания и обновления приложений за счет устранения вариативности настроек среды. Причина, по которой это работает, заключается в том, что конфигурация IaC, хранящаяся в системе управления исходным кодом, является источником истины о том, как должна быть настроена инфраструктура.
Хотя большинство предприятий пока не имеют возможности использовать такой надежный набор средств тестирования, разработки и контроля качества для всей своей сети, ведется активная работа по воплощению этой идеи в жизнь. Инструменты моделирования сети, виртуальные сетевые функции, эмуляторы и облачные решения становятся все более доступными. Поэтому приближается день, когда ИТ-компания сможет создать «тестовую сеть», которая будет представлять какую-либо часть ее собственной.
Любые изменения, вносимые разработчиком вручную через безопасную оболочку (Secure Shell, SSH) и интерфейс командной строки (Command Line Interface, CLI) признаются некорректными и ошибочными. Применяя платформу Network as Code можно быть уверенным, что в любой момент времени в производственную сеть можно внедрить настройки, хранящиеся в системе контроля исходных версий. Фактически, необходимо реализовать процедуры, которые отслеживают отклонения в работающих структурах, выдают оповещения и возвращаются к заведомо корректным архитектурам из исходного хранилища.
- Развертывание конфигураций с помощью программных API.
Третий принцип Network as Code связан с тем, как профили из репозиториев исходного кода фактически применяются к самим сетевым устройствам. Участие человека в управлении инфраструктурой сети заключается в проектировании, разработке и тестировании сетевых решений в рамках платформы NaC. Фактическая реализация «кода» должна осуществляться через программные API.
В виду того, что компьютеры разработаны для выполнения повторяющихся задач, в третьем принципе данное преимущество используется для развертывания элементов конфигурации сети. Это означает, что в рамках Network as Code в качестве основного метода развертывания сетевых конфигураций вместо интерфейса командной строки (CLI) будет реализован переход на интерфейсы прикладного программирования (API), такие как новые стандарты NETCONF и RESTCONF или собственные API платформы.
Следует отметить, что современные программные API все еще относительно новы для сетевой инфраструктуры, и многие компании имеют сети, построенные на платформах, в которых может отсутствовать какой-либо интерфейс, кроме CLI (или SNMP, имеющий проблемы при настройке). Данный факт не мешает разработчикам начать применять модели «Сеть как код» и NetDevOps. Это означает, что в какой-то момент времени в некоторых случаях нужно будет использовать CLI как программный API. Как только устаревшие платформы будут обновлены в части программного или аппаратного обеспечения и получат возможность выбора более подходящего API это позволит обновить текущие стратегии развертывания сети.
Сетевые API играют ключевую роль в стимулировании значительного роста прибыли за счет согласования возможностей сети 5G с передовыми приложениями. Это объединение открывает новые новаторские сценарии их использования в Индустрии 4.0, например:
- Предоставление разработчикам программного обеспечения возможностей по улучшению автоматизации и функциональных характеристик навигационных систем для беспилотников;
- Совершенствование систем сетевого программирования для расширения компетенций разработчиков по выявлению и предотвращению угроз безопасности;
- Повышение функциональных возможностей существующих решений в области управления информационными и коммуникационными технологиями «Умный город», автономными транспортными средствами и т.д. за счет бесшовной интеграции программируемых сетей, технологий Интернета вещей и сетей 5G;
- Обеспечение возможности создания новых приложений, для которых требуются специализированные сети со сверхвысокой производительностью и предсказуемой задержкой.
Программные интерфейсы API меняют правила игры в экосистеме 5G, позволяя разработчикам беспрепятственно использовать весь потенциал расширенных сетевых возможностей. Они стимулируют инновации, повышают производительность приложений и открывают новые возможности получения дохода для поставщиков услуг, прокладывая путь к более взаимосвязанному и интеллектуальному миру.
В настоящее время концепция Network as Code находится в начальной стадии реализации. Так, например, компания Nokia одна из первых презентовала в сентябре 2023 года платформу NaC, которая предоставляет разработчикам широкий спектр инструментов, включая:
- Наборы для разработки программного обеспечения SDK (Software Development Kit) для создания и тестирования приложений;
- Документацию Network API – подробные руководства и спецификации для работы с сетевыми интерфейсами;
- Среду для моделирования и тестирования сетевых сценариев без риска для реальных систем (sandbox – «песочница»);
- Готовые модули (фрагменты кода), которые могут быть интегрированы в приложения;
5. Инструменты для мониторинга и анализа использования приложений.
Компания Nokia и оператор беспроводной связи США DISH Wireless взаимодействуют в рамках стратегического партнерства и разработки приложений с использованием передовых технологий сетей 5G. Новая экосистема включает платформу Nokia Network as Code и облачные решения DISH 5G, что позволяет предприятиям создавать инновационные программные продукты и обеспечивать доступ к современным сетевым ресурсам.
Платформа Nokia «Сеть как код» разработана с использованием технических стандартов, таких как проект Linux Foundation CAMARA* и инициатива GSMA Open Gateway. Модель распределения доходов предусматривает сотрудничество между разработчиками, поставщиками услуг связи и компанией Nokia, что способствует созданию взаимовыгодных условий для всех участников экосистемы.
*Linux Foundation – некоммерческий консорциум развития ОС Linux, способствующий проведению совместной работы над программным обеспечением, оборудованием, стандартами и данными с открытым исходным кодом и GSMA –организация, объединяющая мобильную экосистему для обнаружения, разработки и внедрения инноваций, которые являются основой бизнес-среды и социальных изменений, в феврале 2022 года объявили о новом проекте с открытым исходным кодом CAMARA. Глобальное партнерство позволяет решать проблемы переноса и воспроизведения API-сервисов в разнородных операторских и облачных архитектурах.
В целом, технология «Сеть как код» представляет собой инновационный подход к проектированию и управлению процессом дистанционной передачи информации. Она позволяет создать новую бизнес- и технологическую структуру, которая превращает концепцию распределенных цепочек услуг в одно из важнейших направлений развития телекоммуникационной отрасли.
