Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Building Continuous Delivery - DevOps Way
Search
Andrey Rebrov
October 12, 2013
Programming
390
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Building Continuous Delivery - DevOps Way
Andrey Rebrov
October 12, 2013
More Decks by Andrey Rebrov
See All by Andrey Rebrov
Роадмап в тысячу ли начинается с первого брифа
andrebrov
1
76
Agile в распределенной команде - история it-стартапа продающего духи онлайн
andrebrov
1
230
Тестирование в Agile для больших команд: путь трансформации
andrebrov
1
230
DevOps от и до - что, зачем и как
andrebrov
0
170
Тестирование в Agile: Q&A
andrebrov
0
780
Карго-культ инструментов в DevOps
andrebrov
0
380
Грабли автоматизации тестирования мобильного веба с помощью Selenium 2
andrebrov
0
170
Как инженерные практики помогают экономить бизнесу
andrebrov
2
230
Не превращайте ваши логи в клинопись
andrebrov
1
260
Other Decks in Programming
See All in Programming
Creating Composable Callables in Contemporary C++
rollbear
0
160
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
350k
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
210
New "Type" system on PicoRuby
pocke
1
1k
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
270
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
140
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
350
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
290
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
180
Inside Stream API
skrb
1
750
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
130
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Bash Introduction
62gerente
615
220k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Balancing Empowerment & Direction
lara
6
1.2k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Making Projects Easy
brettharned
120
6.7k
Designing for Performance
lara
611
70k
Visualization
eitanlees
152
17k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Transcript
Building deployment pipeline: DevOps way Андрей Ребров Инженерный тренер ScrumTrek
None
Continuous Deployment - Ожидание
Continuous Deployment - Реальность
Инструменты разработки != инструменты админов
Недоверие Ops к Dev
«Прохладные истории» сломанных стендов
Решение • Обеспечить прозрачность процесса • Обеспечить качество поставок •
Свести dev и ops в одном месте
Delivery Pipeline – наш выбор
Это тоже delivery pipeline
None
Culture Automation Measurement Sharing
Culture
Automation • CI Server • Code Analysis • Auto Tests
• Configuration Management
CI Server • Рассмотрим на примере Jenkins
Что нужно 1. Ставим pipeline plugin 2. Делаем dependency между
задачами 3. Создаем новый pipeline view 4. …. 5. Profit!
Альтернативы
Configuration Management • VM control • OS control • Installation
control • …
Как неправильно
Например
Vagrant Vagrant::Config.run do |config| config.vm.box = "precise32" config.vm.box_url = http://files.vagrantup.com/precise32.box
config.vm.network :hostonly, "192.168.33.10” config.vm.share_folder("v-web", "/vagrant/www", "./www", :nfs => true) config.vm.share_folder("v-db", "/vagrant/db", "./db", :nfs => true) config.vm.forward_port 80, 8080 config.vm.provision :shell, :inline => "apt-get update --fix- missing” end
Docker from ubuntu:12.10 run apt-get update run DEBIAN_FRONTEND=noninteractive apt-get install
-q -y python run DEBIAN_FRONTEND=noninteractive apt-get install -q -y python-pip run pip install django run DEBIAN_FRONTEND=noninteractive apt-get install -q -y curl run curl -L https://github.com/shykes/helloflask/archive/ master.tar.gz | tar -xzv run cd helloflask-master && pip install -r requirements.txt
Нужно больше инструментов!
Еще больше!
None
Что важно • Useful reports • Useful logging • Vizualisation
– Dashboards – Graphs – …
Работаем с логами
Node Node Logstash Elas.cSearch Kibana
Как можно все это собрать
Запуск Lumberjack /opt/lumberjack/bin/lumberjack -- host your.logstash.host -- port port-for- these-logs
--ssl-ca-path /etc/ssl/ logstash.pub Для генерации ключей на logstash сервере: openssl req -x509 -newkey rsa:2048 -keyout /etc/ ssl/ logstash.key -out /etc/ssl/logstash.pub - nodes -days 365
Конфигурируем Logstash #1 input { lumberjack { type => "apache-access"
port => 3338 ssl_certificate => "/etc/ssl/logstash.pub" ssl_key => "/etc/ssl/logstash.key" } }
Конфигурируем Logstash #2 filter { date { type => "apache-access"
timestamp => "dd/MMM/yyyy:HH:mm:ss Z" } }
Конфигурируем Logstash #3 output { elasticsearch { embedded => false
cluster => logs host => "172.28.2.2" index => "apache-%{+YYYY.MM}" type => "apache-access" } }
Запуск Logstash /usr/bin/java -jar /opt/logstash/logstash.jar agent -f <path-to- your.conf> -l
<path-to-where-you-want-the.log>
Конфигурируем Elasticsearch cluster.name: logs index.number_of_replicas: 0 path.data: /elasticsearch/data path.work: /elasticsearch/work
path.logs: /elasticsearch/logs bootstrap.mlockall: true discovery.zen.ping.multicast.enabled: false
Запускаем Elasticsearch ./bin/elasticsearch –f или в фоне ./bin/elasticsearch
Запускаем Kibana ruby kibana.rb
Визуализация
Что есть на рынке
Graphite output { graphite { host => "10.10.10.10" port =>
2003 type => "system-netstats" metrics => [ hosts.%{@source_host}.netstats.interfaces.%{iface}.rxpck_s, "%{rxpck_s}”] } }
Что на выходе
Twitter @andrebrov E-mail
[email protected]
Skype rebrov.andrey Вопросы?