По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Всем привет! Сегодня в статье мы поговорим про настройку PLAR (Private Line Automatic Ring-down) в Cisco Unified Communications Manager (CUCM) . PLAR (или как его иногда называют Hotdial) является функцией которая позволяет телефону вызывать определенный заданный номер, как только будет поднята телефонная трубка. Она может быть полезна для телефонов, размещенных в общественных зонах, например на ресепшене, когда человек, поднявший трубку будет сразу соединен с секретарем. Настройка Для того чтобы телефон автоматически набирал заданный номер необходимо сконфигурировать CSS и Partition, который содержит Translation Pattern. Сначала создадим partition, для этого в Cisco Unified CM Administration переходим во вкладку Call Routing → Class of Control → Partition и нажимаем Add New. Тут указываем название и нажимаем Save. Далее переходим во вкладку Call Routing → Class of Control → Calling Search Space и нажимаем Add New, для создания нового CSS. Тут указываем имя в поле Name, и из поля Available Partitions переносим созданный нами Partition в поле Selected Partition. Делаем это при помощи нажатия клавишу со стрелкой вниз, и сохраняем все, нажав на Save. Теперь настроим Translation Pattern. Переходим во вкладку Call Routing → Translation Pattern и снова нажимаем Add New. Тут указываем созданные нами Partition и CSS, а в поле Called Party Transformation Mask указываем номер, на который должны поступать звонки. Поле Transformation Pattern оставляем пустым. Наконец настроим сам телефон с PLAR. Находим нужный нам телефон во вкладке Device → Phone и в поле Device Information в строке Calling Search Space указываем созданный нами CSS. После этого нужно перейти в меню настройки DN, нажав Line [1] и также указать CSS в строке Calling Search Space Настройки для SIP телефонов Если наши телефоны работают по протоколу сигнализации SIP, то нам для настройки PLAR нужно выполнить следующие дополнительные действия. Нужно создать SIP Dial Rule. Это можно сделать, перейдя в меню Call Routing → Dial Rules → SIP Dial Rules нажав Add New. Сначала необходимо в выпадающем меню выбрать “7940_7960 Other”, а в следующем меню указать имя для правила. После этого в открывшемся окне в строке Pattern Description указываем название и нажимаем Add Plar. После этого паттерн появляется в поле Pattern Information. В этом поле в выпадающем меню Dial Parameter указываем Button, а в параметре Value номер линии на телефоне, на котором будет PLAR. Затем переходим в настройки SIP телефона во вкладке Device – Phone и в поле Protocol Specific Information в строке SIP Dial Rules выбираем созданное нами правило. Теперь при поднятии трубки на настроенном телефоне сразу будет набираться номер, который мы указали в Translation Pattern.
img
Многим организациям необходимо предоставлять и поддерживать большое количество удаленных офисов. Например: Розничные сети могут иметь сотни или даже тысячи магазинов по всему миру. Региональный банк может иметь сотни отделений и тысячи банкоматов. Когда поставщики услуг фиксированной частной телефонной связи предлагали свои услуги в любом масштабе, такого рода проблемы решались с помощью large-scale и hub-and-spoke сетей. На рисунке показана hub-and-spoke сеть. Сеть, показанная на рисунке выше, на самом деле довольно мала: три узла в центре удаленных сайтов могут представлять сотни или тысячи дополнительных узлов. Во многих реализациях (особенно старых) каналы связи между двумя маршрутизаторами-концентраторами, A и B, и удаленными устройствами, такими как C и N, являются двухточечными. Это означает, что на концентраторе-маршрутизаторе должен быть настроен интерфейс для каждого удаленного маршрутизатора, фильтры маршрутизации, фильтры пакетов и любые конфигурации Quality of Service. Это не только серьезная проблема с точки зрения конфигурации, но также трудно поддерживать тысячи отдельных соседей с точки зрения использования процессора и памяти. Чтобы уменьшить объем вычислительной мощности, необходимой для обслуживания такой сети, протоколы были изменены, чтобы исключить обработку удаленных узлов, как если бы они были частью дерева. Вместо этого, эти модификации позволили рассматривать эти удаленные узлы, как если бы они были выходными или тупиковыми сетями. Еще одним шагом на пути к упрощению создания таких сетей и управления ими было использование интерфейса point-to-multipoint (с соответствующей базовой технологией, такой как Frame Relay) на концентраторах-маршрутизаторах. Когда соединения с удаленными узлами настроены как point-to-multipoint, концентраторы-маршрутизаторы A и B обрабатывают все периферийные устройства так, как если бы они находились в одном сегменте широковещательной передачи (фактически, как сегмент Ethernet). Однако каждый spoke маршрутизатор по-прежнему рассматривает свое соединение с маршрутизаторами-концентраторами как соединение point-to-point. Даже с этими модификациями создание и обслуживание таких больших сетей все еще очень сложно. Необходимо проложить каналы на каждый удаленный узел и управлять ими, необходимо настроить удаленное оборудование и управлять им, необходимо управлять конфигурацией маршрутизаторов-концентраторов и т. д. Программно-определяемые глобальные сети (SD-WAN) изначально были разработаны для решения этой конкретной задачи. Идея DMVPN, зародившаяся в Dynamic Multipoint Virtual Private Network (DMVPN) от Cisco, заключалась в использовании туннелируемой оверлейной сети, работающей поверх общедоступного Интернета. Это позволило удаленным узлам использовать локально доступное подключение к Интернету, а не покупать канал для каждого узла, а также сократить время настройки и обслуживания за счет автоконфигурации и других инструментов. SD-WAN - это еще один шаг вперед в концепции сети over-the-top. Решение SDWAN обычно строится с использованием нескольких компонентов: Специализированное устройство или виртуализированная служба для замены маршрутизаторов, обычно размещаемых в центральных и оконечных точках. Модифицированная версия стандартного протокола маршрутизации для обеспечения доступности (и, возможно, одного из показателей жизнеспособности цепи) и передачи политик по сети. Реализация либо IP-безопасности (IPsec), либо безопасности транспортного уровня (TLS) для обеспечения безопасной туннельной передачи между оконечными устройствами. Контроллер для мониторинга состояния каждого виртуального канала, приложений, использующих канал, и количества полезной пропускной способности по сравнению с объемом трафика, а также для динамической корректировки потока трафика и параметров QoS для оптимизации работы приложений в over-the-top сети виртуальной сети. Есть много разных способов реализации SD-WAN, например: SD-WAN может заменить "последнюю милю". Вместо того чтобы устанавливать схему на каждом удаленном узле, вы можете использовать решения SD-WAN для достижения точки обмена или коллокации, а затем передавать трафик через более традиционную службу через провайдера обратно к маршрутизаторам-концентраторам (это форма backhaul). SD-WAN может заменить весь путь от сети организации до удаленных узлов. SD-WAN можно использовать для привлечения трафика в облачную службу, где может быть выполнена некоторая предварительная обработка или развернуты некоторые приложения, причем только трафик, который должен быть перенесен в сеть организации, переносится остальная часть пути в маршрутизаторы-концентраторы. Существуют компромиссы с SD-WAN и другими передовыми решениями, как и с любой другой сетевой технологией. Например, передача трафика корпоративного удаленного узла через "обычное" публичное интернет-соединение (или пару услуг, или какую-то другую услугу, завершенную Ethernet) может быть "достаточно хорошей" в некоторых ситуациях, но провайдеры, как правило, лучше относятся к трафику в более дорогих услугах (что вполне естественно), особенно при отключениях.
img
Основная цель любого проекта по разработке ПО – получить прибыль за счет автоматизации бизнес-процессов. Чем быстрее вы начнете выпускать новые версии, тем лучше для компании. Но как же научиться выпускать новые версии максимально быстро? Конечно же, все можно делать вручную. Например, подключить удаленный сервер через SSH, клонировать клонировать репозиторий с новым кодом, собрать его и запустить через командную строку. Да, такой способ работает, но он малоэффективен. Сегодня мы поговорим об автоматизации процесса разработки и выхода новых версий. CI и CD – это два сокращения, которые означают Continuous Integration (Непрерывная интеграция) и Continuous Delivery (Непрерывное развертывание). CI CI описывает процесс добавления изменений в репозиторий. Ниже схематически представлен простой пример коллективной разработки. Одновременно может работать целая группа людей, но все изменения передаются в главную ветку master поэтапно. Хотя даже в такой простой схеме возникает несколько вопросов. Как мы узнаем, что код, который идет в ветку master, компилируется? Мы хотим, чтобы разработчики писали тесты для кода. Как быть уверенными в том, что тестовое покрытие не уменьшится? Все сотрудники команды должны форматировать код в соответствие с определенным стилем. Как отследить возможные нарушения? Конечно же, все это можно проверить вручную. Но такой подход весьма хаотичен. Кроме того, по мере разрастания команды выполнять подобные проверки становится сложнее. CI используется для автоматизации выше обозначенных пунктов. Начнем с первого пункта. Как можно проверить, что новые изменения не сломают сборку? Для этого нам потребуется еще один блок в схеме. Большинство CI-процессов можно описать по следующему алгоритму. При открытии каждого Pull Request (запроса на включение изменений) и отправке новых изменений, Git-сервер отправляет уведомление CI-серверу. CI-сервер клонирует репозиторий, проверяет исходную ветку (например bugfix/wrong-sorting) и сливает ее с основной веткой master. Затем запускается скрипт сборки. Например ./gradlew build. Если команда возвращает код «0», то сборка прошла успешно. Все остальные значения считаются ошибкой. CI-сервер отправляет запрос на Git-сервер с результатом сборки. Если сборка прошла без ошибок, то Pull Request разрешается слить. В противном случае он блокируется. Данный процесс гарантирует, что код, попадающий в ветку master, не сломает дальнейшие сборки. Проверка тестового покрытия Давайте немного усложним задачу. Предположим, нам захотелось установить минимальный охват тестового покрытия. Это означает, что в любой момент времени покрытие ветки master должно быть не менее 50%. Плагин Jacoco идеально справляется с этой задачей. Вы просто настраиваете его так, чтобы при охвате тестового покрытия ниже допустимого, сборка уходила в ошибку. Реализовать такой подход проще некуда. Но есть небольшая оговорка. Этот метод работает только при условии, что плагин настраивался на старте проекта. Представим ситуацию: вы работаете над проектом, которому уже 5 лет. С момента первого коммита никто не проверял тестовое покрытие. Разработчики добавляли тесты в случайном порядке и без какой-либо организации. Но вот однажды вы решаете увеличить количество тестов. Вы настраиваете плагин Jacoco на минимальную планку в 60%. Спустя какое-то время разработчик открывает новый Pull Request. Затем разработчики вдруг понимают, что покрытие – всего лишь 30%. Так что для успешного закрытия задачи нужно покрыть не менее 30% кода продукта. Как вы можете догадаться, для проекта 5-летней давности – это практически неразрешимая проблема. Но что, если будут проверяться только будущие изменения в коде, а не весь продукт? Если в Pull Request разработчик изменит 200 строк, то нужно будет охватить не менее 120 из них (при тестовом покрытии в 60%). Тогда не придется проходить по множеству модулей, которые не относятся к задаче. В принципе, проблема решаема. Но как применить все это к проекту? К счастью, есть решение. Отчет Jacoco отправляется на сервер тестового покрытия. Одно из самых популярных решений – SonarCloud. Сервер хранит статистику по предыдущим вычислениям. Это очень удобно: вычислять тестовое покрытие не только всего кода, но и будущих изменений. Затем результат анализа отправляется на CI-сервер, который перенаправляет его на Git-сервер. Такая рабочая модель позволяет применять культуру обязательного тестирования на любой стадии развития продукта, поскольку проверяется лишь часть изменений. Если говорить о стиле оформления кода, то отличий практически нет. Можете попробовать плагин Checkstyle. Он автоматически отклоняет сборку, которая нарушает любое из заявленных требований. Например, в коде есть неиспользованный импорт. Кроме того, вы можете присмотреться к облачным сервисам, которые выполняют анализ кода и визуально отображают результаты в виде графиков (SonarCloud это тоже умеет). CD CD описывает процесс автоматического развертывания новой версии продукта. Давайте еще немного подкорректируем схему CI. Вот так конвейерный процесс CI/CD мог бы выглядеть в реальном проекте. Первое отличие – теперь CI-сервер называется CI/CD-сервером. Дело в том, что зачастую оба процесса (CI и CD) выполняются одним и тем же диспетчером задач. Так что мы будем рассматривать именно этот случай. Но так бывает не всегда. Например, задачи по интеграции могут делегироваться на GitLab CI, а задачи по доставке – отдаваться в Jenkins. Правая часть схемы изображает CI. Мы обсудили ее выше. Слева показана CD. Задача по CD создает проект (или повторно использует артефакты, полученные на стадии CI) и развертывает его на конечном сервере. Стоит отметить, что сервер в нашем случае – это понятие абстрактное. Например, развертывание может выполняться в кластер Kubernetes. Так что самих серверов может быть несколько. Обычно после стадии развертывания на почту приходят сообщения о выполнении. Например, CD-сервер может уведомлять подписчиков об успешном развертывании/ошибках. В любом случае, возникает важный вопрос. В какой момент мы должны запускать задачи по CD? Триггеры могут быть разными. Развертывание после каждого слияния Pull Request. Развертывание по расписанию. Развертывание после каждого слияния Pull Request с определенной веткой. Сочетание нескольких вариантов. В первом пункте процесс выстроен так, что задачи по CI и CD всегда выполняются последовательно. Данный подход весьма популярен при разработке программ с исходным кодом. Библиотека Semantic Release помогает настроить проект для прозрачной интеграции данной модели. Важно помнить о трактовке понятия deploy (развертывание). Это не всегда «что-то где-то запустить». Например, при разработке библиотеки, нет никакого запуска. В данном случае процесс развертывания означает выпуск новой версии библиотеки. Второй пункт не зависит от процесса CI, ведь проект развертывается по определенному расписанию. Например, ежедневно в 01:00. Третий пункт аналогичен первому, но с небольшими отличиями. Предположим, в репозитории у нас есть 2 основные ветки: develop и master. В develop содержатся самые последние изменения, а в master – только релизы версий. Если мы хотим развертывать только ветку master, то не нужно вызывать CD-задачу по слиянию в develop. Последний пункт – это сочетание подходов. Например, ветку develop можно развертывать по расписанию в среду разработки. А ветку master – в реальную среду по каждому слиянию Pull Request. Инструменты На рынке доступно множество решений по автоматизации процессов CI/CD. Ниже представлено несколько продуктов. Jenkins. Один из самых востребованных инструментов CI/CD в мире. Свою популярность он заслужил, благодаря политике открытого кода (open-source). То есть вам не нужно ни за что платить. В Jenkins вы можете императивно описывать конвейеры сборки с помощью Groovy. С одной стороны это достаточно гибкое решение, но с другой – требует более высокого уровня квалификации. GitHub Actions. Этот инструмент для CI/CD доступен для GitHub и GitHub Enterprise. В отличие от Jenkins, GitHub Actions предлагает декларативные сценарии сборки с YAML-конфигурацией. Кроме того, в данном решении доступна интеграция с различными системами обеспечения качества (например SonarCube). Таким образом, сборку можно описать в нескольких текстовых строках. GitLab CI. Во многом похож на GitHub Actions, но со своими особенностями. Например, GitLab CI может указывать на определенные тесты, вызывающие ошибку в сборке. Travis CI. Облачный CI/CD-сервис. Предлагает множество возможностей, не требующих сложных настроек. Например, шифрование данных, которые следует скрыть в публичном репозитории. Есть и приятный бонус в том, что Travis CI можно совершенно бесплатно использовать в публичных open-source проектах на GitHub, GitLab и BitBucket.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59