Ответы пользователя по тегу Развёртывание ПО
  • Как отправлять проект заказчику?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Обсудить это с заказчиком.
    Если он понимает, как запустить проект, или наймет кого-то - просто можно архив на почту с краткой инструкцией как билдить.
    Если не понимает, можно договориться что он купит хостинг, даст вам временный доступ, а вы там все поднимете за отдельную плату.
    Ответ написан
    Комментировать
  • Docker: принято ли ставить на продакшене?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Что значит "принято". Это зависит от проекта и ваших предпочтений.
    Нет явных общепринятых решений, так как одинаковых проектов немного.

    Если у вас единственное приложение, то под него можно просто настроить сервер и без докера и с докером.
    Если компонентов очень много, то чистый докер уже будет мало и сложно, нужно использовать оркестратор (кубернетес или опенщифт). Но можно и просто виртуалки/железки настроить.
    Докер налагает свои моменты, но упрощает поддержку на будущее.
    Ответ написан
    Комментировать
  • Правильно ли так организовывать docker?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    И второй попутный вопрос: правильно ли что dev и prod работают на одном и том же контейнере?

    Вы имеете ввиду из того же докер образа? Так и надо делать. Чтобы тестировать и запускать в продакшене одно и тоже.
    Енвайрнмент-зависимые вещи настраиваются извне и прокидываются (сертификаты, креденшелы для баз данных, и т.п.)

    А так - если вас решение устраивает, если вам оно понятно и в случае чего вы его можете легко модифицировать как вам нужно - да, вполне нормально.
    Ответ написан
    1 комментарий
  • Как делать ci/cd нескольких сервисов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    У каждого сервиса свой репо, свои джобы, свои деплои, зачастую не связанные друг с другом.

    Монорепа/мультирепа

    Это вопрос для девелоперов, как вам удобнее. Монорепа используется обычно тогда, когда у ваших сервисов реально есть общий код. Если же нет, то проще в отдельных репозиториях.
    Многие CI/CD можно настроить на пуш в определенные подкаталоги, и тогда разные сервисы в монорепе будут триггерить свои собственные джобы (teamcity например)

    Версионирование

    На усмотрение разработчиков. В мейвене есть плагины для автоматического semantic версионирования. Или можно руками. Самое простое - это мажорную версию проставляешь руками, а ci просто номер билда дописывает и/или хеш коммита в версию.

    Откат

    В случае с кубером/опенщифтом для этой задачи существуют healthcheck пробы, которые настраиваешь и все. Если приложение не прошло хелсчек при поднятии, то деполй фейлится и все - предыдущая версия автоматом будет продолжать работать. В случае баз данных и других вещей - разработчики должны писать скрипты для наката/отката, или если база маленькая можно делать бэкапы или снепшоты. Тут зависит от архитектуры

    Как обновить 2+ сервиса одновременно.

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

    У него есть такие понятия как конфиг и секрет, но они монтируются в образ как файлы, что не всегда удобно.

    И конфиги и секреты можно маунтить и как файлы и как переменные окружения. Дочитайте документацию.
    Ответ написан
  • Как не учитывать компилируемый код в системе GIT, но при этом выкатывать его на прод?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Процедуру деплоя на прод нужно изменить
    Вместо git pull на продакшене, собирайте прод дистрибьюшн на промежуточном сервере в какой-нить tgz и выкладывайте его на прод уже скомпилированным.
    Ответ написан
    Комментировать
  • Почему при деплое на AWS слетают права на директории?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    git pull не должен ломать права доступа на уже существующие директории, только если вы добавили новую директорию.

    А git clone естественно создает все заново.

    git хранит только executable bit для исполняемых файлов, все остальное создается с дефолтными правами согласно umask.
    Ответ написан
    Комментировать
  • Почему после деплоя нет изменений на тестовом серевере?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Эм.
    В первую очередь нужно смотреть логи.
    Если там недостаточно информации, ковыряешь скрипты деплоя и добавляешь там много echo на всех важных моментах, чтобы логи были полезными и понятными.
    Потом снова смотришь логи.
    Опять же в данном вопросе информации вообще нет. Jenkins может быть настроен очень гибко, по общим фразам никто не знает. Может у тебя независимые джобы для деплоя на разные енвайрнменты, может у тебя pipeline на груви, может еще что.
    Ответ написан
    Комментировать
  • Нужно ли делать полный деплой проекта, если изменил одну букву?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    То есть по канону, даже если в одном файле надо букву поменять - следует запускать полный цикл выгрузки?


    По канону вам не нужно ничего запускать. Все запустится автоматом и вы просто не паритесь.
    Вдобавок нужно понимать, что в идеальном случае, у вас должны быть пройдены автоматические тесты, разные уведомления и другая бюрократия, которая тоже автоматизирована.

    В этом случае вы просто не мучаетесь выбором, а просто кодите.
    Ну а одна буква это может быть и - на +. Без тестирования в продакшен?
    Ответ написан
    Комментировать
  • Как поднять сервер на Linux и задеплоить приложение?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Есть домен и статический IP. Есть роутер Ericsson, есть ноут с Apache, PostgreSQL и JDK. Джарники залиты в Tomcat webapps.
    Дальше полагаю необходимо настроить роутер и какова необходимость в установке и настройки IPTABLES?


    Так вам нужно апач или томкат? Это же разные сервера, они друг другу не обязательны.

    IPTABLES не нужно, и домен необязательно, если вы внутри локалки ходите на локальный айпишник своего сервера.
    Ответ написан
    3 комментария
  • В чём будет отличие, если я размещу сервер только на питоне без nginx или apache?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Будет сервер на питоне, со своими возможностями.

    Нужно понимать, что сервер на питоне не обладает тем же функционалом, что nginx или apache (например rewrite, basic authorization, несколько сайтов, поддержка https/ftp и другое), но если этот функционал вам не нужен - запускайте хоть на бейсике.
    Ответ написан
    5 комментариев
  • AWS: Как передавать большие файлы (например, конфиги) в USERDATA при создании LaunchConfiguration?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    1. Копировать можно просто по scp
    2. Выкладывать можно не только под basic auth, а еще и в запароленных архивах
    Ответ написан
    Комментировать
  • Как правильно маштабировать проект на Amazon AWS?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    так а бутылочное горлышко где?
    Если база тормозит - кластеризуем, оптимизируем.
    Если база не тормозит, а тормозит бэкенд - ставим какой-нить балансер и несколько бэкендов к той же базе.

    В общем выясните что больше всего страдает от нагрузки
    Ответ написан
    2 комментария
  • Что делать после сборки проекта?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Затем его или деплоить, или создать деплоймент пакадж и выложить его в бинарный репозиторий, или хотя бы на sftp
    Ответ написан
  • Как улучшить процесс разработки/тестирования/деплоя?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    "Хочется поменять процесс и на базе TeamCity добавить авто-тесты и некоторую автоматизацию чтобы было так (feature-ветки думал не использовать, так как у нас много небольших правок, а ветки добавляют оверхед):"

    В том-то и дело, что авто-тесты без фича веток не очень хорошо будут работать.

    Подробнее:
    Автотесты обычно должны триггериться на коммит. Но это также означает, что разработчик не тестирует у себя локально приложение, а просто коммитит и ждет ответа от автотеста.
    А если он будет коммитить в мастер - то один разработчик может сломать билд для всех.

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

    Если тест успешен - тогда можно мержить в мастер - обычно для этого используется какой-то промежуточный инструмент перед гитом - gitlab, gerrit, bitbucket, где удобно настроить создание pull request-ов так, чтобы они не позволяли мержить, пока нет 1 ревью и 1 успешного билда.
    Ответ написан
    2 комментария
  • С чего начать изучение деплоя?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Деплой - это просто развертывание вашего приложения.
    Вы можете просто развернуть это на локальной машине, поднять и убедиться что оно работает - вот это и нужно запротоколировать.

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

    В вашем случае очень странно, что предыдущий сотрудник не оставил никакой документации. Если это был конфликт с начальством, то пусть начальство решает свой косяк самостоятельно - найдет его, заплатить за консультацию. Или наймет другого девопса, который будет разбираться что делал первый.
    Ответ написан
    Комментировать
  • Самый простой deploy jar на linux сервер?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    напишите скрипт на bash, который скопирует файл на удаленный сервер и перезапустит на нем нужный процесс (tomcat или вашу java)
    Ответ написан
    Комментировать
  • Как Вы формируете release notes?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Создается шаблон для коммит-мессаджей, в котором разработчики в нужном месте пишут текст, в том числе и для релиз нотов.
    Официальные билды запускаются на дженкинсе, после успешного билда вызывается скрипт на питоне, который обходит новые коммиты и создает релиз ноты.
    Питон удобен, потому что есть готовые либы для поста в ту же Жиру...но можно и встроенным в Дженкинс способами что-то делать.
    Ответ написан
  • Как правильно организовать инфраструктуру продакшена и процессы разработки, тестирования и деплоя?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    Нельзя брать некую теоретическую компанию и делать теоретическую структуру продакшена.
    Надо брать конкретный продукт, конкретные требования заказчика, который платит деньги, и отталкиваться от этого.

    Можно настраивать CI, можно разводить agile процессы, но главное - выяснить требования заказчика, и подстраиваться под них.
    Ответ написан
    5 комментариев