По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Телефонная станция Cisco Unified Communications Manager (далее CUCM) является системой обработки вызовов на базе программного обеспечения, разработанного компанией Cisco Systems. Первая версия CUCM была анонсирована в 1997 году, под названием CallManager 1.0. На момент написания статьи последняя и самая актуальная версия - CUCM 10.5. CUCM работает с такими элементами сетей передачи голоса поверх протокола IP (VoIP) как: шлюзы, телефонные аппараты, мосты для конференцсвязи, голосовая почта, видеоконференцсвязью и многими другими. Чаще всего, для работы с оконечными устройствами CUCM использует собственный протокол сигнализации, разработанный компанией Cisco Systems под названием Skinny Client Control Protocol (SCCP). Помимо собственных разработок, CUCM поддерживает и открытые стандарты, такие как H.323, Media Gateway Control Protocol (MGCP) или Session Initiation Protocol (SIP). Схема работы CUCM приведена рисунке ниже: На рисунке схематично обозначена схема работы CUCM в рамках корпоративной сети. Пунктирными линиями обозначены Real-time Transport Protocol (RTP) потоки, которые переносят в поле информационной (полезной) нагрузки медиа – данные разговора. Особое внимание следует обратить на расположение линий направления RTP – они проходят напрямую от телефонного аппарата до телефонного аппарата. Телефонная станция CUCM контролирует телефонную сигнализацию, на данном примере, по протоколам SIP/SCCP. Это означает, что если во время разговора CUCM перестанет работать, разговор между абонентами будет продолжен, но такие функции как удержание, трансфер, отбой вызова и другие функции управления вызовом будут не доступны. Цифровая телефонная станция CUCM выполнена на базе операционной системы Linux с закрытыми правами администратора и с предустановленной базой данных IBM Informix. В совокупности, такой вид операционной системы носит название VOS (voice operating system). Продукт устанавливается пакетом, сначала VOS, а затем само программное обеспечение. Интерфейс управления цифровой телефонной станцией CUCM выполнен как WEB – приложение, доступное через протокол HyperText Transfer Protocol (HTTP). Интерфейс имеет удобную навигацию по вкладкам, пять разных Graphical user interface (GUI) для сегментации функций администрирования и возможность предоставлять уровни доступа администраторам. Основной интерфейс проиллюстрирован на рисунке: Как было сказано ранее, CUCM имеет пять различных панелей администрирования: Cisco Unified CM Administration Cisco Unified Reporting Disaster Recovery System Cisco Unified Serviceability Cisco Unified OS Administration Интерфейс Cisco Unified CM Administration – основной интерфейс администратора. Здесь можно настраивать системные настройки, параметры маршрутизации вызовов, настройка медиа – ресурсов, таких как Music On Hold (MOH), параметров интеграции с другими продуктами компании Cisco Systems, конфигурацию телефонных аппаратов, шлюзов, «привратников» (gatekeepers), администрирование групп пользователей и многие другие настройки. Интерфейс Cisco Unified Reporting обеспечивает доступ к отчетам о работе телефонной станции. Данная консоль отчетности собирает данные с различных системных журналов и предоставляет эту информацию в просто для администратора виде. Интерфейс Disaster Recovery System (DRS) создан для резервирования конфигурации, или как принято говорить «бэкапа» телефонной станции CUCM. Бэкап может происходить как локально на сервер, так и на удаленные площадки по протоколу SSH File Transfer Protocol (SFTP). Графический интерфейс Cisco Unified Serviceability предоставляет наблюдение и контроль работоспособности телефонной станции, включая в себя такие настройки как конфигурацию опций оповещения о проблемах в работе CUCM, систему трассировки для обнаружения причин проблем, богатое меню инструментов, в котором можно смотреть отчеты Call Detail Record (CDR). Данный интерфейс позволяет настроить параметры Simple Network Management Protocol (SNMP), созданного для управления и контроля. Последним в списке интерфейсов значится Cisco Unified OS Administration. Он предназначен для мониторинга аппаратной платформы и различных системных статистических данных, таких как: загруженность центрального процессора, свободного пространства жестких дисков, мониторинга системного времени, информации об IP – адресах, работы в рамках протокола Internet Control Message Protocol (ICMP). Еще один немаловажный интерфейс, это Command Line Interface (CLI) – консоль. Он удобен для перезагрузки сервиса, например, при недоступности основного графического интерфейса через порт 8080. Cisco UCM - решение для крупного бизнеса или государственного учреждения Телефонная станция CUCM это гибкое и масштабируемое решение. Одним из важных преимуществ является возможность кластеризации серверов, или другими словами объединения. В общем случае, в одном кластере может работать до 20 серверов. Среди них только 8 серверов занимаются обработкой вызовов, остальные, это дополнительные сервера предназначенные для расширения функционала кластера (сервисы музыка на удержании, Trivial File Transfer Protocol (TFTP) сервер и многие другие). Работая в кластере, сервера CUCM могут работать с 30 000 абонентами. При работе в кластере различают два типа серверов – «паблишер» (публикатор) и «сабскрайбер» (подписчики). В данной модели один сервер, который является «паблишером» дублирует базу данных на все остальные сервера, которые являются «сабскрайберами. Схема работы кластера показана на рисунке: Большое преимущество IP PBX CUCM – это возможность развернуть сервер в виртуальной среде. Системы виртуализации появились после того, как соотношение эффективности использования одного аппаратного сервера к стоимости данного сервера, с каждым днем стремилось к меньшему и меньшему значению. Виртуализация позволяет делить аппаратные ресурсы сервера между различными приложениями. Например, предприятие покупает аппаратный сервер, для конкретной цели. Системный администратор данной организации устанавливает на него операционную систему на базе Windows, а затем, приложение, для которого был куплен этот сервер. Спустя некоторое время, у организации появилось требование для внедрения в корпоративный контур бизнес – приложений, которые работают на базе Linux. За неимением систем виртуализации, компания сталкивается с новой проблемой – покупкой нового сервера, по причине того, что разнородные операционные системы не смогут существовать на одном и том же аппаратном ресурсе. При наличии системы виртуализации, компания может установить специальное программное обеспечение «гипервизор» на имеющийся Windows сервер. Гипервизор позволит изолировать друг от друга различные операционные системы на одном и том же сервере, обеспечит безопасность, защиту, целостность данных, предоставит централизованное и удобное управление виртуальным серверным ресурсом компании, а так же множество встроенных средств и инструментов автоматизации, предназначенных для автоматического резервирования данных и конфигурации серверов. Предприятия решит поставленную задачу, оптимизировав расходы на аппаратные сервера. Преимущества Выделим основные конкурентные преимущества систем виртуализации Экономия расходов предприятия на покупке дополнительного сервера. Экономия места в телекоммуникационной стойке. Снижение тепловыделения и электропотребления. «Бесшовное» обновление операционной системы сервера, позволяющее не производить перезагрузку и не останавливать работу приложения. Централизация управления и администрирования серверов. Гибкая настройка конфигурации, автоматического резервирования. Создание отказоустойчивости внутренними средствами программного обеспечения гипервизора. Общий принцип работы систем виртуализации проиллюстрирован на рисунке: Виртуализация CUCM Ведущие производители систем виртуализации, это такие компании как VMware, Hyper-V, Xen и Citrix Systems.
img
Как насчет того, чтобы немного поучиться? Поговорим о том, что мы подготовили для вас в 14-дневном курсе по IP - АТС Asterisk. Кстати, на текущий момент, курс прошли уже
img
Процесс анализа программного кода должен быть максимально автоматизирован. Когда вы создаете запрос на включение изменений, как минимум, вам нужно запустить модульные тесты и статический анализ программного кода в функциональной ветке. Средства автоматизации могут многое рассказать о качестве кода: метрики, покрытие кода модульными тестами, обнаружение дублированных строк и т.д. Однако есть как минимум 50 вещей, которые нельзя проверить автоматически. Они нуждаются во внимательном взгляде опытного проверяющего (это дает нам хоть какую-то надежду на то, что роботы не заменят разработчиков в ближайшем будущем). Требования Программный код реализует все функциональные требования, которые необходимы заказчику? Программный код удовлетворяет всем нефункциональным требованиям, таким как производительность и безопасность? Если нефункциональные требования не были упомянуты заказчиком, то этот вопрос необходимо уточнить у проектировщика или у самого заказчика.  Условия сопровождения Помещены ли все интерфейсы, классы и т.д. на соответствующий прикладной уровень в соответствии с архитектурой  Onion/Clean ? Не изобретаете ли вы колесо, когда пишете программный код? Можно ли его заменить чем-то, что уже существует и что предоставляет какая-либо сторонняя библиотека?  Есть ли уже реализованная логика или какие-то ее фрагменты в кодовой базе? Правильно ли была выбрана область жизненного цикла для интерфейса и реализации в контейнере внедрения зависимостей? Являются ли реализованные функции детерминированными (то есть всегда ли они выдают один и тот же результат для одних и тех же входных данных)? Все ли зависимости явно внедряются через конструктор типов? Есть ли сильная связанность между классами, которая может затруднить повторное использование кода? Используются ли  объекты-значения вместо элементарных типов данных для того, чтобы избежать проблемы одержимости элементарными типами? Соответствуют ли реализованные компоненты, такие как функции, классы, интерфейсы и модули,  принципу единственной обязанностей ? Расширяются ли существующие функциональные возможности при помощи декораторов, технологий аспектно-ориентированного программирования (принципа открытия-закрытия) или они модифицируются на месте? Правильно ли реализованы механизмы синхронизации потоков при доступе к объектам-одиночкам в веб-приложениях? Используются ли по возможности  неизменяемые типы данных вместо изменяемых для того, чтобы избежать побочных эффектов? Добавлена ли функция ведения журнала с верными  уровнями ведения протокола в основные места кода, которые требуют отслеживания? Производительность Правильно ли были выбраны  структуры данных ? Например, используется ли структура Hashtable вместо массива, когда нужно часто искать значения, для того, чтобы избежать линейного поиска? Распараллелены ли длительные операции между всеми доступными ядрами для того, чтобы использовать ресурсы компьютера максимально эффективного? Выполняет ли программный код большое количестве  операций по выделению памяти для объектов в куче, оказывая тем самым дополнительную нагрузку на программу сборки мусора? Кэшируются ли данные, которые были считаны из базы данных, локально или в удаленном кэше? Сколько раз текущий код обращается к базе данных? Возможно стоит получить все данные за одно или несколько обращений? Выполняет ли код все обращения к базе данных, ввод-вывод и другие блокирующие вызовы асинхронно? Использует ли код  пул потоков по максимуму вместо того, чтобы создавать новые потоки? Правильно ли выбран баланс между  нормализацией и  денормализацией при создании дополнительных таблиц базы данных? Правильно ли добавляются или исправляются индексы, если запрос на включение изменений содержит новые SQL-запросы? Возникает ли  проблема с N+1 запросами при извлечении данных из базы данных при помощи фреймворка ORM? Установлен ли правильный уровень изоляции транзакций в хранимых процедурах? Возвращают ли SQL-запросы избыточные данные из базы данных, которые не требуются для кода приложения? Используется ли что-то вроде  SELECT * или что-то подобное? Модульное и интеграционное тестирование Полностью ли модульные тесты покрывают дополнительную логику? При появлении исправлений в логике, появляются ли изменения в соответствующем модульном тесте? Всегда ли все реализованные модульные или другие виды тестов ведут себя детерминировано? Например, приостанавливают ли они выполнение потока на какой-то определенный период времени перед утверждением (что по своей сути является ошибочным шаблоном)?  Все ли модульные тесты реализованы в соответствии с принципами  F.I.R.S.T. ? Есть ли какие-либо признаки проблем в модульном тестировании, такие как проблемы с  логикой проверки условий ,  рулеткой с утверждениями ,  дублированием утверждений и другие? Добавлен ли интеграционный тест, как минимум, для happy-path-сценария (сценария счастливого пути) реализованной функции? Все ли зависимости тестируемого объекта имитируются для того, чтобы модульный тест случайно не превратился в интеграционный и не выполнился быстрее положенного? Изолированы ли модульные и интеграционные тесты друг от друга? Конечные точки API Выбираются ли HTTP-команды, такие как  GET, POST, PUT, DELETE и другие, в соответствии с действием их конечной точки? Отвечает ли каждая конечная точка API за выполнение лишь одной бизнес-операции? Или все же нескольких? Возвращает ли конечная точка API правильный код состояния? Например, не возвращает ли она код 401 вместо 500 при несанкционированном запросе? Сжимаются ли объемные ответы перед их отправкой вызывающей стороне? Защищены ли конечные точки API политиками аутентификации и авторизации? Позволяет ли API, который возвращает большой список объектов, фильтровать его и разбивать на страницы? Является ли конечная точка API GET идемпотентной? Используются ли имена существительные вместо глаголов в именах конечных точек API? Критические изменения Имеются ли в конечной точке API такие критические изменения, как переименование API, удаление или переименование его параметров? Имеются ли критические изменения в полезных данных сообщения (в случае, если используется брокер сообщений), например, удаление или переименование его свойств? Повлияют ли такие изменения в схеме базы данных, как удаление столбцов или таблиц, на другие службы системы? Системная среда Насколько загружен ЦП и сколько оперативной памяти потребляет код при выполнении запроса на включение изменений? Будет ли в средах, в которых будет развернут код (среда тестирования, среда приёмочного пользовательского тестирования, производственная среда), достаточно мощный процессор и достаточный объем оперативной памяти для эффективного выполнения кода? Будет ли реализованная логика, алгоритмы, структуры данных и т.д. работать достаточно быстро на большом наборе данных, который может быть в производственной среде? Документация Была ли изменена документация для того, чтобы отразить новые изменения программного кода (документация API, документация по структуре, проектная документация)? Создается ли тикет  технических недоработок , если запрос на внесение изменений содержит неэффективный или «грязный» код, который сейчас невозможно перестроить из-за недостаточного количества времени? Заключение Количество пунктов, на которых проверяющий должен заострить свое внимание, зависит от конкретного проекта и даже от конкретного запроса на внесение изменений. Ваш с коллегами мозговой штурм (если вы примите во внимание вышеприведенные пункты) может значительно снизить риск того, что вы забудете о чем-то важно при анализе программного кода.   
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59