Программирование

Ответить в тред Ответить в тред
DevOps-тред /devops/ DevOps 06/01/21 Срд 11:53:53 19023191
image.png 627Кб, 1507x847
1507x847
image.png 99Кб, 785x429
785x429
image.png 35Кб, 787x308
787x308
DEVOPS-ТРЕД


Не нашел на доске треда, спрашивается - почему?

Теперь будет - обсуждаем Docker, Kubernetes, методы для CI/CD, пишем пайплайны тестирования и билдов, выбираем очередного убийцу Докера, пытаемся понять почему наш sh скрипт нихуя не работает и почему в Jenkins вылетают одни ошибки.

Предыдущий(?) мертвый: >>1683188 (OP)
06/01/21 Срд 12:09:24 19023262
>>1902319 (OP)
Действительно почему? Бляди, раздел называется /pr, не /adm, не /it. Какого, спрашивается, хуя тут делают 1С, датасатанисты, ауе QA
Аноним 06/01/21 Срд 12:21:08 19023323
>>1902326
Скажи это про закреплённый МВП--тред, хотя раздел даже не /wrk/ и не /b/.

>>1902319 (OP)
Нахуй перекат? Там 37 постов всего.
Аноним 06/01/21 Срд 12:34:38 19023404
>>1902332
> Нахуй перекат? Там 37 постов всего.
Так там и не девопс тред, а вопрос какого-то ньюфага, я его приложил просто шоб было

>>1902326
У тебя пол доски анимублядями аватаркоебами забит. ДевОпс - это не админство, это кодоебство и работа твоего ПО в контейнерах/серверах. Я не знаю лучшего места, чем эта доска. Эта тема вообще ко всему относится, но больше к программистам.
Аноним 06/01/21 Срд 12:36:05 19023435
>>1902326
> Действительно почему? Бляди, раздел называется /pr, не /adm, не /it.

/adm и /it не существует. Поблагодари обезьяну, что нет тематических досок, куда можно было бы пихнуть этот тред.
Аноним 09/01/21 Суб 14:49:17 19054906
Хотел уже было создать свой отдельный тред, но нашёлся этот.
Итак. Вот, например, где-то на серваках стартует несколько экземпляров одного нодовского приложения, обращающихся к одной и той же бд. Если все экземпляры попытаются создавать/добавлять новые поля в таблицы в бд, ничё хорошего из этого не получится. Значит, таблицы нужно создавать заранее скриптом. Так? А если нужно обновить приложение и бд, то, получается, нужно гасить все экземпляры, обновлять бд, обновлять приложение и перезапускать его эксемпляры. А если нужно, чтобы приложение работало постоянно? Получается, нужно как-то создавать новую бд с обновлёнными таблицами на основе данных из старых таблиц и в реальном времени копировать туда все новые данные из старой бд, которая пока ещё взаимодействует со старыми экземплярами приложения. Потом запускать экземпляры нового приложения и в один момент как-то переключать пользователей на эти новые экземпляры. Или как?
Как всё это делать правильно, без гемора и по фэншую? Что почитать на эту тему?
Аноним 09/01/21 Суб 17:48:25 19056727
1585895062331.gif 201Кб, 660x780
660x780
>>1905490
Ололош, для этого существует такое понятие, как отказоустойчивые БД: кластеризация, репликация, зеркалирование. Выбирай любое в зависимости от движка БД и не еби мозг тупыми вопросами. А лучше вообще не лезь, это не твое раз ты элементарных вещей не втыкаешь. Пиздуй лучше в эникей ебашить
Аноним 09/01/21 Суб 18:44:46 19057118
>>1902319 (OP)
Посоветуйте что нужно изучать для вката, есть знания linux на базовом уровне, понимание о работе OC и компьютерных сетей, и небольшой опыт программирования на c#,python,php
Аноним 09/01/21 Суб 19:12:17 19057369
>>1905490
> где-то на серваках стартует несколько экземпляров одного нодовского приложения, обращающихся к одной и той же бд
В SQL базах есть такое понятие, как гарантия атомарности. Если ты пошлешь одновременно 2 запроса на запись - ты не сломаешь базу, они просто выполнятся последовательно.

> ничё хорошего из этого не получится
Почему? Запросы не приведут к конфликтам и ошибкам, если ты об этом.

> А если нужно обновить приложение и бд, то, получается, нужно гасить все экземпляры
Нет, почему? Практики разные бывают, но в общем случае - добавляется реплика сервиса, накатывает миграции, а затем постепенно деплоятся остальные реплики, заменяя старые. Естественно это все нужно самому настраивать либо использовать готовые решения. Миграции в scalable приложениях - это целая отдельная тема

> А если нужно, чтобы приложение работало постоянно? Получается, нужно как-то создавать новую бд с обновлёнными таблицами на основе данных из старых таблиц и в реальном времени копировать туда все новые данные из старой бд, которая пока ещё взаимодействует со старыми экземплярами приложения.
Нет, лол. Просто миграции специально делают не ломающими предыдущую схему. Например тебе нужно поменять у поля тип, вместо того, чтобы тупо удалить нахуй колонку и заменить новой - ты делаешь это в 2 этапа. Первая миграция - добавление новой колонки, вторая миграция - удаление старой и переименование новой. Второй этап происходит после того, как поды (реплики) старого приложения были полностью заменены на новые. Это очень кратко и базово, существуют различные техники. Но да, как в монолите с одним инстансом уже не получится просто хуякнуть миграцию и забыть. Вообще при микросервисной/растущим в ширь скейлингом приходит и много новых проблем, таких как shared state, лоадбалансинг и т.д. и т.п.

> Потом запускать экземпляры нового приложения и в один момент как-то переключать пользователей на эти новые экземпляры. Или как?
Объясню на пальцах: у тебя есть один инстанс (пусть будет процесс, грубо говоря приложение одно), ты туда направляешь все запросы (не важно, пусть будет nginx). Теперь ты задумался, что хорошо бы два инстанса сделать, чтобы на каждый из них меньше нагрузка была, соответственно увеличив пропускную способность твоего сайтика (пусть будет просто сайт пока). Тебе нужно какое-то подобие лоадбалансера, т.е. балансировщика нагрузки, который будет запросы от юзера направлять на каждое приложение равномерно, самый простейший - это прописать в NS записях твоего домена разные айпишники/порты твоих двух сервисов, правда тут уже не лоадбалансер, а тупо рандом, более сложные штуки - это умные лоадбалансеры, которые направляют запросы на менее нагруженные инстансы. Не буду вдаваться в подробности. Короче в итоге у тебя все запросы не напрямую в твой инстанс шлются, а в некий gateway лоад балансер, а он уже полностью копирует их и передает на конкретный из двух инстансов, а затем ответ от них также отдает обратно. Естественно писать логику лоадбалансера и спавнить инстансы приложения руками - это слишком долго и муторно. Для этого придумали кучу инструментов, например в том-же кубернетесе есть external service с функциями лоадбалансера, или тот-же traefik, да дохуя их. Кубернетес еще и автоматически умеет спавнить реплики под нужную нагрузку, умеет их убивать и ты можешь прописать различные правила для всего этого. Это и есть девопс.

> Как всё это делать правильно, без гемора и по фэншую?
Можешь начать с гайда по кубернетесу, из него уже по мере надобности изучать ответвления. Кубер удобен тем, что там все есть из коробки. Но, естественно, в проде одним кубером все не ограничивается, для каждой темы есть отдельные более продвинутые инструменты.
Аноним 09/01/21 Суб 19:18:43 190574510
Аноним 14/01/21 Чтв 09:56:29 190969611
>>1905711
Тебе только docker покурить, и ansible до уровня ролей и можешь вкатываться смело
Аноним 20/01/21 Срд 04:22:43 191600412
Стоит ВКАТЫВАТСЯ?? Хочу грести бабло лопатой и нихуя не делать.
Аноним 20/01/21 Срд 04:25:47 191601213
>>1916004
Не получится, на девопсе дохуя ответственности, чуть где проебался - прод лежит, а кабан тебя резать уже бежит за убытки.
Аноним 23/01/21 Суб 15:11:05 191908414
Вот уж не думал, что напишу это, но... Голова дай денег двач помоги.

Дано: куча инстансов веб-приложения на разных серверах с немного разными наборами файлов.

Найти: программу для периодического покомпонентного обновления этой еботни путём выкачки с главного (FTP-)сервера. Платные варианты нежелательны.
Аноним 23/01/21 Суб 16:58:08 191919215
85193728-8A37-4[...].png 1077Кб, 706x690
706x690
Привет, ребята.

Заебался дрючится с серверами своих проектов (я сам у себя выполняю роль около-СТО) - сейчас у меня зоопарк из 6 железных серваков на hetzner.

Заебало настраивать и устанавливать каждый раз один и тот же софт, следить чтобы ничего не упало и перезапускать если это случилось.
Стек у меня в целом обычный:

nginx
php-fpm
mysql (percona)
redis
sphinx

иногда что-то дополнительное вроде rabbitMQ или CouchBase.

Фишка в том, что я люблю потюнить настройки - в том числе серверные а-ля swapiness и ulimit, иногда меняю настройки софта и делаю бенчмарки.

Есть ли что-то, что позволит мне не логинится каждый раз на сервер, а просто править конфиг, делать деплой и чтобы "и нее там внутре неонка" - в смысле как-то автоматизировать эту рутину.

Посоветуйте что-нибудь, пожалуйста.
Платное\бесплатное - не так важно.

Terraform, docker, ansible?
Я в целом не очень сейчас в курсе, что происходит в devops - но могу быстро освоить\или оплатить услуги специалиста по первоначальной настройке.

От души.
Аноним 23/01/21 Суб 19:01:39 191929416
>>1919192
> а просто править конфиг
Bash
Аноним 23/01/21 Суб 19:40:47 191931317
>>1919084
Сам напиши, простетская же хуйня
Аноним 23/01/21 Суб 20:16:09 191933418
>>1919313
Да я уже, лол. Хотя насчёт простецкой я бы поспорил. Как пошли всякие доработки - так оно начало жиреть как пиздец, уже до тысячи строк отъелось и хз остановится ли. Я потому и спрашиваю, что не хочу свой велосипед писать.
Аноним 23/01/21 Суб 20:18:20 191933519
>>1919313
Пять раз задавал вопрос, и только в кодаче ответили. Спасибо за отзывчивость, лол
Аноним 23/01/21 Суб 21:06:40 191935920
>>1919192

На первый взгляд - стандартный ansible (кастомизация конфигов, деплой, простейшие тесты - все тут) и чтобы он сам ездил, пусть будет gitlab ci

терраформ нужен всегда для изначального провиженинга. для всего остального есть другие инструменты. иначе будет по типу баш в ансибле
Аноним 23/01/21 Суб 23:38:37 191951521
Сколько получаете, девопсы?
Есть смысл перекатываться из программиста ради денег?
Аноним 23/01/21 Суб 23:57:21 191954022
>>1919515
Есть смысл перекатываться из админа.
Аноним 23/01/21 Суб 23:57:49 191954223
Аноним 24/01/21 Вск 00:09:42 191956824
>>1919192
Ансибл
- Помнить что ансибл это не shell и использовать модули,от шелл портянок надо отвыкать(хотя понимать что там написано стоит)
- Использовать шаблоны jinja templates, без regexp и sed костыликов в конфигах
- Использовать папки конфигураций приложения *.d(conf.d,sysctl.d) и не лезть в дефолт конфиги


Учить:
1. ADV-IT на ютубе, просто обьясняет, для вката самое то, 5 часов плей лист(полезно читать коменты под видео) можно после этого погляжеть это https://www.youtube.com/watch?v=4QSyR0PcIR0

2.примерное понятие как стоить плейбуки, чел много говорит, но послушать стоит

https://www.youtube.com/watch?v=MAnKtZqud1s&list=PLvwzgL9vGvCVkrhq2d-SN2iDsmCG-NaQ6&index=11

https://downloads.ctfassets.net/oxjq45e8ilak/deL2j7rjd7tJNz97Bg2Vb/b5eaaad9a8a6def074609263f4e01898/100764_1817136362_Konstantin_Nifanin_Ansible_Traktornyy_rezhim.pdf

3.При всех движениях сверятся в офф докой, там много полезного и относительно понятные примеры.

Удачи.
Аноним 24/01/21 Вск 00:50:18 191962225
>>1919359
>>1919568
Кстати, а ансибл вот такую >>1919084 (на самом деле конечно более сложную) хуйню потянет?
Аноним 24/01/21 Вск 01:12:12 191963026
>>1919622
Потянет.
Можешь также сделать сиайт по нужному таймстемпу, указав каким серверам что и откуда качать.
Аноним 24/01/21 Вск 02:08:01 191963927
>>1916012
А зачем тогда люди идут в девопс? Это особый тип личности?
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов