Development environment Build process...

26
Development environment Build process DevOps Tomáš Krátký, Bohumír Zoubek

Transcript of Development environment Build process...

Page 1: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Development environment

Build process

DevOps

Tomáš Krátký, Bohumír Zoubek

Page 2: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Softwarový proces

?

?

?

Page 3: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Softwarový proces

Převzato z http://csse.usc.edu/csse/research/CORADMO/

Page 4: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Vývojové prostředí

Page 5: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Motivace

o Váš systém je určen pro cílové prostředí u zákazníka, ale …

– musíte ho někde vyvíjet a testovat,

– zákazník ho musí někde před nasazením do produkce akceptačně otestovat,

– zákazník může mít více produkčních prostředí

Je nezbytná existence dalších prostředí

mimo cílové !

Typy prostředí

o vývojová,

o integrační,

o testovací,

o předakceptační,

o akceptační,

o produkční #1,

o produkční #2,

o …

Page 6: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Continuous Integration

Vývojová

platforma

Integrační

platforma

Testovací

platforma

SCM

Lokální vývoj

Pravidelný

commit

Pravidelný

build

Smoke testing, Continuous Integration

dodávka

Povinná sada testů

(krátké a rychlé) Všechny automatické

testy

Regresní testy

(automatické a manuální)

Výkonové a jiné

nefunkční testy,

manuální testy

Page 7: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Dílčí úkoly

o všechny typy konfiguračních jednotek

o zálohy a jejich obnova

o evidence a zálohy (podpůrného) SW

o dodávky ("malé"/ "velké")

o postupy (instalace, modifikace, přístupy ...)

o záloha použitých zdrojových kódů

o zdrojové kódy použitých knihoven

o audit, ...

Page 8: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Přestanou-li existovat sdílené

disky, repository, PC lidí na

projektu, vývojové prostředí, pak …

ze záloh je možno postavit

vývojové prostředí …

a to ekonomicky.

Page 9: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Build proces

Page 10: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Souvislost s CM

Page 11: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Co musím umět

o Vyrobit dodávku

o Nainstalovat dodávku

o Připravit dodávku pro instalaci zákazníkem

o Dodat systém jako celek

o Opravit malou drobnost

…a opravit ji rychle a ekonomicky …

o Poradit si s různými typy prostředí

– aplikační server, databázový a replikační server, operační systém, …

o …

Page 12: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Podstatné pojmy

o Release (Build)

o Oprava buildu (patch)

o Dodávka

– Malá

– Velká

o Instalační set

– En-bloc

– Inkrementální

Page 13: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Poznatky z praxe

Page 14: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Poznatky z praxe

o Maximálně věrné prostředí vývojové, testovací, akceptační, …

o Denní build

o Proces dodávek

– jednoduchý

– automatizovaný

o Kontrolované

– zálohovací logy

– reporty automatických testů

Page 15: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

DevOps

Page 16: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

17

Co je DevOps?

› Development & Operations

Page 17: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

18

Přelom století

Co je DevOps?

Daily Build

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 18: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

19

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ýmu

Inspirová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 19: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

20

Co je DevOps?

Efektivní využití nástrojů

› Version Control

› Provisioning

› Configuration Management

› Build Automation

› Artifact Repository

› Static Analysis

› Automated Testing

› Test Data

› Continuous Integration

and Delivery

› System Monitoring & Analytics

› ... a vůle zlepšovat

Page 20: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

21

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 21: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

22

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: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

23

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 2016 2003

Jenkins CI, Selenium IDE, SonarQube

Page 23: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

24

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: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

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 25: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

26

Diskuze

Page 26: Development environment Build process DevOpsprofinit.eu/wp-content/uploads/2016/12/08_DevEnvBuild... · 2016-12-27 · 25 Insurance Core System – zajímavé oblasti Verzování

Profinit, s.r.o.

Tychonova 2, 160 00 Praha 6

Telefon

+ 420 224 316 016

Web

www.profinit.eu

LinkedIn

linkedin.com/company/profinit

Twitter

twitter.com/Profinit_EU

Děkujeme

za pozornost