Как стать автором
Поиск
Написать публикацию
Обновить
279.28

DevOps *

Методология разработки программного обеспечения

Сначала показывать
Порог рейтинга
Уровень сложности

7 принципов проектирования приложений, основанных на контейнерах

Время на прочтение7 мин
Количество просмотров20K
В конце прошлого года компания Red Hat опубликовала доклад с описанием принципов, которым должны соответствовать контейнеризированные приложения, стремящиеся к тому, чтобы стать органичной частью «облачного» мира: «Следование этим принципам обеспечит готовность приложений к автоматизируемости на таких платформах для облачных приложений, как Kubernetes», — считают в Red Hat. И мы, изучив этот документ, с их выводами согласны, а посему решили поделиться ими с русскоязычным ИТ-сообществом.



Обратите внимание, что эта статья является не дословным переводом оригинального документа (PDF), подготовленного Bilgin Ibryam — архитектором из Red Hat, активным участником нескольких проектов Apache и автором книг «Camel Design Patterns» и «Kubernetes Patterns», — а представляет основные его тезисы в довольно свободном изложении.
Читать дальше →

Отлично, мы собрались DevOps-нуться. Получается, 15 лет процессов планирования — коту под хвост?

Время на прочтение7 мин
Количество просмотров7.9K


В больших компаниях редко возникает вопрос «Что собой представляют эти новомодные методики и технологии?», скорее «Как мы можем их у себя применить?».

DevOps существует почти 10 лет, и в последние два-три года большие нормальные организации уже освоились с премудростями DevOps. («Но что такое этот ваш DevOps?!» — вероятно, подумали вы. Договоримся, что это «улучшение качества вашего ПО за счёт ускорения цикла релизов с помощью облачных методик и автоматизации, а также с помощью дополнительных преимуществ ПО, которое остаётся в production».)

Когда Мэтта Карри, менеджера по Agile-трансформации в компании Allstate, спросили о применении DevOps, он ответил: «Думаю, когда айтишники его опробуют, то уже никогда не будут работать по-другому». Вероятно, вы слышите подобное вновь и вновь, когда речь заходит про внедрение DevOps.

Хотя внесение улучшений и изменений часто кажется чем-то, что не может произойти в вашей организации, результаты слишком заманчивы, чтобы их игнорировать, да и бизнес ожидает от ИТ последовательного наращивания возможностей и эффективности. Как сказал Джон Митчелл, директор по цифровой стратегии и поставке компании Duke Energy: «Согласно нашим бизнес-результатам, стало в 10 раз лучше».
Читать дальше →

Для чего программисту Continuous Integration и с чего начинать

Время на прочтение8 мин
Количество просмотров53K
Представьте что в Роскосмосе решили собрать новую ракету не имея при этом чертежей и четкого понимания как ракета должна быть устроена. Отдельный завод занимается корпусом ракеты, отдельный выпускает двигатели, еще один — сопла. Главный менеджер Роскосмоса сказал что он доверяет профессионалам, и мастерски сделегировал всю работу заводам.



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

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

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

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

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

В 1991 году Гради Буч, видимо, устал от такого безобразия, и предложил делать сборку всего проекта каждый день, чтобы выяснять несовместимости не в день релиза, а пораньше — и назвал этот подход Continuous Integration.
Читать дальше →

Kubernetes 1.10: обзор основных новшеств

Время на прочтение7 мин
Количество просмотров9.2K
В конце марта состоялся релиз Kubernetes 1.10. Поддерживая нашу традицию рассказывать подробности о наиболее значимых изменениях в очередном релизе Kubernetes, публикуем этот обзор, подготовленный на основе CHANGELOG-1.10, а также многочисленных issues, pull requests и design proposals. Итак, что же нового приносит K8s 1.10?

Читать дальше →

Эффективное использование spot-инстансов AWS

Время на прочтение3 мин
Количество просмотров11K
image

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

Читать дальше →

Kubernetes 1.10: стабилизируем хранение данных, безопасность и работу с сетью

Время на прочтение5 мин
Количество просмотров5.4K


Примечание редактора: пост создан релиз-командой 1.10


Мы рады сообщить о выпуске Kubernetes 1.10, первого релиза 2018 года!


В новом релизе Kubernetes стал более зрелым, стали лучше масштабируемость и подключение модулей. Новая версия стабилизирует три ключевые области: хранение данных, безопасность и работу с сетью. Отдельно отметим такие дополнения, как внедрение внешних провайдеров учетных данных (альфа), возможность переключения DNS-сервиса на CoreDNS во время установки (бета), перемещение Container Storage Interface (CSI) и постоянных локальных томов в бета-версию.

Читать дальше →

Отправка почты из Docker-контейнера (докеризация postfix и sasl)

Время на прочтение6 мин
Количество просмотров29K
Когда я расположил приложение в Docker-контейнере и попробовал отправить email на почтовый сервер в другом Docker-контейнере, столкнулся с непредвиденной проблемой. Почтовый сервер postfix по умолчанию отправляет почту на произвольный домен получателя только от локального клиента. Все остальные домены нужно прописывать в параметре relay_domains, и если параметр mynetwors настроен правильно, то почта будет отправляться на перечисленные в параметре relay_domains домены с клиента из mynetwors.

В принципе, мне этого было достаточно, т.к. приложение теоретически должно было отправлять почту на ровно один корпоративный почтовый сервер. Но такое решение меня не очень устраивало, потому что задача может поменяться в любой момент. Поэтому, я попытался настроить sasl-авторизацию, которая позволяет отправлять почту авторизованным пользователям на произвольный домен.
Читать дальше →

Ещё один пример автоматизации или PowerShell + Google Apps Script

Время на прочтение3 мин
Количество просмотров12K
Лень — двигатель прогресса…

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

Never Fail Twice, или как построить мониторинговую систему с нуля

Время на прочтение10 мин
Количество просмотров13K
У нас было 2 виртуальные машины, 75 сайтов, десятки тысяч машин для мониторинга, тысячи метрик, две базы данных и одна очередь ActiveMQ, Python и целое множество библиотек всех сортов и расцветок, pandas, а также numpy, dash, flask, SQL Alchemy. Не то чтобы это был необходимый запас для системы, но если начал собирать компоненты, становится трудно остановиться. Единственное, что вызывало у меня опасение — это JavaScript. Ничто в мире не бывает более беспомощным, безответственным и порочным, чем JS зомби. Я знал, что рано или поздно мы перейдем и на эту дрянь.

image
Читать дальше →

Что мы читали в марте: пять необходимых книг для инженеров инфраструктуры

Время на прочтение3 мин
Количество просмотров13K


Мы в Skyeng понемногу строим свою библиотеку важных и полезных книг. Началось все с того, что своими списками в Фейсбуке поделились основатели компании (ссылки ниже), а теперь к ним присоединились и руководители направлений. В марте свой топ профессиональной литературы представила Надежда Рябцова, отвечающая за нашу IT инфраструктуру. Я попросил ее рассказать о каждой книге чуть подробнее – надеюсь, читателям Хабры этот список, дополненный четырьмя еженедельными рассылками, будет полезен.
Читать дальше →

Централизованное обновление сертификатов Let's Encrypt

Время на прочтение3 мин
Количество просмотров18K

letsencrupt server


Всем привет!


В этой статье я опишу как мы решали проблему централизованного обновления сертификатов Let's Encrypt и управления инфраструктурой с помощью ansible.


В нашем решении мы будем использовать:


  • ansible
  • rsync, rsyncd
  • inotify, incron
  • certbot
  • nginx
Читать дальше →

Linux-дистрибутив from scratch для сборки Docker-образов — наш опыт с dappdeps

Время на прочтение11 мин
Количество просмотров19K

Сборка образов для Docker на основе базового образа, как правило, предполагает вызов команд в окружении этого базового образа. Например — вызов команды apt-get, которая есть в базовом образе, для установки новых пакетов.

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

Проблема известная: одним из путей её решения может быть сборка вспомогательного образа и перенос файлов из вспомогательного образа в результирующий. Для этого появились Docker multi-stage builds или образы-артефакты в dapp (Обновлено 13 августа 2019 г.: в настоящее время проект dapp переименован в werf, его код переписан на Go, а документация значительно улучшена). И данный подход идеально решает проблему подобную переносу результатов компиляции исходных кодов в итоговый образ. Однако он не решает все возможные проблемы…
Читать дальше →

The Metrix has you…

Время на прочтение23 мин
Количество просмотров8.9K

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


В этой статье мы рассмотрим, каким образом можно наблюдать за работой продукта и его боевым окружением, научимся собирать жизненно необходимые метрики и представлять их в удобоваримом виде. Узнаем, что такое Time Series и как они могут помочь нашим и сторонним приложениям в процессе диагностики. Подробно познакомимся с лидерами рынка инструментов для мониторинга, специализированным хранилищем InfluxDB и системой визуализации данных Grafana.


Прототипом статьи является доклад Анатолия Кулакова на DotNext 2017 Moscow. Анатолий получал образование специалиста по информационной безопасности, затем зарабатывал как суровый C++ разработчик под Linux. Когда надоело кодировать и захотелось творить, перешёл на C#. Пишет на .NET с первых его версий. Занимается проектированием и построением бизнес-приложений, распределённых и отказоустойчивых систем. Отдыхает с ES, CQRS и DDD.


Перед просмотром можно загрузить слайды в формате PDF.


Осторожно, трафик! В этом посте присутствует огромное количество картинок — слайдов и скриншотов с видео в формате 720p. На слайдах присутствует важный для понимания статьи код.

Читать дальше →

Ближайшие события

Ansible не так прост

Время на прочтение8 мин
Количество просмотров56K
У меня есть три сервера, но я не профессиональный сисадмин. Это означает, что несмотря на четыре базы данных и стопяцот приложений, бэкапы нигде не ведутся, к любой проблеме на сервере я подхожу, шумно вздохнув и бросив тарелку в стену, а операционные системы там достигли EOL два года назад. Я бы рад обновить, но на это нужно выделить, наверное, неделю, чтобы всё забэкапить и переставить. Проще забыть про yum update и apt-get upgrade.

Конечно, это неправильно. Я давно присматривался к chef и Puppet, которые, как я думал, решат все мои проблемы. Но я смотрел на конфиги знакомых проектов и откладывал. Это же нужно изучать, разбираться с ruby, бороться с многочисленными, по отзывам, косяками и ограничениями. Две недели назад статья Георгия amarao стала животворящим пинком. Даже не сама статья, а перечисление систем управления конфигурацией. После чтения комментариев и лёгкого гугления решил: возьму Ansible. Потому что питон, и на проблемы никто не жалуется.



Что ж, тогда я первым буду.
Читать дальше →

Как перейти на микросервисы и не разломать production

Время на прочтение9 мин
Количество просмотров17K
Сегодня расскажем, как переводили на микросервисы монолитное решение. Через наше приложение круглосуточно проходит от 20 до 120 тысяч транзакций в сутки. Пользователи работают в 12 часовых поясах. В то же время функционал добавлялся много и часто, что довольно сложно делать на монолите. Вот почему системе требовались устойчивая работа в режиме 24/7, то есть HighLoad, High Availability и Fault Tolerance.

Мы развиваем этот продукт по модели MVP. Архитектура менялась в несколько этапов вслед за требованиями бизнеса. Первоначально не было возможности сделать всё и сразу, потому что никто не знал, как должно выглядеть решение. Мы двигались по модели Agile, итерациями добавляя и расширяя функциональность.


Читать дальше →

Resolve IP адресов в Linux: понятное и детальное описание

Время на прочтение12 мин
Количество просмотров138K

Настройка сетевого взаимодействия сервисов не самая простая задача и часто осуществляется без глубокого понимания как требуется настраивать систему и какие настройки на что влияют. После миграции сервисов в docker контейнерах с centos 6 на centos 7 я столкнулся со странным поведением вебсервера: он пытался присоединиться к сервису по IPv6, а сервис же слушал только IPv4 адрес. Стандартный совет в такой ситуации — отключить поддержку IPv6. Но это не поможет в ряде случаев. Каких? В этой статье я задался целью собрать и детально объяснить как приложения resolve'ят адреса.

Читать дальше →

От установки AWX до запуска первого плейбука — настройка централизованного управления Ansible

Время на прочтение9 мин
Количество просмотров131K


Количество серверов в нашей инфраструктуре уже перевалило за 800, хотя еще год назад их было около 500. Для работы с этим всем активно используются решения от Red Hat. Про FreeIPA — для организации и управления доступами для Linux-серверов — мы уже писали, сейчас же я хочу затронуть тему управления конфигурациями. Для этих целей у нас юзается Ansible, а с недавних пор к нему добавился AWX — представленное полгода назад решение для централизованного управления плейбуками, расписанием их запусков, управления инвентори, учетными данными для доступа к серверам, а также механизм callback'ов для запроса конфигураций со стороны сервера.

Из-за ряда вещей мы не сразу смогли интегрировать его для работы с нашим основным проектом War Robots, но полей для проверки AWX нашлось предостаточно. Во-первых, в компании ведутся разработки новых проектов, которым нужны dev/stage-окружения и, само собой, production-окружения в перспективе. А недавно к этому добавился еще и проект для внутренней аналитики, которому потребовался полностью новый кластер.

Итак, начнём!
Читать дальше →

Представлен Jenkins X для CI/CD облачных приложений в Kubernetes

Время на прочтение5 мин
Количество просмотров18K


На прошлой неделе авторы Open Source-проекта Jenkins представили своё новое детище, «расширяющее экосистему Jenkins» и предназначенное специально для непрерывной интеграции/доставки приложений в рамках кластеров Kubernetes. Решение получило название Jenkins X. Что же оно делает?
Читать дальше →

Как оптимизировать DevOps с помощью машинного обучения

Время на прочтение10 мин
Количество просмотров6.8K
Популярная сегодня методология разработки программного обеспечения DevOps (development и operations) нацелена на активное взаимодействие и интеграцию специалистов по разработке и специалистов по информационно-технологическому обслуживанию. Характерно, что в ходе DevOps генерируются большие объемы данных, которые можно использовать для упрощения рабочих процессов, оркестрации, мониторинга, диагностики неисправностей или других задач. Проблема в том, что данных этих слишком много. Одни только серверные логи могут накапливать несколько сотен мегабайт в неделю. Если используются инструменты мониторинга, то за короткий промежуток времени генерируются мегабайты и гигабайты данных.

Результат предсказуем: разработчики не просматривают непосредственно сами данные, а устанавливают пороговые значения, то есть ищут исключения, а не занимаются аналитикой данных. Но даже с помощью современных аналитических инструментов вы должны знать, что искать.


Читать дальше →

Тестирование и непрерывная интеграция для Ansible-ролей при помощи Molecule и Jenkins

Время на прочтение7 мин
Количество просмотров19K


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

Вместе с большим количеством кода появляется и старая, знакомая проблема: страх изменений. Люди не желают вносить изменения в «чужую» роль, опасаясь испортить её, вместо этого создают собственную копию. Рефакторинг кода не производится, если код прямо сейчас не находится в фокусе разработки, из-за опасения, что внесённые проблемы могут быть обнаружены спустя слишком большое время. Итог: плохой код растёт как снежный ком.
Читать дальше →

Вклад авторов