Dev Ops A rendszerfejleszts s zemeltets kapcsoldsa VIMIAV
- Slides: 41
Dev. Ops: A rendszerfejlesztés és üzemeltetés kapcsolódása (VIMIAV 21) Dev. Ops – Folytonos integráció (CI) és keretrendszerek Szatmári Zoltán Méréstechnika és Információs Rendszerek Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék 1
Fejlesztési és üzemeltetési életciklus § § § § § Tervezés Fejlesztés Fordítás Csomagolás Tesztelés Integráció Telepítés Üzemeltetés Monitoring / Adatgyűjtés 2
Motivációs gondolatok § Hibák késői javítása egyre drágább 3
Motivációs gondolatok § Csapat kohézió hiánya problémákat okoz o „Az XY osztályt érintő változtatásaid nem kompatibilisek az enyéimmel? Hogy fogjuk összefésülni őket? ” o „Mikor frissítettük a Szuper Függőséget 2. 3. 1 -beta verzióra? ” o „Azt hittem ezt már javítottátok 3 hónapja” o „Nem lebegőpontos bemenetet vár ez az interfész? ” 4
Motivációs gondolatok § Egyéni, kézi fordítás, tesztelés nem reprodukálható o „Nálad ez a teszt lefutott? ” o „Pontosan mi is került a 4. 5 -ös verzióba? ” o „Milyen kódfedettségünk van most? ” o „Az előbb még ugyanez más eredményt adott!” 5
Motivációs gondolatok § Kész termék hiánya stratégiai hátrány lehet o „Hiszen ez működött az én gépemen” o „Szükségem lenne egy friss verzióra, hogy kipróbáljak valamit” o „Jön egy ügyfél, be kéne mutatni neki a rendszert” 6
Miért alkalmazzunk CI eszközöket? § Gyors és gyakori visszajelzés a rendszerfejlesztés különböző fázisairól § Automatizálás, reprodukálhatóság o Fejlesztők tehermentesítése o Kockázat csökkenése § Integráció és telepítés megkönnyítése o Nagy számú komponens integrációja egyre nehezebb § Kódminőség javítása o Mérhető és megjelenített metrikák használhatók o Regressziók vizsgálhatók 7
Continous Integration (CI) Folytonos integráció Martin Fowler § „a software development https: //martinfowler. com/articles /continuous. Integration. html practice where members of a team integrate their work frequently, usually each person integrates at least daily” § „Each integration is verified by an automated build (including test) to detect integration errors Forrás as quickly as possible. ” 8
Continous Delivery / Deployment (CD) „build software so that it is always in a state where it could be put into production” Forrás: https: //martinfowler. com/bliki/Continuous. Delivery. html Forrás 9
Előkövetelmények § Követelmény o Verziókezelés o Automatikus fordítás o Automatikus tesztelés § Nem elvárás o Folyamatos kiadások (CD) o Kézi tesztelések hiánya o Infrastructure as a Code o Agile, Scrum vagy Kanban fejlesztési módszertan 10
Jó gyakorlatok CI kapcsán § § § § Egy közös repository Automatikus fordítás Legalább napi „commit” minden fejlesztőtől Gyors „build” folyamat „Build” hibák gyors javítása Mindenki számára követhető és látható folyamat Telepítés automatizálás (opcionális) 11
Compile vs build Compile != Build 12
Általános CI komponensek § § Forráskód előkészítése (verziókezelés) Fordítás Statikus ellenőrzés Automatikus tesztelés o Unit-, integrációs- és rendszertesztelés § Monitor és trigger folyamatok (automatizálás) § Metrika gyűjtés és reporting 13
Statikus ellenőrzés § Statikus ellenőrzési technikák o Szoftver vizsgálata végrehajtás nélkül o Kódolási irányelvek ellenőrzése o Metrikák számítása § Előny: akkor is elvégezhető, ha o Még nem futtatható a szoftver o Költséges a futtatás o Nem áll rendelkezésre bemenet 14
Statikus ellenőrzés - Findbugs § Nagy, kiterjeszthető szabályhalmaz § Példák: o Rossz szokás: „random object created and used only once” o Helyesség: „bitwise add of signed byte value” o Sebezhetőség: „expose inner static state by storing mutable object into a static field” o Többszálúság: „synchronization on Boolean could lead to deadlock” o Teljesítmény: „invoke to. String() on a string” o Biztonság: „hardcoded constant database password” o Gyanús: „useless assignment in return statement” 15
Statikus ellenőrzés - Sonar. Qube § Kódminőség menedzsment platform § 20+ támogatott nyelv (Java, C, C++, C#, …) § Kódolási irányelvek vizsgálata: o Kódduplikálás o Tesztfedettség o Kód komplexitás o Lehetséges hibák és sebezhetőségek o Költség becslés § Jelentések, diagramok generálása 16
Tesztelés § Általános teszt típusok o o Unit tesztelés Integrációs tesztelés Rendszertesztelés Robosztusság tesztelés § Tesztelési célok o o o Smoke teszt Regressziós teszt Teljesítmény teszt Biztonsági teszt Elfogadhatósági teszt 17
CI eszközök https: //en. wikipedia. org/wiki/Comparison_of_continuous_integration_software 18
Jenkins § Nyílt forráskódú CI szerver § Könnyű telepítés és használat o Webes GUI § Pluginekkel való bővíthetőség § Stabil, erős közösség, támogatás § Elosztott, párhuzamos megvalósítás 19
Jenkins - Funkciók § § § Build trigger Forráskód előkészítése Automatikus fordítás, tesztelés Jelentések előállítása Értesítések kiküldése Telepítés 20
Jenkins – Build Trigger § § § Kézi „build” Periodikus Feladatok közötti függőség Verziókezelő változás REST hívásra Külső rendszerek o Chat o Jira 21
Jenkins - Forráskód előkészítése 22
Jenkins - Fordítási lépések § Automatikus fordítási eszközök meghívása o Maven o Ant o Gradle § Shell script o Bash o Python o Ruby o Groovy § Egyéb műveletek 23
Jenkins – Fordítási környezetek § Dedikált „workspace” minden fordításhoz o Opcionális takarítás az előző build után § Környezeti változók használata § Docker, vagy VM konténerben történő fordítás § Skálázhatóság: Jenkins workers o Saját dedikált worker o On-demand Cloud worker (Pl. AWS EC 2) 24
Jenkins – Jelentések § Statikus analízis jelentések o Checkstyle, Findbugs, PMD, Sonar. Qube jelentések § Teszt eredmény és fedettség jelentések o Junit, Test. NG, Sonar. Qube, Cobertura 25
Jenkins - Értesítések § § § E-mail Twitter Slack Google calendar RSS … 26
Jenkins - Plugins § § § § § Build trigger Forráskód/Verziókezelés Build eszközök Build wrappers Build jelentések Build értesítések Artifact feltöltés, publikálás Telepítés UI kiegészítők Authentikáció és felhazsnálókezelés 27
Jenkins - Jenkinsfile § CI as a Code § Deklaratív pipeline leírás, imperatív betétekkel 28
Travis § Nyílt forráskódú § Hosztolt (Cloud) szolgáltatás § Ingyenes minden publikus Git. Hub projekthez 29
Travis - Funkciók § § § Git. Hub projektek figyelése Tesztek futtatása Jelentések készítése „Artifact”-ok előállítása Kódminőség ellenőrzése Telepítés felhő-alapú környezetbe § … igazából bármi, amire szükség van 30
Támogatott platformok 31
Travis - Architektúra 32
Előnyök és hátrányok § Előnyök o Könnyű konfigurálhatóság o Jó Git. Hub integráció o Jó teljesítmény és sebesség o Népszerű, nagy támogatottság, közösség § Hátrányok o Nincs kézi fordítási lehetőség o Hosztolt infrastruktúra, esetleges leállások o Kevésbé kiterjeszthető, mint a Jenkins o Titkos/érzékeny projektekhez nem alkalmas 33
. travis. yml • YAML formátumú leíró nyelv o CI as a Code § Alapértelmezett sablonok különböző nyelvekhez o Java: gradle / maven fordítás minden további beállítás nélkül § Környezeti változók, titkosított kulcsok használhatóak 34
Travis vs Jenkins 35
Git. Lab + Git. Lab CI § Jó alternatíva a Git. Hub + Travis kombinációra § Saját üzemeltetésű verziókezelő + CI eszköz § YAML formátumú CI pipeline leírás 36
Git. Lab CI -. gitlab-ci. yml 37
Git. Lab CI 38
Git. Lab CI 39
Alternatívák § Cloud o circleci. com – Travis-hez nagyon hasonló o appveyor. com – Windows alkalmazásokhoz o codeship. io – Erős CD cloud szolgáltatók felé o drone. io § Saját üzemeltetés o Dot. CI o Drone 41
Hivatkozások § § § https: //jenkins. io/ https: //travis-ci. org https: //docs. travis-ci. com/user/deployment/heroku/ https: //heroku. com https: //spring. io/guides/gs/spring-boot-docker/ 42
- Dev ops sec
- Capato dev ops
- Struktur organisasi ditreskrimsus polda metro jaya
- Duk ops adalah
- Gcaa car ops
- Riss ops
- Ad ops events
- Student transportation omaha
- Fed bizz ops
- Fin ops
- Ops operating system
- Ops technology sign up
- Cp ops betekenis
- Ops
- Dr derek bub
- Pansops
- Ops 2005
- Ops 2014
- Winter ops solution
- Cps ops
- Priorities of work army
- Ops technology invoicing
- Ops jyu
- Pans ops circling radius
- Gndu verification
- Field scout mobile app
- Epo ops
- Tingkatan kantor polisi
- Declinazione nomen nominis
- Weather predictive services
- Jurgen asp
- Capacity 4 dev
- ///remote/fgt_lang?lang=/../../../..//////////dev/
- Dev.st.c
- Sample standard deviation symbol
- Dev chanchani
- The practical dev
- Pascal criado
- Sosyal bilgiler dev paylaşım alanı
- Dev c++ kurulumu
- Conceptualized web application development operations
- Alta dev