exam27 - stankin/inet-2022 GitHub Wiki

Билет 27

  1. Понятие виртуализации. Современные технологии виртуализации.

  2. Современные языковые средства и инструменты разработки серверной части веб-приложений.

◀️ Реферат к вопросам экзамена по дисциплине Интернет-технологии 1 курса магистратуры ▶️

Выполнили: Козарезов Д.В. ИДМ-22-03, Шевляков К.А. ИДМ-22-04, Крючков П.Р. ИДМ-22-05, Дорофеев М. Д. ИДМ-22-07, Демушкин А.С. ИДМ-22-08, Рябушев С.А. ИДМ-22-02

Понятие виртуализации. Современные технологии виртуализации.

Виртуализация

Виртуализация – это технология, которая позволяет предоставлять изолированные наборы вычислительных мощностей, абстрагировано от физического оборудования. Иными словами, с её помощью можно создавать отдельные, независимые друг от друга среды, которые используют мощности одного физического компьютера/сервера. Виртуальная машина может иметь любые характеристики (значения памяти, частоту процессора и др.), но в рамках ресурсов физического устройства. При этом она будет запускаться наподобие программы внутри основной операционной системы (она называется хост-система).

Виртуализация осуществляется с помощью специальной программы, которая называется гипервизор. Гипервизор является движущей силой концепции работы VPS и виртуализации, позволяя физическому хост-компьютеру управлять несколькими виртуальными машинами в качестве гостевых ОС, что в свою очередь помогает максимально эффективно использовать вычислительные ресурсы, такие как память, пропускная способность сети и количество циклов процессора. Количество ВМ, которые можно запустить, неограниченно. Самая важная особенность виртуализации в том, что гостевая операционная система думает, что работает на «аппаратной» платформе.

Виды виртуализации

  1. Оборудование

    1.1. Эмуляция — полная виртуализация (виртуализация всей платформы).

  2. Операционные системы

    2.1. Программная виртуализация — включает в себя динамическую трансляцию, паравиртуализацию и встроенную виртуализацию.

    2.2. Аппаратная виртуализация — виртуализация с поддержкой специальной процессорной архитектуры. В отличие от программной виртуализации, с помощью данной техники возможно использование изолированных гостевых систем, управляемых гипервизором напрямую.

    2.3. Виртуализация на уровне операционной системы — работа нескольких экземпляров пространства пользователя в рамках одной ОС.

  3. Программное обеспечение

    3.1. Виртуализация приложений — работа отдельных приложений в среде, отделённой от основной ОС. Эта концепция тесно связана с портативными приложениями.

    3.2. Виртуализация сервисов — эмуляция поведения системных компонентов, необходимых для запуска приложения в целях отладки и тестирования. Вместо виртуализации компонентов целиком, эта технология виртуализует только необходимые части.

  4. Память

    4.1. Виртуализация памяти — объединение оперативной памяти из различных ресурсов в единый массив.

    4.2. Виртуальная память — изоляция адресного пространства приложения от всего адресного пространства. Применяется во всех современных ОС.

  5. Системы хранения

    5.1. Виртуализация хранения данных — представление набора физических носителей в виде единого физического носителя. Включает в себя блочную и файловую виртуализацию.

    5.2. Распределённая файловая система — любая файловая система, которая позволяет получать доступ к файлам с нескольких устройств, с помощью компьютерной сети.

    5.3. Виртуальная файловая система — уровень абстракции поверх конкретной реализации файловой системы. Целью VFS является обеспечение единообразного доступа клиентских приложений к различным типам файловых систем.

    5.4. Гипервизор хранения — программа, которая управляет виртуализацией пространства для хранения данных и может объединять различные физические пространства в единый логический массив.

    5.5. Виртуализация устройств хранения данных — виртуализация жёсткого (логический диск) или оптического диска (например, DAEMON Tools).

  6. Базы данных

    6.1. Виртуализация данных — представление данных в абстрактном виде, независимо от нижележащих систем управления и хранения данных, а также их структуры. Это подход к унификации данных из нескольких источников на одном уровне, чтобы приложения, средства отчётности и конечные пользователи могли получать доступ к данным, не нуждаясь в подробных сведениях об исходных источниках, местоположениях и структурах данных.

  7. Сеть

    7.1. Виртуализация сети — процесс объединения аппаратных и программных сетевых ресурсов в единую виртуальную сеть. Бывает внешняя и внутренняя.

    7.2. Виртуальная частная сеть — обеспечение одного или нескольких сетевых соединений поверх другой сети.

Современные технологии виртуализации

Преимущества использования виртуализации

  1. Сокращение затрат на приобретение и поддержку оборудования.

В современных условиях практически в каждой компании всегда найдется один или два сервера имеющие несколько ролей, например, почтовый сервер, файловый сервер, сервер базы данных и т.д. Безусловно, на одной физической машине можно поднимать по несколько программных комплексов (серверов), выполняющих различные задачи. Но очень часто бывают ситуации, когда установка нового ПО требует независимой серверной единицы. В таком случае как раз и придет на выручку виртуальная машина с требуемой ОС. Сюда же можно отнести случаи, когда в сети необходимо иметь несколько независимых друг от друга виртуальных серверов со своим набором служб и своими характеристиками, которые должны существовать как независимые узлы сети. Типичный пример – это услуги VPS-хостинга.

  1. Сокращение серверного парка.

Преимущество виртуализации состоит в том, что можно значительно сократить количество физических ЭВМ. Например, вместо того чтобы запускать один сервер в одной компьютерной системе, можно создать пул виртуальных серверов в той же компьютерной системе, используя и возвращая серверы в пул по мере необходимости. Благодаря меньшему количеству базовых физических серверов можно освободить место в центре обработки данных и сэкономить деньги на электричестве, генераторах и охлаждающих устройствах.

  1. Сокращение штата IT-сотрудников.

На обслуживание меньшего количества физических ЭВМ требуется меньше людей. С точки зрения руководства компании, сокращение штата — это сокращение серьезной статьи расходов предприятия.

  1. Простота в обслуживании.

Добавить жесткий диск или расширить существующий, увеличить количество оперативной памяти, все это занимает определенное время в случае с физическим сервером. Отключение, отсоединение из стойки, подключение нового оборудования, включение – в случае использования виртуализации все эти действия опускаются, и операция сводится к нескольким щелчкам мыши или командам администратора.

  1. Клонирование и резервирование.

Еще одним плюсом виртуализации является простота клонирования виртуальных машин. Например, компания открывает новый офис. При этом серверная инфраструктура центрального офиса стандартизирована и представляет собой несколько серверов с одинаковыми настройками. Развертывание такой инфраструктуры сводится к простому копированию образов на сервер нового офиса, конфигурировании сетевого оборудования и изменению настроек в прикладном ПО.

Виртуализация вычислительных ресурсов

Первые системы виртуализации были реализованы в рамках операционных систем и позволяли создать виртуальные ПК параллельно с выполнением основных задач. Развитие данного направления привело к появлению отдельного класса программного обеспечения — гипервизоров. Гипервизор устанавливается напрямую на аппаратную платформу и представляет все доступные ресурсы: мегагерцы процессора, мегабайты оперативной памяти, гигабайты места хранения и пропускную полосу сети для большого количества виртуальных машин. Гипервизор не только создаёт эти ресурсы для каждой виртуальной машины, но и перераспределяет их между большим количеством потребителей, тем самым обеспечивая полный жизненный цикл виртуального сервера.

Основные решения для виртуализации вычислительных ресурсов

  • VMware vSphere.
  • Microsoft Windows Server.
  • Virtuozzo.
  • Citrix XenServer.
  • Oracle VM.
  • Red Hat Enterprise Virtualization.
  • Linux KVM.
  • Huawei FusionSphere.
  • Google Ganeti
  • Amazon EC2

Виртуализация систем хранения данных

Современные ИТ-архитектуры обязательно содержат подсистему хранения данных. Она может быть реализована несколькими способами — от хранения на вычислительном узле до устройств, выделенных исключительно под хранение. Кроме того, хранение может происходить на различных носителях: от шпиндельных дисков и лент до твердотельных накопителей. Система хранения также является неотъемлемой частью виртуальной инфраструктуры. Чтобы оптимизировать работу гипервизора с системой хранения, производители аппаратных СХД оснащают свои решения специализированными драйверами, которые позволяет перенести выполнение некоторых операций на СХД. Это заметно экономит вычислительные ресурсы. Но есть ещё один путь — использование виртуализированного хранилища, применяемого в гиперконвергентных инфраструктурах. Такое хранилище создается на базе тех же самых вычислительных узлов и использует серверные диски как часть единого хранилища. Это позволяет радикально сократить затраты на построение и обслуживание, выделить оптимизированные ресурсы хранения для каждой виртуальной машины. В дополнение, система виртуализации СХД сама строит отказоустойчивую схему хранения с балансировкой нагрузки в соответствии с политикой обслуживания для каждой виртуальной машины. Системы виртуализации СХД могут применяться как в масштабах ЦОД, так и при выполнении небольших локальных задач. Сами решения могут быть дополнениями к гипервизору или включаться в его состав по умолчанию. Все основные производители имеют в своём арсенале подобные решения.

Решения для виртуализации СХД

  • VMware Virtual SAN.
  • Microsoft Storage Spaces, входящий в Microsoft Windows Server.
  • Virtuozzo Storage.
  • Red Hat Ceph.
  • StarWind Virtual SAN.
  • Huawei FusionStorage.
  • EMC ScaleIODataCore.
  • Virtual SAN.

Виртуализация сети

Чтобы построить полностью программно-определяемый ЦОД, необходимо иметь возможность не только виртуализировать стандартные устройства для сервера, но и гибко управлять конфигурацией сетевой топологии и правил межсетевых экранов. Для этого существует отдельный класс продуктов в среде виртуализации — решения для виртуализации сети. В той или иной мере каждый гипервизор виртуализирует сеть, так как несколько физических сетевых портов могут делиться между десятками виртуальных машин. Но для обеспечения более гибкого управления сетевыми параметрами на основе политик безопасности и правил межсетевых экранов, а также для снижения паразитного трафика в сети и уменьшения загрузки аппаратного сетевого оборудования необходимы более продвинутые инструменты создания виртуальной сети. На данный момент на рынке представлено ограниченное количество решений, позволяющих виртуализировать сразу все аспекты сети — это:

  • VMware NSX.
  • Microsoft Windows Server 2016 Datacenter вместе с System Center.
  • Cisco.
  • Huawei.

Виртуализация рабочих мест

Важнейшая область применения технологий виртуализации — создание рабочих мест пользователей, когда основная рабочая нагрузка приходится на общий сервер, а пользователь видит на экране устройства доступа только изображение происходящего в виртуальном ПК. Эта технология получила название VDI (Virtual Desktop Infrastructure). Виртуальные рабочие места позволяют выделять для каждого пользователя нужные именно ему рабочие инструменты, рационально распределять лицензии на программное обеспечение, предоставлять доступ к рабочему пространству со стационарных и мобильных устройств, обеспечивать удобное администрирование и соответствие политикам безопасности. Если в компании необходимо использовать стационарные ПК или ноутбуки для удаленной работы, технологии VDI позволяют доставлять на устройства сотрудников только рабочие приложения, находящиеся на общем сервере, и не создавать полнофункциональные удаленные рабочие столы.

Решения для VDI

  • VMware Horizon.
  • Citrix XenApp и XenDesktop.
  • Parallels VDI и RAS.
  • Huawei FusionAccess.

Управление и автоматизация виртуализации

Дальнейшее развитие технологий виртуализации и облачных сервисов привело к созданию новых ИТ-инфраструктур: гибридных и гиперконвергентных. Эти инфраструктуры полностью программно-определяемые и имеют глубокую интеграцию с частными или публичными облаками. Для управления такими инфраструктурами необходимы мощные инструменты, которые, с одной стороны, будут учитывать специфику установленного физического оборудования, с другой — иметь возможность быстро предоставлять ресурсы для нужд бизнеса. И, наконец, быть прозрачными и защищёнными. Для этих целей и служат системы управления и автоматизации виртуализацией.

Решения для автоматизации виртуализацией

  • VMware vCenter и vRealize.
  • Microsoft System Center.
  • Red Hat Enterprise Virtualization Manager.
  • Citrix Systems XenCenter.
  • SolarWinds Virtualization Manager.
  • DELL Foglight.
  • Пакет vRealize Suite, представляет собой платформу для управления гибридным облаком на решениях VMware.

Современные языковые средства и инструменты разработки серверной части веб-приложений

Веб-приложение — клиент-серверное приложение, где клиентом выступает браузер, а сервером — веб-сервер. Работа веб-приложения происходит между сервером и клиентом, хранение данных осуществляется на сервере, обмен информацией происходит по сети. Преимуществом веб-приложений является то, что клиенты не зависят от операционной системы пользователя, поэтому веб-приложения являются межплатформенными сервисами. Инструментальные средства создания веб-приложений подразделяются на языковые средства и программные средства создания веб-приложений.

Архитектура клиент-сервер

Серверные языки необходимы для того, чтобы пользователь мог получить результат своих изменений на сайте. Когда пользователь переходит на какую-нибудь Интернет-страницу, то этот переход вначале обрабатывается на сервере, то есть выполняются все необходимые запрограммированные действия, связанные с этой страницей, и только затем возвращается к пользователю итоговым файлом. Этот файл может быть написан на любом языке программирования, предназначенном для веб-приложения: HTML, PHP, ASP, Perl, SSI, XML, DHTML, XHTML, - однако необходимо учитывать, что всё зависит от работы сервера и версии используемого языка программирования. Преимущество серверных языков заключается в том, что они поддерживают работу с системой управления базами данных (или СУБД) - сервером, где упорядоченно хранится информация, которая используется при необходимости. Популярными среди систем управления базами данных являются: Microsoft SQL Server; Microsoft SQL Server Express; mSQL; MySQL; Firebird; IBM DB2; IBM DB2 Express-C; Oracle; SQLite. Серверные языки не имеют недостатки, так как при правильном выборе ядра и при не перенасыщения различными утилитами веб-приложений, то работе на сайте ничего не угрожает. Но необходимо изначально правильно продумать структуры данных в БД, так как при имении структуры данных, нужно изменять и само приложение.

Некоторые инструменты разработки серверной части

  • Языки программирования: JavaScript, Python, Ruby, Java, C#, Go, PHP;
  • Среда разработки, например: Python - PyCharm, C# - VisualStudio, JavaScript - WebStorm;
  • Система управления версиями: Git, Mercurial, BitKeeper. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.
  • Backend-тестирование: JUnit – тестирование классов проекта, MockMvc – тестирование REST-контроллеров, Rest Assured – тестирование web-сервисов. Backend-тестирование - это тип тестирования, который проверяет уровень приложений и базы данных 3-уровневой архитектуры. Оно проверяет серверную часть или базу данных. Базы данных проверяются на наличие свойств ACID, операций CRUD, их схемы, соответствия бизнес-правилам. Базы данных также проверяются на безопасность и производительность. Производится проверка целостности данных, проверка достоверности данных, тестирование функций, процедур и триггеров.
  • Развёртывание: Docker – средство контейнеризации приложений, Kubernetes – средство оркестровки приложений. Контейнеризация - метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя вместо одного. Эти экземпляры (обычно называемые контейнерами или зонами) с точки зрения выполняемых в них процессов идентичны отдельному экземпляру операционной системы.
  • Средства планирования разработки: Jira, Asana, YouGile;
  • Паттерны: MVC (Model-View-Controller) - это схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо. Модель предоставляет данные и реагирует на команды контроллера, изменяя своё состояние, представление отвечает за отображение данных модели пользователю, реагируя на изменения модели, контроллер интерпретирует действия пользователя, оповещая модель о необходимости изменений. MVVM (Model-View-ViewModel) Используется для разделения модели и её представления, что необходимо для их изменения отдельно друг от друга. Например, разработчик задаёт логику работы с данными, а дизайнер работает с пользовательским интерфейсом. MVP (Model-View-Presenter) - основан на MVC, но вместо контроллера имеет представителя, задачей которого является реализация взаимодействия между моделью и видом и содержать в себе всю логику представления данных о предметной области.

ИСТОЧНИКИ

  1. 📃 Википедия. Статья "Виртуализация".

  2. 📃 Rubytech. Статья "Технологии виртуализации".

  3. 💬 Habr. Статья "Анализ современных технологий виртуализации".

  4. 📃 Статья "Инструментальные средства создания веб-приложений на примере образовательного портала".