Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Чему можно научиться у фикуса-душителя? Паттерн Strangler

ПрограммированиеАнализ и проектирование системПроектирование и рефакторингDevOpsМикросервисы

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры2.2K
Комментарии 0

Связка rvm + Rails + Nginx + Unicorn или деплоим рельсы правильно

Ruby on Rails
Из песочницы
Целью данной заметки я ставлю в подробностях описать организацию сервера для Rails приложений в самой популярной на данный момент связке: rvm + Rails + Nginx + Unicorn. К написанию статьи побудило отсутствие полной пошаговой документации по этой связке, понятной не только ядреным профессионалам этой области. Далее я попытаюсь подробно, шаг за шагом, описать идеологически правильный процесс организации сервера для обслуживания нескольких Rails приложений (на примере одного) — если у вас есть абсолютная уверенность в том, что на подопытной машине никогда не будет работать более одного приложения — настройка может быть существенно короче и проще. Хочу предупредить, что тонкости, касающиеся работы приложения под высокой нагрузкой в статье не описываются, т.к. цель ставилась иная — заставить работать приложение в связке и сократить количество конфликтов с другими приложениями до минимума.
Читать дальше →
Всего голосов 68: ↑63 и ↓5 +58
Просмотры53.2K
Комментарии 135

Еще одно руководство по CCnet + SVN

Системы управления версиями
Из песочницы
Cruise Control — одна из достаточно большого количества CI (continuous integration) систем. Речь пойдет о том, как настроить ее для связи с SVN и деплоя сайта на .NET.

Для начала немного о задачах СС на данном сервере:
  • Взять код из SVN репозитория
  • Скомпилировать его
  • Положить в директорию к IIS


Далее будут выложены куски конфигурационного файла, с комментариями по каждой хоть как-то интересной строчке. По кускам, фактически выложен полный рабочий конфиг.

Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Просмотры4.8K
Комментарии 3

Скрипт для сравнения двух БД Oracle

Oracle
Процесс выката новых версий ETL на продуктив всегда процесс волнующий. Редко когда среда разработки полностью соответствует среде эксплуатации, в моем предыдущем проекте различались в том числе ОС и железо, на которых велась разработка и эксплуатация ХД.

Хорошо хоть база данных использовалась одна и та же — Oracle. Для того, чтобы убрать максимальное количество различий между настройками и содержимым продуктивной и разработческой БД мой коллега подготовил скрипт, собирающий, и, что очень важно, правильно форматирующий вывод в файл, скрипт, позволяющий сравнивать две БД.

После такого сравнения и унификации многие, зачастую неожиданные, проблемы при деплое должны будут найтись немного раньше, на этапе тестирования, т.е. при деплое с ДЕВа на СИТ. А определенное количество устаревших маппингов OWB или таблиц можно будет удалить с ПРОД системы.

Возможности сравнения нескольких БД присутствуют в некоторых утилитах разработки и администрирования БД, в частности данный набор скриптов получен из Toad. Мой коллега просто выбрал необходимые параметры для сравнения, которых, я думаю, будет достаточно для начала и вам, а уж если вы используете кластеризацию таблиц или что-то более сложное добавить вывод этих объектов для сравнительного анализа сможете сами.

Сформированные файлы (db_info.txt с ДЕВа и такой же с ПРОДа) можно, в дальнейшем, сравнивать утилитами типа WinDiff и решить, где значение вернее и какое из них оставить.
Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Просмотры15.6K
Комментарии 8

Разработчики «Мамбы» на конференции HighLoad++2012

Мамба
Сегодня стартовала самая значимая конференция для разработчиков HighLoad++2012
Наши прекрасные разработчики расскажут много интересного и полезного о высоконагруженной системе знакомств с аудиторией в 17 000 000 пользователей.

Спикеры «Мамбы»:
Глеб Арестов
Использование Comet для создания интерактивных интерфейсов

Михаил Буйлов
Цикл разработки, визуальный деплой, автоматизация и интернационализация

Дмитрий Ананьев
Практические вопросы использования NOSQL в высоконагруженном проекте (NoSQL-экзотика: TokyoTyrant -> KyotoTycoon -> Google LevelDB)

Илья Шаповалов
Производительный специализированный поиск: архитектура, область применимости
Всего голосов 9: ↑7 и ↓2 +5
Просмотры3K
Комментарии 0

Архитектура высоконагруженных приложений. Масштабирование распределенных систем. Часть вторая

BadooРазработка веб-сайтовПрограммирование
На этой неделе мы выкладывали первую часть расшифрованного подкаста. Сейчас подготовили вторую часть.

О чем мы говорим во второй части подкаста:
  • Горизонтальное масштабирование проекта

— когда стоит использовать облачные сервисы, а когда физический хостинг;
— «красивость решения» против «грязного, но производительного» кода. ORM и всякие подобные штуки;
— мультиязычность и мультизонность проекта, проблемы и решения.

  • Асинхронные задачи. Очереди.

— асинхронные задачи в распределенных системах;
— когда они приходят на помощь, какие технологии существуют и активно развиваются сейчас;
— какие подходы организации асинхронных задач используются в Badoo;
— c какими проблемами приходилось и приходится сталкиваться при работе с очередями;
— полезные книги и интересные конференции;
— интересные кейсы с собеседований.

Читать расшифровку подкаста
Всего голосов 66: ↑63 и ↓3 +60
Просмотры38.5K
Комментарии 33

Git rebase «по кнопке»

BadooРазработка веб-сайтовGit

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

В нашем случае налицо лимит по времени: релизы формируются, тестируются и выкатываются на продакшн-сервер два раза в день. При ограниченных сроках в жизненном цикле релиза процесс удаления (отката) из релизной ветки задачи, содержащей ошибку, имеет важное значение. Для её выполнения мы используем git rebase. Так как git rebase ― это полностью ручная операция, которая требует внимательности и скрупулезности и занимает продолжительное время, мы автоматизировали процесс удаления задачи из релизной ветки.
Читать дальше →
Всего голосов 73: ↑72 и ↓1 +71
Просмотры21.9K
Комментарии 13

Опрос. Как вы делаете деплой на production сервер(а)?

Разработка веб-сайтов
Коллеги расскажите, пожалуйста. как вы делаете деплой на production сервер(сервера) веб-проектов.
Если у вас используется 3 или 4 вариант, то как вы переключаете document_root — создаете симлинк на новый релиз или переписываете (скриптом) конфиг nginx?
Если переключать симлинк не бывает проблем с APC или XCache?
Если не хватает какого то варианта пишите в комментарии.

UPD: Спасибо всем за комментарии, пятничный пост получился очень продуктивным и полезным думаю для многих.
UPD2: Небольшой обзор комментариев:
подробные разборы деплоя habrahabr.ru/post/211733/#comment_7286111 habrahabr.ru/post/211733/#comment_7287769
утилиты для создания deb пакетов habrahabr.ru/post/211733/#comment_7286187
наиболее популярное готовое ПО capistrano, fabric, teamcity
Всего голосов 56: ↑42 и ↓14 +28
Просмотры62.1K
Комментарии 149

Оптимизируем рабочий процесс

Git
Из песочницы
Доброго времени суток. Решил поделиться опытом в организации рабочего процесса разработки веб-проектов и не только веб. Расскажу свое видение максимально удобного использования связки типа: bugtraker + git + ci + deploy.



Все чаще сталкиваюсь с тем, что подобная оптимизация будет полезна широкому кругу людей. Возможно, в предложенном варианте нет ничего нового, но, лично для меня это было, можно сказать, откровением. Если кто-то, кроме меня, захочет внедрить у себя на проекте что-то подобное, то я буду считать, что статья написана не зря.
Читать дальше →
Всего голосов 28: ↑21 и ↓7 +14
Просмотры16.6K
Комментарии 21

Каждой ветке по хосту c помощью capistrano

AT ConsultingRubyRuby on Rails
Думаю многим знакомо понятие «борьба за staging», когда все разработчики одновременно за день до релиза хотят поделиться своими наработками, чтобы тестировщик их проверил как можно скорее и не пришлось всю ночь править баги, да? Кому интересно посмотреть как мы решаем данную проблему для RoR-проектов с помощью Capistrano прошу под кат.


Читать дальше →
Всего голосов 14: ↑12 и ↓2 +10
Просмотры6K
Комментарии 8

Node.js в бою (создание кластера)

Разработка веб-сайтовNode.JS
Перевод
Tutorial
Когда вы используете приложения на node.js в продакшене, вам приходится задумываться о стабильности, производительности, безопасности и удобстве поддержки. Данная статья описывает мои мысли о лучших практиках использования node.js в бою.

К окончанию данного руководства вы получите систему из 3 серверов: балансировщик (lb) и 2 сервера приложений (app1 и app2). Балансировщик будет следить за доступностью серверов и распределять между ними траффик. Серверы приложений будут использовать комбинацию systemd и кластеризации node.js для балансировки траффика между несколькими процессами ноды на сервере. Вы сможете выкатывать код с помощью одной команды со своей машины, и при этом не будет перерывов в обслуживании или необработанных запросов.
Все это можно представить в виде схемы:


Читать дальше →
Всего голосов 37: ↑35 и ↓2 +33
Просмотры63.2K
Комментарии 17

Сине-зеленый деплой

Системное администрированиеIT-инфраструктураDevOps
Перевод

Я и мои коллеги всегда склоняем своих клиентов полностью автоматизировать процесс деплоя. Автоматизация помогает сократить количество конфликтов и задержек, которые возникают в процессе между "завершением" работы над программой и введением в эксплуатацию. Дэйв Фарли (Dave Farley) и Джез Хамбл (Jez Humble) заканчивают книгу "Непрерывная доставка" (Continuous Delivery) на эту тему. Она основывается на множестве идей, которые в целом связаны с непрерывной интеграцией и подталкивают к возможности быстро пустить софт в работу. Глава о сине-зеленом деплое привлекла мое внимание, потому что это один из малоиспользуемых методов, и я решил кратко его осветить.

Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Просмотры39.1K
Комментарии 12

Эволюция процесса деплоя в проекте

Конференции Олега Бунина (Онтико)Системное администрированиеIT-инфраструктураСерверное администрированиеDevOps


Денис Яковлев (2ГИС)


Меня зовут Денис, я работаю в компании 2ГИС, около полутора лет занимаюсь вопросами continuous delivery для проектов веб-отдела. До этого работал в компании Parallels и там прошел путь от QA инженера до team lead’а.

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

Из чего это состоит? Нам нужно доставить, прежде всего, код — то, над чем мы работали большое количество времени, тестировали и прочее.
Читать дальше →
Всего голосов 27: ↑22 и ↓5 +17
Просмотры15K
Комментарии 20

Безопасность в IoT: Обеспечение безопасности развертывания Azure IoT

MicrosoftИнформационная безопасностьMicrosoft AzureРазработка для интернета вещей
Tutorial
Представляем вашему вниманию последнюю статью из цикла «Безопасность в IoT», а также приглашаем принять участие в конференции от Microsoft «Бизнес.IoT: открывая интернет вещей». В этой статье детально рассматриваются средства обеспечения безопасности IoT-инфраструктуры на базе Azure IoT и описывается уровень реализации в процессе настройки и развертывания отдельных компонентов. Представлен также сравнительный анализ различных методик.


Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры4.4K
Комментарии 2

Практики Continuous Delivery с Docker (обзор и видео)

ФлантСистемное администрированиеDevOps
Свой блог мы начнём с публикаций, созданных по мотивам последних выступлений нашего технического директора distol (Дмитрия Столярова). Все они состоялись в 2016 году на различных профессиональных мероприятиях и были посвящены теме DevOps и Docker. Одно видео, со встречи Docker Moscow в офисе Badoo, мы уже публиковали на сайте. Новые будут сопровождаться статьями, передающими суть докладов. Итак…

31 мая на конференции RootConf 2016, проходившей в рамках фестиваля «Российские интернет-технологии» (РИТ++ 2016), секция «Непрерывное развертывание и деплой» открылась докладом «Лучшие практики Continuous Delivery с Docker». В нём были обобщены и систематизированы лучшие практики построения процесса Continuous Delivery (CD) с использованием Docker и других Open Source-продуктов. С этими решениями мы работаем в production, что позволяет опираться на практический опыт.

Дмитрий Столяров (Флант) на RootConf 2016

Если у вас есть возможность потратить час на видео с докладом, рекомендуем посмотреть его полностью. В ином случае — ниже представлена основная выжимка в текстовом виде.
Читать дальше →
Всего голосов 19: ↑18 и ↓1 +17
Просмотры27.9K
Комментарии 14

Собираем Docker-образы для CI/CD быстро и удобно вместе с dapp (обзор и видео)

ФлантСистемное администрированиеDevOps
Это вторая публикация, созданная по мотивам моих выступлений на конференциях. Первая была общей и посвящена обзору практик Continuous Delivery с Docker. Новая основана на более прикладном докладе «Собираем Docker-образы быстро и удобно», который прозвучал 8 ноября на конференции HighLoad++ 2016 в секции «DevOps и эксплуатация».



Как и в прошлый раз, если у вас есть возможность потратить ~час на видео, рекомендуем посмотреть его полностью (см. в конце статьи). В ином случае — представляем основную суть в текстовом виде.

Что мы хотим от Docker-образов?

Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Просмотры23.8K
Комментарии 24

MeteorJS, Nginx, mongodb, iptables… продакшен

NginxСерверное администрированиеАдминистрирование баз данных
Tutorial

Здравствуйте, меня зовут Александр Зеленин, и я веб-разработчик сисадмин.


К сожалению, вся информация о полноценной развёртке приложения на MeteorJS довольно разрозненна, и приходится вручную решать миллион задач. В этой статье я хочу разобрать самую базовую (но уже достаточную для безопасной работы в продакшене) настройку сервера и последующий процесс ручного деплоя.


Разворачивать будем на Ubuntu 16, но в целом схема на 99% совпадает и для Debian 8.

Читать дальше →
Всего голосов 46: ↑36 и ↓10 +26
Просмотры14.2K
Комментарии 69

Octopus Deploy. Улучшаем мир в кровавом энтерпрайзе

TINKOFFDevOps


Сегодня я хочу рассказать о системе деплоя Octopus Deploy. На данный момент на Хабре есть всего одна вводная статья на эту тему, поэтому в своем материале я хочу расширить описание системы, подробнее рассказать о таких важных понятиях как «жизненные циклы» (lifecycles) и «каналы» (channels), а также о том, как мы внедрили и используем Octopus в своей работе.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры11.4K
Комментарии 9

MODx Revo workflow. Организация рабочего процесса, контроль версий и деплой

MODX
Из песочницы
Все основные элементы системы MODX, такие как чанки, шаблоны, сниппеты и т.д, хранятся в БД, из этого появляется проблема осуществления контроля версий за этими элементами, а также сложности с разделением на development и production версии сайта.

Приведу основные требования, чего я хочу от своего рабочего процесса на MODX Revo:
  • контроль версий везде, где пишу какой-либо код (html, css, js, php),
  • иметь отдельную dev-версию сайта, на которой ведётся текущая разработка, а после — деплоить все изменения в продакшн, причём, желательно, автоматизировать этот процесс,
  • минимум копипаста при разработке и деплое.

Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры7.8K
Комментарии 10

Деплой webpack-приложения на github.io с помощью Travis CI

Разработка веб-сайтовJavaScriptNode.JSGitHub
Tutorial

Задача


Есть приложение, сгенерированное с помощью create-react-app. Нужно развернуть его на github.io.


Проблемой является то, что Github Pages работает только со статическим кодом и Jekyll.

Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Просмотры9.9K
Комментарии 21
1