Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Building Continuous Delivery - DevOps Way
Search
Andrey Rebrov
October 12, 2013
Programming
400
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
84
Agile в распределенной команде - история it-стартапа продающего духи онлайн
andrebrov
1
250
Тестирование в Agile для больших команд: путь трансформации
andrebrov
1
230
DevOps от и до - что, зачем и как
andrebrov
0
180
Тестирование в Agile: Q&A
andrebrov
0
790
Карго-культ инструментов в DevOps
andrebrov
0
390
Грабли автоматизации тестирования мобильного веба с помощью Selenium 2
andrebrov
0
170
Как инженерные практики помогают экономить бизнесу
andrebrov
2
240
Не превращайте ваши логи в клинопись
andrebrov
1
270
Other Decks in Programming
See All in Programming
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
120
気持ちぃ〜角丸 Squircle
ryu1013
0
340
Domain-Driven Transformation
hschwentner
2
2.3k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
160
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
140
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
1.3k
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
600
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
170
phperだってパンチカードでコーディングしたい
o0h
PRO
0
410
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
190
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
210
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.6k
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
A Soul's Torment
seathinner
8
3.8k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
500
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
Balancing Empowerment & Direction
lara
6
1.3k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Chasing Engaging Ingredients in Design
codingconduct
0
370
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
The untapped power of vector embeddings
frankvandijk
2
1.9k
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 Вопросы?