Building the continuous integration layer in Avea

16
Building the Continuous Integration Layer in Avea Oğuzhan Özavar IT Development Lead, Avea [email protected] [email protected] © 2013 IBM Corporation

description

Kaynak Kod Yönetimi, Build & Deployment Otomasyonu, Test Odaklı Geliştirme, Statik Kod Analizi, Test Otomasyonu, Lab Yönetimi, Çevik İterasyonlar, Pipeline Yönetimi

Transcript of Building the continuous integration layer in Avea

Page 1: Building the continuous integration layer in Avea

Building the Continuous Integration Layer in Avea

Oğuzhan ÖzavarIT Development Lead, Avea

[email protected]@gmail.com

© 2013 IBM Corporation

Page 2: Building the continuous integration layer in Avea

2

Gündem

CI – CD Giriş

İlk hedef verimli kod geliştirme

– Kaynak Kod Yönetimi

– Build & Deployment otomasyonu

– Test odaklı geliştirme

– Statik kod analizi

Nihai hedef verimli yaşam döngüsü yönetimi

– Testlerin otomasyonu

– Çevik iterasyonlar

– Lab Yönetimi

– Build Pipeline Yönetimi

Page 3: Building the continuous integration layer in Avea

3

Continuous Integration – Continuous Delivery

Analiz & Tasarım

Çevik İterasyonlar

Test

Test OtomasyonLab Yönetimi

Geliştirme

Kaynak Kod YönetimiBuild & Deployment Otomasyonu

Test Odaklı GeliştirmeStatik Kod Analizi

Continuous Delivery

Continuous Integration

Page 4: Building the continuous integration layer in Avea

4

İlk Hedef Verimli Kod Geliştirme

Team ConcertSource Control

•Uygulama kodu•Test kodu

Team ConcertBuild Definitions

•Build parametreleri•Build takvimi

Maven & Ant

RTC

EclipseRTC Client

Lokal Build

Build Sunucu

Kod İlet

Build Tanımla

Team ConcertBuild Process

Kodları İndir

Nexus Sonar

KullanıcılarıBilgilendir

ReferanslarıYönet

Oluşan paketiversiyonla

Statik AnalizTetikle

BuildTetikle

Unit TestFramework

Unit Test Tetikle

SonuçlarıYayınla

Continuous Dev BuildDöngüsü

Page 5: Building the continuous integration layer in Avea

5

Kaynak Kod Yönetimi

Tüm uygulamalar merkezi RTC repository de tutuluyor

Paralel dev streamler tek bir production streame akacak şekilde tanımlı

Sürüm planlamasına göre production streame manual merge yapılıyor

Page 6: Building the continuous integration layer in Avea

6

Build & Deployment Otomasyonu

Yeni bir uygulama geliştirirken Otomatik build & deployment en başta gerçeklenmeli

Büyük bir uygulama sonradan otomatize edildiğinde refactoring gerekebilir

– Circular Dependency

– Hardcode Ortam Parametreleri

– Dizin yapısı

– Referanslar

Maven

– Birçok konuda standartlaşmayı sağlıyor (otomatik dokumantasyon, otomatik versiyonlama vb.)

– Referanslar otomatik yönetiliyor.

– Bir artifact repository ile kullanıldığında kontrol sağlanabilir

– Çok sayıda plugin mevcut

Page 7: Building the continuous integration layer in Avea

7

Test Odaklı Geliştirme

Uygulama kodunu geliştirmeden önce test kodunun geliştirilmesi felsefesine dayanır

– Birim geliştirme maliyetini artırır

– Geliştirme kaynaklı hata sayısı sıfıra yaklaşır

– Refactor işlemleri korku olmaktan çıkar

– Yeni başlayan biri saatler içinde release yapabilir

Teknolojiye uygun unit test framework belirlenir

– Junit (Java) Nunit (.Net) utPLSQL (Oracle DB) SoapUI (web services)

Build mekanizmasına eklenerek geliştirme sürecinde tüm testlerin sürekli çalışır halde olması garanti altına alınır

Testlerin yazılmasını garanti altına almak için minimum test kapsama oranı belirlenerek build mekanizmasında kontrol edilebilir

Page 8: Building the continuous integration layer in Avea

8

Test Odaklı Geliştirme

Page 9: Building the continuous integration layer in Avea

9

Statik Kod Analizi

Kaynak kodların endüstri standartlarına göre yapısal analizini sağlayan bir framework belirlenir

Build mekanizmasına eklenerek geliştirme sürecinde istenmeyen paternlerin yakalanması sağlanır

Belirlenen politikaları ihlal eden bulgular için otomatik hata kaydı açılması sağlanır

Satınalmalarda önemli bir başvuru kaynağı

Dışarıya iş yaptırılması sürecinin yönetilmesinde önemli bir girdi sağlar

Page 10: Building the continuous integration layer in Avea

10

Nihai Hedef: Verimli Yaşam Döngüsü Yönetimi

Serbest Manual Süreç Continuous Delivery

Page 11: Building the continuous integration layer in Avea

11

Testlerin Otomasyonu

Jenkins

Avea QCInterface

HP Quality Center

Rational Team Concert

App 1 Build

App 2 Build

App 3 Build

IntegrationBuild

Test Ortamı

Testleri koş

Entegrasyon kapsamındaki buildleri çalıştır

Test başlat

KurulumYap

Page 12: Building the continuous integration layer in Avea

12

Çevik İterasyonlar

Fonksyonel testlerin süreki bir döngüde koşulabilmesi için çevik iterasyonlar gerekli

Çevik iterasyonlarda analiz ve tasarım storyler bazında yapılmalı

Test otomasyonun ihtiyaç duyduğu girdiler hızlı bir prototip geliştirilerek sağlanmalı

Çevik iterasyon planlarının yapılabildiği bir ortam belirlenir. Bu ortamın continuous integration katmanı ile entegre çalışması tercih sebebi olmalıdır. (RTC, TFS, Jira vb.)

Page 13: Building the continuous integration layer in Avea

13

Lab Yönetimi

Statik test ortamlarının ortaklaşa kullanımı test otomasyonu için zorluk yaratıyor

– Devam eden diğer testler ile senkronize olma gereği

– Uygulama versiyonlarının ve datanın başlangıçtaki haline dönülmesi

– Ortam kısıtlamaları (WLS node larda admin console un ortak olması vb.)

– Performans sorunları

Lab Yönetimi

– Ortamlar otomasyon test öncesi ayağa kaldırılır, işi bitince geri dönüştürülür

– Ortamların sanallaştırılması dolayısı ile ciddi donanım ve sistem yatırımı gerektirebilir

– Donanım verimliliği homojendir

– Diğer testlere bağımlılık yoktur

– Ortam kısıtlamaları minimumdadır (Sanallaştırlamayan sistemler hariç)

– Büyüme ölçeklendirilebilir durumdadır

Page 14: Building the continuous integration layer in Avea

14

Build Pipeline Yönetimi

Dev, Test ve Production döngülerini koordine eden ve tekrar edebilen bir süreç oluşturulabilmeli

Otomasyon adımları ile manual adımlar aynı süreçte kurgulanabilmeli

Ürüne ait tüm uygulamaların hangi ortamda ve hangi aşamada olduğunun takibi tek yerden yapılabilmelidir

Page 15: Building the continuous integration layer in Avea

15

Build Pipeline Yönetimi

Page 16: Building the continuous integration layer in Avea

16

Teşekkürler

Soru - Cevap

?