Инстанс — понятие в информатике и виртуализации¶
Инстанс (от англ. instance — экземпляр, образец) — термин информатики, обозначающий конкретный, работающий экземпляр программного объекта, службы или вычислительного ресурса. В зависимости от контекста инстансом называют отдельный запущенный процесс программы, экземпляр объекта в объектно-ориентированном программировании, виртуальную машину в облачной инфраструктуре или копию базы данных. Общее смысловое ядро понятия — противопоставление абстрактного определения (класс, шаблон, образ) конкретной реализации, существующей в определённый момент времени.
¶Происхождение термина
Слово instance пришло в русский технический язык из английского в конце 1990-х — начале 2000-х годов вместе с распространением объектно-ориентированного программирования и клиент-серверных технологий. В англоязычной литературе по программированию термин закрепился раньше: в работах по объектно-ориентированному проектированию 1980-х годов «instance» обозначал экземпляр класса. Русскоязычные переводы технической документации закрепили кальку «инстанс», которая постепенно вытеснила более ранние кальки «экземпляр» и «образец» в профессиональном жаргоне разработчиков и системных администраторов.
¶Основные значения
¶В объектно-ориентированном программировании
В объектно-ориентированном программировании инстанс — это конкретный объект, созданный на основе класса. Класс задаёт структуру (поля) и поведение (методы), а инстанс хранит собственные значения полей. Например, класс Пользователь может иметь поля имя и email; каждый созданный объект с конкретными значениями этих полей является отдельным инстансом. Создание инстанса выполняется конструктором класса. Терминология используется в языках Java, C#, Python, C++, JavaScript и многих других.
¶В серверном программировании
В контексте серверных приложений инстанс — это отдельный запущенный экземпляр службы или приложения. Один и тот же программный продукт может работать в виде нескольких инстансов одновременно: на разных серверах, на разных портах, с разными конфигурациями. Например, в документации Microsoft SQL Server термин «инстанс» обозначает отдельную копию сервера СУБД, работающую на одной машине параллельно с другими копиями. В веб-сервере Apache или Nginx инстансом называют отдельный запущенный процесс с собственным набором настроек.
¶В облачных вычислениях и виртуализации
В облачной инфраструктуре инстанс — это виртуальная машина или контейнер, созданный из образа (image). Образ содержит операционную систему, установленное ПО и конфигурацию; инстанс — работающий экземпляр, созданный на его основе, с собственными ресурсами (процессор, память, диск) и собственной сетевой идентичностью. Пользователь облачного сервиса оплачивает не образ, а запущенные инстансы. Термин широко используется в документации Amazon Web Services (сервис EC2), Яндекс Облако, Selectel, Timeweb Cloud и других провайдеров.
¶В базах данных
В СУБД инстансом называют работающий экземпляр сервера базы данных — совокупность процессов и структур памяти, обслуживающих доступ к данным. Понятие «инстанс» отделяется от понятия «база данных»: инстанс — это программа в состоянии исполнения, база данных — это данные, которые он хранит. Один инстанс может обслуживать несколько баз данных. Термин активно используется в документации Oracle Database, PostgreSQL, Microsoft SQL Server.
¶В сетевых технологиях
В сетевом оборудовании и протоколах маршрутизации инстансом называют логический экземпляр таблицы маршрутизации или виртуальной сети. В MPLS и VPN-решениях инстансы VRF (Virtual Routing and Forwarding) позволяют одному физическому маршрутизатору обслуживать несколько независимых маршрутизационных таблиц. В протоколах типа BGP инстанс — отдельный запущенный экземпляр демона с собственной конфигурацией.
¶Типичные операции с инстансами
Основные действия, описываемые в документации облачных и серверных платформ:
- создание (create / launch) — развёртывание нового инстанса из образа или шаблона;
- остановка (stop) — приостановка работы с сохранением состояния и дисков;
- запуск (start) — возобновление работы остановленного инстанса;
- перезапуск (reboot) — перезагрузка без изменения состояния дисков;
- удаление (terminate / delete) — полное уничтожение инстанса вместе с ресурсами;
- масштабирование (scale) — изменение выделенных ресурсов или создание дополнительных инстансов.
¶Инстанс и образ
Ключевое различие, подчёркиваемое в технической документации: образ (image, шаблон, template) — пассивный набор данных, описывающий, каким должен быть инстанс; инстанс — активная сущность, работающая в определённый момент времени. Из одного образа может быть развёрнуто сколько угодно инстансов, и после создания они развиваются независимо: обновления, конфигурация и данные одного инстанса не затрагивают другие.
¶Смежные термины
С понятием инстанса тесно связаны понятия «кластер» (группа инстансов, работающих совместно), «реплика» (копия данных, обслуживаемая отдельным инстансом), «окружение» (environment — набор инстансов, составляющих единый рабочий контур, например production, staging, development) и «мультитенантность» (обслуживание нескольких клиентов одним инстансом).
¶Источники
- Герберт Шилдт. «Java. Полное руководство»
- Документация Amazon Web Services (AWS EC2)
- Документация Microsoft SQL Server
- Документация PostgreSQL
- Книги серии «О’Райли» по виртуализации и облачным вычислениям
