Что такое Репозиторий?
- Категория: Что такое?
- – Автор: Игорь (Администратор)
Если вы общаетесь с людьми, которые пишут программы или используют Unix/Linux системы, то вы просто не могли не слышать такое слово как Репозиторий. Просто потому что в нынешнее время это уже скорее обыденность, чем эксклюзив.
О том, что значит это слово и зачем репозитории нужны, и пойдёт речь в данном обзоре.
Репозиторий это
Репозиторий, репозитарий (repository - хранилище) - это, в общем смысле, место, где хранятся и поддерживаются какие-либо данные. Самый банальный пример - это библиотека с книгами. Вы в любой момент можете прийти и получить нужную вам книгу. При этом в самой библиотеке книги хранят специальным образом, а не сваливают в одну кучу.
Примечание: Чаще всего используют слово репозитОрий, но и репозитАрий также встречается.
Под репозиторием в ИТ обычно подразумевают место хранения и контроля версий программного кода. Например, такие системы как SVN (Subversion) и Git. Тем не менее, нужно понимать, что термин репозиторий может использоваться в более широком смысле. Например, в Unix/Linux системах (Ubuntu, Debian, Fedora, openSUSE, CentOS и т.п.) под репозиторием также подразумевают внешние хранилища с инсталляционными файлами (по сути, адреса серверов в интернете, с которых можно быстро скачать нужные программы и библиотеки).
Виды репозиториев программного кода:
1. Локальный. В данном случае репозиторий расположен прямо на том компьютере, где автор пишет свои программы.
2. Централизованный. Данный вид подразумевает, что репозиторий это отдельный сервер, а остальные к нему подключаются.
3. Распределённый. Это гибридный вариант локального и централизованного видов репозитория. Задача такого подхода в том, чтобы уменьшить нагрузку в сети и упростить жизнь авторам, в случае если программу пишут несколько или много людей.
Основная суть. У каждого автора существует свой локальный репозиторий, в который он активно (ну или как получается) сохраняет свои "поделки". В какой-то момент времени (много правок было внесено, появился доступ к интернету и т.п.) автор синхронизирует локальный репозиторий с централизованным. В такой ситуации меньше нагрузка на сервер (правки синхронизируются периодически, а не каждый раз) и меньше времени тратится на исправление недочётов при внесении несколькими авторами правок в общий код (правда, от практики и подхода зависит, но всё же).
Абстрактный пример для понимания. Допустим, Коле и Пете нужно набрать какой-то текст. При этом сложность в том, что часть текста пересекается. Скажем, Коля пишет введение и часть середины, а Петя вторую часть середины и оставшееся.
Как подсказывает логика, должно быть так, что Коля вначале пишет свою часть текста, а потом уже Петя его дописывает. Но в области программирования такое не всегда возможно. Чаще всего Коля и Петя пишут одновременно свой текст. Соответственно, существенно проще будет кому-то из них корректировать свою часть текста, если другая часть середины будет уже полностью написана, чем в ситуации, когда середина текста будет кусками редактироваться в стиле "Коля увидел первую фразу Пети и начал писать, через 5 минут посмотрел текст, а Петя уже поменял фразу, в свою очередь Петя посмотрел написанное Колей и ещё раз решил переформулировать фразу, о чём Коля узнает также минут через 5, и так до бесконечности".
Зачем нужны репозитории в ИТ?
Если говорить лаконично, то репозитории нужны в ИТ для сохранности (надёжности, целостности), управляемости и доступности данных (как минимум). Уже предчувствую, что читателю будет недостаточно этого небольшого определения, поэтому рассмотрим моменты по пунктам.
Пожалуй, самое первое и очевидное это доступность данных. Смысл элементарен. Существует некое хранилище (или несколько), откуда вы всегда можете достать нужные вам данные. Банальный пример это репозитарий GitHub, в котором хранятся тысячи разнообразных opensource проектов (программы с открытым исходным кодом). Ну или тот же пример с Unix/Linux системами, где достаточно добавить ссылку на репозитарий и можно скачивать нужные вам установочные пакеты (нет необходимости таскать с собой кучу дистрибутивов, достаточно списка репозиториев).
Кстати, обзор в тему Понятие бесплатного программного обеспечения (Freeware).
Второе это сохранность (надёжность, целостность). Вы когда-нибудь проверяли хэш сумму файла, скажем, по алгоритму md5? И тут вполне ожидаемой реакцией читателя будет вопрос "Что за набор слов???". А ведь это один из давно известных механизмов, который позволяет проверить целостность файлов (текстов). Собственно, этим и тому подобными вещами занимается репозиторий - решает задачу "чтобы надёжно хранилось".
Третье это управляемость. В частности, тот самый пример про Колю и Петю. Только теперь представьте, что этих людей тысячи и больше. Если в репозитарии не будет механизма для управления, то подобное легко может превратиться в хаос. Иное дело, что необязательно должен быть один репозиторий для всего. В тех же Unix/Linux системах много разных репозиториев (и под разные виды ОС) и это удобно. Не говоря уже о том, что конкуренция позволяет двигаться вперёд, а не болтаться на одном месте, как это происходит при монополиях, но это уже оффтопик.
Суммируя вышесказанное, появление репозиториев это вполне логичное явление, учитывая скорость развития области информационных технологий. Банальный пример, в нынешнее время ни один обычный пользовательский компьютер просто не сможет уместить в себе "интернет". Это раньше можно было, скажем, представить себе CD/DVD с полным набором нужных программ, сейчас же даже 4 Гб у DVD это крайне небольшой объём (даже максимальный Blu-Ray с 128 Гб это максимум небольшая коллекция фильмов).
Так же вам может быть интересен обзор Что такое MVP (минимальный продукт)?
Понравилась заметка? Тогда время подписываться в социальных сетях и делать репосты!
☕ Понравился обзор? Поделитесь с друзьями!