Контакты

Достижения

Все достижения (6)

Наибольший вклад в теги

Все теги (36)

Лучшие ответы пользователя

Все ответы (26)
  • Docker. Как контролировать код, базу данных и выпуск в production?

    UnknownHero
    @UnknownHero Автор вопроса
    Добавлю ответ на свой же вопрос.

    Прошло достаточно времени и я успел посмотреть и попробовать множество инструментов связанных с Docker.

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

    Приложение для администрирование развёрнуто на 1-м сервере, на нём есть Docker Registry , Jenkins и ещё пару веб страниц с разной информацией. Всё это обернул в Nginx , работает здорово. Само приложение тоже использует Docker , но обновлять его нужно руками (ssh and etc).

    Сайт ( который на самом деле состоит из бизнес логики , DAL , Postgresql , Rest API , web-frontend , web-backend и ещё пару уровней абстракции :) ) использует содержит около 10 Dockerfile.

    Внутри приложения использую инструменты сборки (grunt для nodejs) и собираю приложение во время сборки образа (docker build) , либо после запуска контейнера для продолжительной разработки с помощью FIG.

    После правки кода, заливаю всё в git репозиторий, Jenkins собирает образы (docker build) и отправляет в Docker Registry, после чего сообщает серверам (сейчас он 1), что нужно обновить образы (docker pull) , и перезапустить контейнеры. Там где нужно сохранить данные , использую data containers , их я не перезапуска и не трогая.
    Со временем хочу сохранять состояние data containers (docker commit) и заливать их на Docker registry (docker push) для бэкапа некоторых данных.

    Сервер собирает и перезапускает обновлённые контейнеры с помощью самописных bash скриптов (они не сложные ), т.к. родные для Docker инструменты для этих целей ещё в стадии разработки (Docker swarm , Docker machine , Docker compose) , а стороние решения скорее всего умрут после выхода этих инструментов.

    Через Environment variables говорю контейнеру в каком он режими работает (local/test/live), но нужно это только для минификаций и уровня логгирования. В этих настройках - чем меньше различия,тем лучше.

    Всё это загнал в vagrant , отлично работает ,но требует хорошое железо для разработки.

    В планах:
    - научиться тегировать образы, что бы можно было откатить все сервера до рабочего состояния в случае багов.
    - добавить процесс автоматического тестирования и оценки качества в Jenkins (для docker приложений нужно поднимать ещё jenkins slave )
    - прикрутить ansible для деплоя и прочих удобностей для администрирования. Связать его с Jenkins

    Итог:
    -Однин раз написал, везде использую.
    - Автоматизация до уровня commit = staging deploy
    - Разделение административных инструментов и сервисов от бизнес приложения.
    - Независимые компоненты ,которые можно легко заменить, слабая связаность.
    ну и минусы:
    - одному тяжело уследить за таким зоопарком )) Был бы администратор/DevOps , было бы зачительно быстрее всё.
    Ответ написан
    1 комментарий
  • Как понять суть программирования (подробнее в содержании)?

    UnknownHero
    @UnknownHero
    Человек не тратит сотни часов и дней на изучение композиции, как строится перспектива, как падает свет, как формируются тени, чтобы понять, подходит ли ему рисование или нет, хочет он заниматься этим или нет.

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

    Понравилась роль программиста ?

    С моей точки зрения это всё работает не так. Любому может понравиться картина художника и он захочет стать художником.
    Но уже через 100 часов обучения он бросил это дело, т.к. сам процесс ему не понравился.
    Поэтому лучше понять это в процессе.

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

    Если вам нравиться эта идея, то можете выбирать этот путь.
    Если сомневаетесь,я думаю, поможет только практика.

    А что на счёт разных языков или технологий... В любой сфере нужно будет иметь немалые начальные знания и постоянно учиться.
    Просто нужно взять что-то одно и выучить.
    Ответ написан
    Комментировать
  • Как вам редизайн facebook?

    UnknownHero
    @UnknownHero
    неплохо для темы на wordpress.
    Но и дизайн fb тоже не очень.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (6)