Top Banner
20. 9. 2016 Cesta změněného řádku kódu do produkce Michal Petřík, Head of Software Development
28

Odborná snídaně 20.9. - Agile@DevOps - 2. část

Apr 12, 2017

Download

Software

Profinit
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Odborná snídaně 20.9. - Agile@DevOps - 2. část

20. 9. 2016

Cesta změněnéhořádku kódu do produkce

Michal Petřík, Head of Software Development

Page 2: Odborná snídaně 20.9. - Agile@DevOps - 2. část

2

Co nás čeká a nemine

› Co je DevOps?

› DevOps a architektura

› Ideální podoba DevOps

› Případové studie

› Diskuze

Page 3: Odborná snídaně 20.9. - Agile@DevOps - 2. část

Co je DevOps

Page 4: Odborná snídaně 20.9. - Agile@DevOps - 2. část

4

Co je DevOps?

› Development & Operations

Page 5: Odborná snídaně 20.9. - Agile@DevOps - 2. část

5

Přelom století

Co je DevOps?

DailyBuild

Compile & Assemble

Smoke test

Continuous Integration

Build & Test

Every Commit

Static Analysis

Continuous Delivery

Continous integration

Provisioning

Configuration management

Deployment

Konec devadesátých let Počátek devadesátých let

Page 6: Odborná snídaně 20.9. - Agile@DevOps - 2. část

6

Co je DevOps?

› Forma vývojového cyklu– Každý krok je maximálně automatizován– Vše je verzováno a testováno (nejen kód, ale i model databáze, data, ...)– Na všechna prostředí se používá jeden unifikovaný proces– Celý cyklus řešen formou malých kroků Deployment Pipeline– Rychlá a maximální zpětná vazba– podporuje Agilní vývoj (Agile bez DevOps lze jen obtížně realizovat)

› Je nutná odpovídající kultura ve vývojovém týmuInspirováno http://www.slideshare.net/AmazonWebServices/dvo202-devops-at-amazon-a-look-at-our-tools-processes

bug = true;

Vývojáři Zákazník

Build Test Release

Monitoring Planning

bug = false;

Page 7: Odborná snídaně 20.9. - Agile@DevOps - 2. část

7

Co je DevOps?

Efektivní využití nástrojů

› Version Control

› Provisioning

› Configuration Management

› Build Automation

› Artifact Repository

› Static Analysis

› Automated Testing

› Test Data

› Continuous Integrationand Delivery

› System Monitoring & Analytics

› ... a vůle zlepšovat

Page 8: Odborná snídaně 20.9. - Agile@DevOps - 2. část

8

Hlavní přínosy

› Snížení TTM business požadavků

› Snížení množství chyb se současným zvýšení rychlosti jejich oprav

› Snížení nákladů na zdroje (development i operations)

› Jednodušší zapojení nových lidí do týmu – silná zpětná vazba– tzv. Self-service

› Možnost „bezpečného experimentování“

Trvání cyklu

Důvěra v dodávku

Náklady Schopnost experimentovat

Trvání cyklu

Důvěra v dodávku

Náklady Schopnost experimentovat

Page 9: Odborná snídaně 20.9. - Agile@DevOps - 2. část

DevOps a architektura(aneb... ale u nás by to nešlo)

Page 10: Odborná snídaně 20.9. - Agile@DevOps - 2. část

10

DevOps a architektura

Velmi často pracujeme s tímto:

...a good old Monolith

Page 11: Odborná snídaně 20.9. - Agile@DevOps - 2. část

11

DevOps a architektura

Raději bychom možná ale pracovali s tímto:

... brand new cool Microservices

Page 12: Odborná snídaně 20.9. - Agile@DevOps - 2. část

12

DevOps a architektura

Ve spojení s DevOps lze aplikovat tzv. „Strangler Pattern“

Abstrakce

Uživatel

Abstrakce

Uživatel

Abstrakce

Uživatel

Abstrakce

Uživatel

Page 13: Odborná snídaně 20.9. - Agile@DevOps - 2. část

13

DevOps a architektura

Změna architektury jde ruku v ruce s release cyklem

Build Test Release

Build Test Release

Build Test Release

Build Test Release

Build Test Release

Page 14: Odborná snídaně 20.9. - Agile@DevOps - 2. část

14

DevOps a architektura

› Stejně jako u změny architektury lze DevOps zavádět postupně

› Postupovat lze „z obou stran“– Ze strany vývoje například ve formě automatického buildu, unit testů, ...– Ze strany automatizace nasazení na prostředí, apod.

› Je vhodné zvolit identifikovat oblasti, ve kterých změna nejvíce prospěje– Předpokládá sběr a vyhodnocování správných metrik, například zdroje chyb,

důvody odstávek monitoring

Page 15: Odborná snídaně 20.9. - Agile@DevOps - 2. část

15

DevOps a architektura

Page 16: Odborná snídaně 20.9. - Agile@DevOps - 2. část

Ideální podoba

Page 17: Odborná snídaně 20.9. - Agile@DevOps - 2. část

Ideální podoba cesty jednoho řádku kódu

ReleaseTest DeployIntegrate OperateCode Build

Agilní vývoj

Continuous Integration

Continuous Delivery

Continuous Deployment

DevOps

Page 18: Odborná snídaně 20.9. - Agile@DevOps - 2. část

Ideální podoba cesty jednoho řádku kódu

Vývojář VCS Continuous Integration

Quality Gate Test Env.

xStage Env.

Production

Monitoring & PlanningTesting

Page 19: Odborná snídaně 20.9. - Agile@DevOps - 2. část

Ideální podoba cesty jednoho řádku kódu

Page 20: Odborná snídaně 20.9. - Agile@DevOps - 2. část

Případové studie

Page 21: Odborná snídaně 20.9. - Agile@DevOps - 2. část

21

Insurance Core System

› Systém pro komplexní správu neživotního pojištění

› Technologie:– Java 7– Sybase ASE 15.7 a ASA 11– Struts, jQuery– JBoss/Tomcat

› Jeden kód je použit pro tvorbu webové i offline aplikace

› Sada nástrojů– SVN– Apache Ant– Liquibase– Jenkins– Groovy/Bash– jUnit, SonarQube– Selenium / BrowserStack– Membrane Proxy, SoapUI

Page 22: Odborná snídaně 20.9. - Agile@DevOps - 2. část

22

Insurance Core System

2004

BrowserStack, Liquibase

CVS SVN, Groovy

Deployment Pipeline

CVS, Ant, jUnit, Perl, Bash

Cruise control CI, HTML Unit, CheckStyle

2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 20162003

Jenkins CI, Selenium IDE, SonarQube

Page 23: Odborná snídaně 20.9. - Agile@DevOps - 2. část

23

Insurance Core System – zajímavé oblasti

Deployment pipeline

› Postupná evoluce z Perl/Bash skriptů po jednotlivých oblastech

› V současné době využívá Groovy a vlastní DSL

› Každá oblast má svůj vlastní job (build, unit test, stat. analýza, ...)

› Funguje na bázi Self-service

Page 24: Odborná snídaně 20.9. - Agile@DevOps - 2. část

24

Insurance Core System – zajímavé oblasti

Deployment pipeline

Page 25: Odborná snídaně 20.9. - Agile@DevOps - 2. část

25

Insurance Core System – zajímavé oblasti

Verzování databázového modelu

› Použití nástroje Liquibase– Podpora verzování ve větvích a možnosti slučování změn– Abstrakce změn (zápis v XML, YAML, JSON nebo native SQL)– Možnost nastavení logiky dle kontextů write once deploy anywhere– Možnost rozšiřitelnosti o vlastní pluginy (například generování rollback,

auditačních triggerů, ....)

› Implementace přístupem: „od teď“ (oproti „od nuly“)

› nový přístup k vývoji v DB:– Jednoduchá aktualizace lokálních databází– Integrační databáze slouží výhradně k integraci

Page 26: Odborná snídaně 20.9. - Agile@DevOps - 2. část

27

Shrnutí

› Pomocí aplikace postupných změn je dosaženo Continuous Delivery

› DevOps na úrovni interního týmu

› Jsou použity výhradně OpenSource/volně dostupné nástroje

› Když není k dispozici hotové řešení vlastní microskripty/pluginy

› Nic ale není černobílé

› Velmi těžko dosažitelné bez „týmového nadšení“

Page 27: Odborná snídaně 20.9. - Agile@DevOps - 2. část

28

Diskuze

Page 28: Odborná snídaně 20.9. - Agile@DevOps - 2. část

Profinit, s.r.o.Tychonova 2, 160 00 Praha 6

Telefon+ 420 224 316 016

Webwww.profinit.eu

LinkedInlinkedin.com/company/profinit

Twittertwitter.com/Profinit_EU

Děkujemeza pozornost