Комментарии 46
Мне кажется, главный урок, который следовало/следует усвоить из этой истории — никогда не отдавать ничего критичного неконтролируемым тобой людям.
И свой репозиторий на своём сервере уж точно обошёлся бы дешевле, чем день простоя команды.
А свои репозитории на своих серверах за все эти годы точно обошлись бы сильно дороже, чем день простоя. Притом, что свои сервера совсем не гарантируют отсутствие простоев.
Ну банально — разбирательства с гитхабом могли затянуться на неопределённый срок. Здесь на Хабре достаточно примеров, как гитхаб блокировал репозитории просто потому что «они так решили». А ещё у них может случиться любая авария, утечка данных или они просто могут закрыться.
При этом шансов отсудить у гитхаба фактическую стоимость простоя бизнеса, в общем-то, не существует. Это же касается и Амазона «на котором всё крутится» и много кого ещё.
При этом имеется вполне достаточно локальных инструментов — тот же Gitlab, Phabricator, Gitea и т.д., с которыми вы не будете ограничены ни смехотворными 100гб на репозиторий, сможете делать бэкапы по любой удобной вам схеме, можете держать хоть кластер dev-серверов.
А также вы сможете в любой момент проверить фактическую работоспособность этих бэкапов, а в случае сбоя — у вас будут ваши люди, которые будут чинить этот сбой, а не безликий баннер на сайте «у нас технические проблемы, но мы уже знаем и наши инженеры работают над этим».
Кто мешает сделать зеркало на свои сервера?
GitHub берет на себя инфраструктуру и обслуживание, а бекапы никто не отменял.
Все же сейчас облака — это стандарт де факто, строить свои датацентры желающих мало.
Ну и 100Гб на репозиторий — это вообще то много, git на такое на самом деле не особо рассчитан. То есть мы объективно работали неправильно, и этот случай помог нам пересмотреть свои подходы.
Я, например, один из рабочих продуктов, разметил в Gilab, Github, Bitbucket и локальном репозитории. Это даёт мне возможность работать с продуктом из разных мест. Я просто читаю все репозитории и пишу тоже во все. Если один из ресурсов недоступен, то на него изменения прилетят в следующий раз. Во всех местах хранятся все ветки и все коммиты. В любой момент можно залить на очередной репозиторий и в нём окажется все, что есть в остальных.
На счёт бинарных данных, хорошо заметили. В проекте они тоже есть, но обновляются крайне редко. Хотя, урок для себя из статьи я вынес по данному моменту.
Поставил простой обычный NAS от Synology, держу всё это дело там и вообще ни о каких «планах», ограничениях, подписках и прочей ерунде не думаю.
Да, когда-то и у нас было что-то подобное. Просто для разных масштабов нужны разные решения.
У меня NAS для разработчиков, а для пользователей, разумеется, обычная production база данных в дата-центре. А вы попробуйте покритиковать исходную идею. Да, NAS для разработчиков из десятков городов. А в чём, собственно, проблема? Назовите хотя бы две штуки.
И при любых обстоятельствах, все наше добро на один NAS ну вот никак не поместится.
Я не буду ввязываться в дискуссию. Мне достаточно аргумента про «бутылочное горлышко».
Разумеется. Ведь достаточно обозвать оппонента «ретроградом», а потом ещё и приписать ему то, что он не говорил.
Можно, конечно, ставить генераторы и резервные каналы связи. Только нужно ли?
Ну, ваша статья ровно об этом: «отключили интернет или электричество» или «закрыли доступ к репозиторию» — одного уровня проблемы. А они случаются и на вашей стороне, на стороне поставщиков — это всё неизбежно, и сложно сказать, что чаще бывает.
И при любых обстоятельствах, все наше добро на один NAS ну вот никак не поместится.
Да, пожалуй, ваши объёмы превосходят мои фантазии. Ну что ж.
Что-то мне подсказывает, что при их масштабах бедствия, обычный NAS уже тянет за собой необоснованно большие риски. И хочется уже делать как-то более по уму — хотя бы пару серверов, мастер-слейв с переключением, нормальный мониторинг этого добра, и прочие элементы собственной инфраструктуры. Не очень понимаю, что помешало это поднять.
Серверная конечна по определению. И есть 3 бесконечные вещи — Вселенная, человеческая глупость, Амазон (С).
Низконагруженное выгоднее брать под ключ. Там получится «раз в 20 дороже» — $100 вместо $5, но зато все из коробки.
Высоконагруженное обычно лучше запилить свое, получится и дешевле, и можем сделать более кастомно. Там еще очень распространенный кейс: пользователи проснулись, надо в 3 раза больше серверов. Уснули — в 3 раза меньше. Или какой-то экшен в игре, то же самое. В Амазоне мы можем так сделать, у себя пришлось бы держать запас под максимальную нагрузку.
Подождём ответа от s_shestakov, думаю, что просто решили воспользоваться моментом и привести репу в порядок.
думаю, что просто решили воспользоваться моментом и привести репу в порядок.
Возможно :)
В этом случае ещё более доставляет заголовок статьи «была чуть не сорвана разработка Gardenscapes». Скандалы, интриги, расследования :)
А по факту просто мануал «как вычистить г… но из репы».
Может просто при таком размере каждый разработчик уже не держал у себя полный клон?
Можно же фетчем забрать только нужную ветку, минуя всю историю целиком.
Я понимаю, что история про гит, но ваша реклама на ютубе задолбала.
а) Не интересно.
б) Содержит сцены насилия с криками и т.д.
в) Раздражает.
Мы делаем подобную рекламу не потому, что любим сцены насилия и прочие ужасы. Мы делаем ее потому, что она работает лучше, чем «обычная». То есть для среднестатистического игрока больше вероятность установить игру после «плохой» рекламы, чем после «хорошей». Почему — мы не знаем. Возможно, с человечеством что-то не так :). Вы — видимо, не среднестатистический, так что извините за доставленные неудобства.
Я вообще рассматриваю это как перевоспитание. Человек приходит в игру, думая что там треш. А там на тебе, милый Остин восстанавливает сад, и все вокруг его друзья. И человек, сам того не замечая, становится добрее.
А ещё эта реклама показывается в детских видео (включая колыбельные и т.д., в том числе в середине колыбельной). Если вас когда-нибудь забанят, знайте, где-то есть человек, который тщательно помечает его как inappropriate, потому что оно inappropriate.
А поставить галку "не показывать в детских видео" не судьба?
Я предполагаю, что это была попытка оценить итоговый размер репозитория после всех этих операций.
С другой стороны, после gc можно было вызвать git repack, упаковать все в один или несколько пакетов и потом только вызывать git push, это могло уменьшить количество передаваемых данных и возможно позволило бы запушить без разделения на несколько посылок, хотя не факт и над тем, как разбивать коммиты на эти пакеты пришлось бы отдельно думать.
Из репозитория можно удалить файл описанным в статье способом. Причем это будет связано с изменением истории, то есть у пользователей репозитория неизбежно возникнут проблемы. При этом у гитахаба, вероятно, есть еще и резервные копии, которых мы не видим. Из них файл, естественно, не удалится. Так что да, если вы случайно закоммитили номер вашей кредитки, то техподдержка — правильный способ.
Как однажды была чуть не сорвана разработка Gardenscapes