SlideShare a Scribd company logo
Fejlesztés, tesztelés élesben
Papp Dávid
… fájdalom mentesen
A következőkről fogok beszélni
• Vagrant
– Egységes fejlesztési környezet
• Jenkins
– Automatizált teszt
• Capistrano
– Élesítés
Miért fáj ha…
• … nincs egységes fejlesztői környezet
• ( nálam még működött )
• … nincsenek automatizált tesztek
• ( a fejlesztő/tesztelő azt mondta
mehet… )
• … nincs deployer
• ( tuti minden szerverre ki ment a kód? )
Mit tud nyújtani nekünk aVagrant?
• Egységes fejlesztői környezetet biztosít
• Központilag konfigurálható ( Puppet, Chef )
• Könnyen telepíthető és hordozható
• VirtualBox ésVMware támogatás
..és még (mit adtak nekünk a
rómaiak) ?
• Decentralizált
• Jobb erőforrás kihasználás
• A fejlesztő saját sandboxot kap
• Cloud friendly
Miért pontVagrant?
• Open Source
• Pluginekkel könnyen bővíthető
• Egyszerű kezelhetőség
• VirtualBoxot használ
Negatívumok
• Bevezetése erőforrás-igényes lehet
• Nem tudunk esetlegesen az élessel megegyező
infrastruktúrát építeni
• Üzemeltetők részéről Puppet,Chef tudás
szükséges lehet
• I/O igényes műveleteknél lassú
• Csak linuxot támogat
Példa konfig
Vagrant.configure("2") do |config|
config.vm.hostname = "webconf2013.iamhere.local"
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.network :private_network, ip: "10.1.1.58"
config.vm.network :forwarded_port, guest: 80, host: 8080
config.vm.network :forwarded_port, guest: 443, host: 8443
Példa konfig
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "puppet/manifests"
puppet.manifest_file = "base.pp"
end
config.vm.provider :virtualbox do |vb|
vb.gui = false
vb.customize ["modifyvm", :id, "--memory", "512"]
end
end
Demo
Miért jó az automatizált teszt?
• Nem kell ott ülni amíg fut a teszt
• Hatékonyabbá teszi a tesztelők munkáját
• Automatikus teljesítmény, kódminőség
figyelés és figyelmeztetés
Miért pont a Jenkins?
• Ingyenes és open source
• Egyszerű kezelhetőség
• Egyszerű bővíthetőség
• Nagy community 600+ plugin érhető el
PMD & Duplicate Code
Code Coverage
Test ResultTrend
Negatívumok
• Kézzel kell írni a build.xml-t
• Sok feladat esetén memória igényes
• Nem clusterhezhető
• Nehezen upgradelhető ( a pluginek miatt )
Példa
<target name="lint" description="Perform syntax check of sourcecode files">
<apply executable="php" failonerror="true">
<arg value="-l" />
<fileset dir="${sourcedir}">
<include name="**/*.php" />
<modified />
</fileset>
<fileset dir="${basedir}/src/">
<include name="**/*Test.php" />
<modified />
</fileset>
</apply>
</target>
</target>
Miért használjunk deployert?
• Multi staging
• Multi node type
• Emberi hiba faktor kiszűrése
• Minden szerveren a megfelelő kódbázis legyen
kint
• Rollback képesség
Mi a capistrano előnye?
• Könnyen bővíthető
• Open Source
• Rengetek plugin elérhető ( pl. teljes symfony
támogatás )
• Bevezetése egyszerű nem igényel nagyobb
infrastrukturális beállítást
• Eszközt és módszert add a kezünkbe
Mi a hátránya a Capistranonak?
• Kezdetleges cloud és cdn támogatás
– … de azt inkább írni kell
• Bővítéséhez ruby tudás szükséges
Példa
set :application, "webconf"
set :deploy_to, "/var/www/webconf"
set :repository, "https://github.com/WordPress/WordPress.git"
set :scm, :git
set :branch, 'master'
set :keep_releases, 3
set :use_sudo, false
set :update_vendors, false
set :deploy_via, :copy
role :web, "10.1.1.58"
set :user, "www-data"
set :copy_exclude, [".git", ".DS_Store", ".gitignore", ".gitmodules","nbproject"]
logger.level = Logger::MAX_LEVEL
Kérdések?
Köszönöm szépen a figyelmet!

More Related Content

Similar to Webkonf 2013

Budapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentBudapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentDigital Natives
 
Szoftver tesztelés
Szoftver tesztelésSzoftver tesztelés
Szoftver tesztelés
Krisztián Gyula Tóth
 
PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaFerenc Kovács
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Krisztián Gyula Tóth
 
Continous Integration and Deployment
Continous Integration and DeploymentContinous Integration and Deployment
Continous Integration and DeploymentKároly Nagy
 
A Firefox-on túl is Mozilla
A Firefox-on túl is MozillaA Firefox-on túl is Mozilla
A Firefox-on túl is Mozilla
Kálmán "KAMI" Szalai
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Attila Balogh-Biró
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Attila Balogh-Biró
 
Budapest.rb 201010
Budapest.rb 201010Budapest.rb 201010
Budapest.rb 201010
Digital Natives
 
Alumni Release Process
Alumni Release ProcessAlumni Release Process
Alumni Release Process
Gábor Nagymajtényi
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Open Academy
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaFerenc Kovács
 
Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddal
thesnufkin
 
Többszálú javascript
Többszálú javascriptTöbbszálú javascript
Többszálú javascript
Máté Farkas
 
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.Ferenc Kovács
 
Devops meetup - Automatizált tesztek
Devops meetup - Automatizált tesztekDevops meetup - Automatizált tesztek
Devops meetup - Automatizált tesztekZsolt Takács
 
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
Gáspár Nagy
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtest
czras
 

Similar to Webkonf 2013 (20)

Ci
CiCi
Ci
 
Budapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentBudapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails Deployment
 
Szoftver tesztelés
Szoftver tesztelésSzoftver tesztelés
Szoftver tesztelés
 
PHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosításaPHP alkalmazások minőségbiztosítása
PHP alkalmazások minőségbiztosítása
 
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelvenSzerver oldali fejlesztés korszerű módszerekkel C# nyelven
Szerver oldali fejlesztés korszerű módszerekkel C# nyelven
 
Continous Integration and Deployment
Continous Integration and DeploymentContinous Integration and Deployment
Continous Integration and Deployment
 
A Firefox-on túl is Mozilla
A Firefox-on túl is MozillaA Firefox-on túl is Mozilla
A Firefox-on túl is Mozilla
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
 
Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (Enterprise java evolució, avagy java ee (
Enterprise java evolució, avagy java ee (
 
Budapest.rb 201010
Budapest.rb 201010Budapest.rb 201010
Budapest.rb 201010
 
Alumni Release Process
Alumni Release ProcessAlumni Release Process
Alumni Release Process
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálása
 
Mi a baj a Drupaloddal
Mi a baj a DrupaloddalMi a baj a Drupaloddal
Mi a baj a Drupaloddal
 
Többszálú javascript
Többszálú javascriptTöbbszálú javascript
Többszálú javascript
 
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
 
A Mozilla nem csak Firefox
A Mozilla nem csak FirefoxA Mozilla nem csak Firefox
A Mozilla nem csak Firefox
 
Devops meetup - Automatizált tesztek
Devops meetup - Automatizált tesztekDevops meetup - Automatizált tesztek
Devops meetup - Automatizált tesztek
 
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
A tesztelés szerepe folyamatos kihelyezést használó projektekben (Microsoft, ...
 
20111130 oa gtest
20111130 oa gtest20111130 oa gtest
20111130 oa gtest
 

More from David Papp

Kubernetes Node and Application scaling
Kubernetes Node and Application scalingKubernetes Node and Application scaling
Kubernetes Node and Application scaling
David Papp
 
May Microservices Meetup for Budapest
May Microservices Meetup for BudapestMay Microservices Meetup for Budapest
May Microservices Meetup for Budapest
David Papp
 
Microservices from operations aspect
Microservices from operations aspectMicroservices from operations aspect
Microservices from operations aspect
David Papp
 
Microservices environment in production
Microservices environment in productionMicroservices environment in production
Microservices environment in production
David Papp
 
Continuous Deployment with Containers
Continuous Deployment with ContainersContinuous Deployment with Containers
Continuous Deployment with Containers
David Papp
 
Continuous Deployment with Containers
Continuous Deployment with ContainersContinuous Deployment with Containers
Continuous Deployment with Containers
David Papp
 

More from David Papp (6)

Kubernetes Node and Application scaling
Kubernetes Node and Application scalingKubernetes Node and Application scaling
Kubernetes Node and Application scaling
 
May Microservices Meetup for Budapest
May Microservices Meetup for BudapestMay Microservices Meetup for Budapest
May Microservices Meetup for Budapest
 
Microservices from operations aspect
Microservices from operations aspectMicroservices from operations aspect
Microservices from operations aspect
 
Microservices environment in production
Microservices environment in productionMicroservices environment in production
Microservices environment in production
 
Continuous Deployment with Containers
Continuous Deployment with ContainersContinuous Deployment with Containers
Continuous Deployment with Containers
 
Continuous Deployment with Containers
Continuous Deployment with ContainersContinuous Deployment with Containers
Continuous Deployment with Containers
 

Webkonf 2013

  • 1. Fejlesztés, tesztelés élesben Papp Dávid … fájdalom mentesen
  • 2. A következőkről fogok beszélni • Vagrant – Egységes fejlesztési környezet • Jenkins – Automatizált teszt • Capistrano – Élesítés
  • 3. Miért fáj ha… • … nincs egységes fejlesztői környezet • ( nálam még működött ) • … nincsenek automatizált tesztek • ( a fejlesztő/tesztelő azt mondta mehet… ) • … nincs deployer • ( tuti minden szerverre ki ment a kód? )
  • 4. Mit tud nyújtani nekünk aVagrant? • Egységes fejlesztői környezetet biztosít • Központilag konfigurálható ( Puppet, Chef ) • Könnyen telepíthető és hordozható • VirtualBox ésVMware támogatás
  • 5. ..és még (mit adtak nekünk a rómaiak) ? • Decentralizált • Jobb erőforrás kihasználás • A fejlesztő saját sandboxot kap • Cloud friendly
  • 6. Miért pontVagrant? • Open Source • Pluginekkel könnyen bővíthető • Egyszerű kezelhetőség • VirtualBoxot használ
  • 7. Negatívumok • Bevezetése erőforrás-igényes lehet • Nem tudunk esetlegesen az élessel megegyező infrastruktúrát építeni • Üzemeltetők részéről Puppet,Chef tudás szükséges lehet • I/O igényes műveleteknél lassú • Csak linuxot támogat
  • 8. Példa konfig Vagrant.configure("2") do |config| config.vm.hostname = "webconf2013.iamhere.local" config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box" config.vm.network :private_network, ip: "10.1.1.58" config.vm.network :forwarded_port, guest: 80, host: 8080 config.vm.network :forwarded_port, guest: 443, host: 8443
  • 9. Példa konfig config.vm.provision :puppet do |puppet| puppet.manifests_path = "puppet/manifests" puppet.manifest_file = "base.pp" end config.vm.provider :virtualbox do |vb| vb.gui = false vb.customize ["modifyvm", :id, "--memory", "512"] end end
  • 10. Demo
  • 11. Miért jó az automatizált teszt? • Nem kell ott ülni amíg fut a teszt • Hatékonyabbá teszi a tesztelők munkáját • Automatikus teljesítmény, kódminőség figyelés és figyelmeztetés
  • 12. Miért pont a Jenkins? • Ingyenes és open source • Egyszerű kezelhetőség • Egyszerű bővíthetőség • Nagy community 600+ plugin érhető el
  • 16. Negatívumok • Kézzel kell írni a build.xml-t • Sok feladat esetén memória igényes • Nem clusterhezhető • Nehezen upgradelhető ( a pluginek miatt )
  • 17. Példa <target name="lint" description="Perform syntax check of sourcecode files"> <apply executable="php" failonerror="true"> <arg value="-l" /> <fileset dir="${sourcedir}"> <include name="**/*.php" /> <modified /> </fileset> <fileset dir="${basedir}/src/"> <include name="**/*Test.php" /> <modified /> </fileset> </apply> </target> </target>
  • 18. Miért használjunk deployert? • Multi staging • Multi node type • Emberi hiba faktor kiszűrése • Minden szerveren a megfelelő kódbázis legyen kint • Rollback képesség
  • 19. Mi a capistrano előnye? • Könnyen bővíthető • Open Source • Rengetek plugin elérhető ( pl. teljes symfony támogatás ) • Bevezetése egyszerű nem igényel nagyobb infrastrukturális beállítást • Eszközt és módszert add a kezünkbe
  • 20. Mi a hátránya a Capistranonak? • Kezdetleges cloud és cdn támogatás – … de azt inkább írni kell • Bővítéséhez ruby tudás szükséges
  • 21. Példa set :application, "webconf" set :deploy_to, "/var/www/webconf" set :repository, "https://github.com/WordPress/WordPress.git" set :scm, :git set :branch, 'master' set :keep_releases, 3 set :use_sudo, false set :update_vendors, false set :deploy_via, :copy role :web, "10.1.1.58" set :user, "www-data" set :copy_exclude, [".git", ".DS_Store", ".gitignore", ".gitmodules","nbproject"] logger.level = Logger::MAX_LEVEL
  • 23. Köszönöm szépen a figyelmet!

Editor's Notes

  1. Teszt » Ő egy másik verziót tesztelt
  2. Decentiralizált - Nem kell központi szervert biztosítani