SlideShare una empresa de Scribd logo
1 de 30
Termék életciklus és
            a verziókezelés



         Nagy Attila Gábor
           Wildom Kft.

Magyarországi Web Konferencia 2009
Ügyfél igények
●
    Jól ismert három környezet:
       –   Fejlesztői
       –   Teszt
       –   Éles
●
    Átlátható verziók
●
    Visszaállás lehetősége
Web környezet
                       problémái
●
    Release early, release often
●
    Környezet kialakítása
    erőforrásigényes
●
    Éles környezetben is adódhatnak
    változtatási igények
●
    Hibajavításokat gyorsan kell
    átvezetni
●
    Adott termék több ügyfélnél is
    lehet telepítve (esetlegesen más
    verziók)
Megoldások

Termékben       Következetes
implementálva   verziókezelés

       Release
       management eszköz
Termékben
                       implementálva
●
    Saját modul kezelő implementálása
       –   Elegáns megoldás
       –   Minden telepítés egyedileg állítható
            össze
       –   Aktuális állapot átlátható
       –   Akár az ügyfél is frissíthet
Hátrányai
●
    Bonyolult megírni
●
    Alap rendszer frissítése?
        –   Erre külön frissítés kezelő kell
●
    Fejlesztés alatt a belső verzió
    kezelést nem helyettesíti


     Ajánlott: ha sok ügyfelet szolgál ki
               egyetlen termék
Verziókezelés
●
    Fejlesztés elkerülhetetlen eszköze
●
    Csoportmunka (2+ fő) esetén
    elkerülhetetlen
●
    Fogalmak:
       –   Munkaverziók
       –   Branch-ek
       –   Release-ek
Hatalmas választék


                     Team Foundation
     CVS                 Server
ClearCase
            Subversion
 Bazaar                  Darcs
          Git
                  Mercurial
      BitKeeper
Commit log!!        Tippek az induláshoz
Commit log!!
       ●
           Minden környezet azonos
           forráskódot használjon
              –   Konfiguráció nem verzió kezelt
              –   Környezet függő konfigurációk
       ●
           Rendszeres commitolás
       ●
           Csak tiszta kódot commitoljunk
              –   Ignore fájlok, akár projekt szinten
       ●
           Minimális változtatás elve
       ●
           Conflictok kezelését ismerni
CVS
●
    Ajánlott elfelejteni
       –   Könnyű áttérni róla Subversion-re
●
    Branch kezelés gyenge
●
    Nagyobb projektet nehéz átlátni
       –   History fájl szinten van csak
       –   Véletlen update után nehéz
            visszaállni
●
    Tag-ek viszont jól használhatóak
    benne
Éles és fejlesztői
                   környezet CVS-ben
●
    Külön tag az éles verziónak
       –   Bármikor kialakítható, éles siteon:
               ●
                   cvs tag LIVE
●
    Fejlesztői verziók tag nélkül
●
    Élesítés esetén áttesszük a tag-et:
       –   cvs tag -F LIVE
       –   cvs update
Értékelés

Előnyök                   Hátrányok
●
    Megakadályozza a      ●
                              Éles site-on
    véletlen update-ket       történt
                              módosításokat
●
    Bármikor könnyen
                              nehéz
    újrahúzható az éles
                              commitolni
    környezet
●
    Release tudatos
    döntés eredménye
Subversion
●
    Legelterjedtebb eszköz
●
    Könnyen megtanulható
●
    CVS hibáit kijavították
●
    Használható branch-ek
●
    Revíziók meghatározzák a projekt
    állapotát adott időpontban
●
    Rugalmasabb mint a CVS
Párhuzamos ágak
  ●
      Intuitív
  ●
      Gyakori
      élesítésnél jobban
      megfelel
  ●
      „Csak előre”
      szemlélet
  ●
      Nincsenek
      dedikált releasek
  ●
      Nem kell
      „újratelepíteni”
Gordiuszi merge




trunk
 trunk   testing
          testing   release
                     release
Release branchek
    ●
        Minden release
        önálló branch-et
        (tag-et) kap
    ●
        Release-be
        commitolás
           –   Policy
                kérdése
           –   Bugfix
           –   Design
                módosítás
Életciklus
   RC




          merge



release
Megjegyzések
●
    Jóval kevesebb merge
●
    Könnyű elfeledkezni arról, hogy új
    release-t hozzunk létre →
    párhuzamos branch-ek
●
    Minden release „új telepítés”
       –   vagy: svn switch
●
    Nem egyértelmű, hogy mi kerülhet
    a release-be, és mi nem
       –   Fontos a jó policy
       –   Fontos azt betartatni
Merge tracking
●
    Fontos tudni, hogy mely revíziókat
    mergeltük már
       –   Többszörös merge conflict-ot okoz
●
    SVN még nem igazán erős ebben
       –   1.5.0 előtt nem volt SVN-ben
              ●
                  svnmerge: python script
       –   1.5.0 óta mergeinfo
              ●
                  trunk → branch bármikor
              ●
                  branch → trunk csak egyszer
                      –   „reintegrate”
Elosztott verzió
                     kezelő rendszerek
●
    Hatékony branch-merge támogatás
       –   Linus: „a merge a lényeg,
             branchelni mindenki tud”
●
    Lokális branch-ek
●
    Nagy szabadság
●
    Implicit backup


●
    Git, Mercurial, Bazaar
           http://www.youtube.com/watch?v=4XpnKHJAok8
Hátrányok
●
    Nehéz megtanulni
●
    Sok branchet eredményezhet
       –   Kell egy jó rendező elv
●
    Hol a legfrissebb kód?
●
    Több idő megy el kód
    managementre
Bizonytalan ügyfél
                          ?
                          ?            probléma
                          3
                          3    ●
                                   Revertelni nem lehet,
Jelmagyarázat
 Jelmagyarázat
   Még fontosabb
   Inkább hagyjuk...
                          3
                          3        mert értékes
                                   tartalom
   feature
                          2
                          2
   Mégsem olyan
   Bocs, mégis sürgős
   Nagyon sürgős
   sürgős feature
   feature
                          1
   Egész ügyes, de...
   Általános fejlesztés
                          1    ●
                                   Mergelni sem lehet
                          4
                          4

                          2
                          2
                               ●
                                   Cherry pick
                          1
                          1           –   Nehezen átlátható
                          3
                          3           –   Kimaradhat valami
                          2
                          2           –   Egy commit több
                          1
                          1                feature :(
                          R
                          R
Feature branch
                    ●
                        Egy feature – egy
            R
            R
                        branch
R
R

4           4
                    ●
                        Bármikor
4           4
                        tetszőleges release
3
3   3
    3   3
        3       3
                3
                        összeállítható
2
2   2
    2   2
        2   2
            2

1
1   1
    1   1
        1   1
            1
                    ●
                        Mindig lehet
                        commitolni
R
R
                    ●
                        Kisebb brancheket
                        könnyebb átlátni
Ideális struktúra
●
    Projekt eleje
    szerteágazik
●
    Release-ek egyesítik
    a korábbi branche-
    eket
●
    Maradhatnak
    oldalágak
       –   Nem került be a
            releasebe
Tesztkörnyezet
       ●
           Ügyfél nem
           akarja/tudja a branch-
           eket külön látni
next
       ●
           Nincs több
           környezetünk

       ●
           Speciális demo branch
       ●
           Bármikor
           szétszedhető
       ●
           Release-candidate
Tudnivalók
●
    Megvalósítható Subversionnel
       –   Git, Mercurial erősebb ebben
●
    Projekt elején néha célszerűbb
    eltekinteni tőle
●
    Lehetőleg minden feature külön
    branchbe kerüljön
       –   Ha egymásra épülnek, akkor az új
            branch az előzményből
            származzon
Commit log!!                Commit hookok
Commit log!!
       ●
           Konvenció ellenőrzés
              –   Svn: enforcer.py
       ●
           Changelog a commitlogokból
       ●
           Integráció hibakezelő rendszerrel
       ●
           Commit lista → supervising
Release management
                       eszközök
●
    Maven, php-maven, Hudson
●
    Fordító nyelveknél előnyös
       –   Java
●
    Maven tudja, hogy mit, honnan kell
    összeszedni
       –   Repository szabadon használható
●
    Build során megkerülhetetlen
       –   Nehezítheti a tesztelést
               ●
                   Pl: JavaScript, CSS
Összefoglaló
●
    Befektetés
●
    Mi felel meg nekünk legjobban?
       –   Eszköz
       –   Szakértelem
       –   Publikálási gyakoriság
       –   Telepítések száma
       –   Kapcsolat az ügyfelünkkel
Linkek
Subversion                         Mercurial
http://subversion.tigris.org/      http://mercurial.selenic.com/wiki/

http://svnbook.red-bean.com/
                                   Bazaar
http://tortoisesvn.tigris.org/
                                   http://bazaar-vcs.org/
Maven
                                   Git
http://maven.apache.org/
                                   http://git-scm.com/
http://www.php-maven.org/
                                   http://www.youtube.com/watch?v=4XpnKHJAok8
Hudson
http://hudson.dev.java.net/


                                 http://web.conf.hu/
                                 nagya@wildom.com

Más contenido relacionado

Destacado (15)

Q
QQ
Q
 
GOD GAVE ME YOU
GOD GAVE ME YOUGOD GAVE ME YOU
GOD GAVE ME YOU
 
Q
QQ
Q
 
Adelini
Adelini Adelini
Adelini
 
Q
QQ
Q
 
Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012
 
Quantirica hft futures usa sp 500 crude oil
Quantirica hft futures usa sp 500 crude oilQuantirica hft futures usa sp 500 crude oil
Quantirica hft futures usa sp 500 crude oil
 
Emini Sp 500 doji pattern tecnica di trading intraday
Emini Sp 500 doji pattern tecnica di trading intradayEmini Sp 500 doji pattern tecnica di trading intraday
Emini Sp 500 doji pattern tecnica di trading intraday
 
Analisi futures indici S&P 500
Analisi futures indici S&P 500Analisi futures indici S&P 500
Analisi futures indici S&P 500
 
Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012
 
Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012Soutenance de fin d’étude promotion srs 2012
Soutenance de fin d’étude promotion srs 2012
 
Cs6004 cyber fofrensics_qb
Cs6004 cyber fofrensics_qbCs6004 cyber fofrensics_qb
Cs6004 cyber fofrensics_qb
 
Qué es-una-huelga
Qué es-una-huelgaQué es-una-huelga
Qué es-una-huelga
 
Happybirthday
HappybirthdayHappybirthday
Happybirthday
 
Rahul Bohra - HPGD JA14 May 2015, Project ISR, NGO Being Human
Rahul Bohra - HPGD JA14 May 2015, Project ISR, NGO Being HumanRahul Bohra - HPGD JA14 May 2015, Project ISR, NGO Being Human
Rahul Bohra - HPGD JA14 May 2015, Project ISR, NGO Being Human
 

Similar a Termék-életciklus és a verziókezelés

Az SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésbenAz SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésbenJános Pásztor
 
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
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenOpen Academy
 
Budapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentBudapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentDigital Natives
 
Code Review Gerrittel
Code Review GerrittelCode Review Gerrittel
Code Review GerrittelZsolt Huba
 
Continous Integration and Deployment
Continous Integration and DeploymentContinous Integration and Deployment
Continous Integration and DeploymentKároly Nagy
 
DB séma kezelés Liquibase-el
DB séma kezelés Liquibase-elDB séma kezelés Liquibase-el
DB séma kezelés Liquibase-elZoltán Németh
 

Similar a Termék-életciklus és a verziókezelés (9)

Az SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésbenAz SVN használata a csapatfejlesztésben
Az SVN használata a csapatfejlesztésben
 
Budapest.rb 201010
Budapest.rb 201010Budapest.rb 201010
Budapest.rb 201010
 
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
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekben
 
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
 
Budapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails DeploymentBudapest.rb 2011/01 - Rails Deployment
Budapest.rb 2011/01 - Rails Deployment
 
Code Review Gerrittel
Code Review GerrittelCode Review Gerrittel
Code Review Gerrittel
 
Continous Integration and Deployment
Continous Integration and DeploymentContinous Integration and Deployment
Continous Integration and Deployment
 
DB séma kezelés Liquibase-el
DB séma kezelés Liquibase-elDB séma kezelés Liquibase-el
DB séma kezelés Liquibase-el
 

Termék-életciklus és a verziókezelés

  • 1. Termék életciklus és a verziókezelés Nagy Attila Gábor Wildom Kft. Magyarországi Web Konferencia 2009
  • 2. Ügyfél igények ● Jól ismert három környezet: – Fejlesztői – Teszt – Éles ● Átlátható verziók ● Visszaállás lehetősége
  • 3. Web környezet problémái ● Release early, release often ● Környezet kialakítása erőforrásigényes ● Éles környezetben is adódhatnak változtatási igények ● Hibajavításokat gyorsan kell átvezetni ● Adott termék több ügyfélnél is lehet telepítve (esetlegesen más verziók)
  • 4. Megoldások Termékben Következetes implementálva verziókezelés Release management eszköz
  • 5. Termékben implementálva ● Saját modul kezelő implementálása – Elegáns megoldás – Minden telepítés egyedileg állítható össze – Aktuális állapot átlátható – Akár az ügyfél is frissíthet
  • 6. Hátrányai ● Bonyolult megírni ● Alap rendszer frissítése? – Erre külön frissítés kezelő kell ● Fejlesztés alatt a belső verzió kezelést nem helyettesíti Ajánlott: ha sok ügyfelet szolgál ki egyetlen termék
  • 7. Verziókezelés ● Fejlesztés elkerülhetetlen eszköze ● Csoportmunka (2+ fő) esetén elkerülhetetlen ● Fogalmak: – Munkaverziók – Branch-ek – Release-ek
  • 8. Hatalmas választék Team Foundation CVS Server ClearCase Subversion Bazaar Darcs Git Mercurial BitKeeper
  • 9. Commit log!! Tippek az induláshoz Commit log!! ● Minden környezet azonos forráskódot használjon – Konfiguráció nem verzió kezelt – Környezet függő konfigurációk ● Rendszeres commitolás ● Csak tiszta kódot commitoljunk – Ignore fájlok, akár projekt szinten ● Minimális változtatás elve ● Conflictok kezelését ismerni
  • 10. CVS ● Ajánlott elfelejteni – Könnyű áttérni róla Subversion-re ● Branch kezelés gyenge ● Nagyobb projektet nehéz átlátni – History fájl szinten van csak – Véletlen update után nehéz visszaállni ● Tag-ek viszont jól használhatóak benne
  • 11. Éles és fejlesztői környezet CVS-ben ● Külön tag az éles verziónak – Bármikor kialakítható, éles siteon: ● cvs tag LIVE ● Fejlesztői verziók tag nélkül ● Élesítés esetén áttesszük a tag-et: – cvs tag -F LIVE – cvs update
  • 12. Értékelés Előnyök Hátrányok ● Megakadályozza a ● Éles site-on véletlen update-ket történt módosításokat ● Bármikor könnyen nehéz újrahúzható az éles commitolni környezet ● Release tudatos döntés eredménye
  • 13. Subversion ● Legelterjedtebb eszköz ● Könnyen megtanulható ● CVS hibáit kijavították ● Használható branch-ek ● Revíziók meghatározzák a projekt állapotát adott időpontban ● Rugalmasabb mint a CVS
  • 14. Párhuzamos ágak ● Intuitív ● Gyakori élesítésnél jobban megfelel ● „Csak előre” szemlélet ● Nincsenek dedikált releasek ● Nem kell „újratelepíteni”
  • 15. Gordiuszi merge trunk trunk testing testing release release
  • 16. Release branchek ● Minden release önálló branch-et (tag-et) kap ● Release-be commitolás – Policy kérdése – Bugfix – Design módosítás
  • 17. Életciklus RC merge release
  • 18. Megjegyzések ● Jóval kevesebb merge ● Könnyű elfeledkezni arról, hogy új release-t hozzunk létre → párhuzamos branch-ek ● Minden release „új telepítés” – vagy: svn switch ● Nem egyértelmű, hogy mi kerülhet a release-be, és mi nem – Fontos a jó policy – Fontos azt betartatni
  • 19. Merge tracking ● Fontos tudni, hogy mely revíziókat mergeltük már – Többszörös merge conflict-ot okoz ● SVN még nem igazán erős ebben – 1.5.0 előtt nem volt SVN-ben ● svnmerge: python script – 1.5.0 óta mergeinfo ● trunk → branch bármikor ● branch → trunk csak egyszer – „reintegrate”
  • 20. Elosztott verzió kezelő rendszerek ● Hatékony branch-merge támogatás – Linus: „a merge a lényeg, branchelni mindenki tud” ● Lokális branch-ek ● Nagy szabadság ● Implicit backup ● Git, Mercurial, Bazaar http://www.youtube.com/watch?v=4XpnKHJAok8
  • 21. Hátrányok ● Nehéz megtanulni ● Sok branchet eredményezhet – Kell egy jó rendező elv ● Hol a legfrissebb kód? ● Több idő megy el kód managementre
  • 22. Bizonytalan ügyfél ? ? probléma 3 3 ● Revertelni nem lehet, Jelmagyarázat Jelmagyarázat Még fontosabb Inkább hagyjuk... 3 3 mert értékes tartalom feature 2 2 Mégsem olyan Bocs, mégis sürgős Nagyon sürgős sürgős feature feature 1 Egész ügyes, de... Általános fejlesztés 1 ● Mergelni sem lehet 4 4 2 2 ● Cherry pick 1 1 – Nehezen átlátható 3 3 – Kimaradhat valami 2 2 – Egy commit több 1 1 feature :( R R
  • 23. Feature branch ● Egy feature – egy R R branch R R 4 4 ● Bármikor 4 4 tetszőleges release 3 3 3 3 3 3 3 3 összeállítható 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 ● Mindig lehet commitolni R R ● Kisebb brancheket könnyebb átlátni
  • 24. Ideális struktúra ● Projekt eleje szerteágazik ● Release-ek egyesítik a korábbi branche- eket ● Maradhatnak oldalágak – Nem került be a releasebe
  • 25. Tesztkörnyezet ● Ügyfél nem akarja/tudja a branch- eket külön látni next ● Nincs több környezetünk ● Speciális demo branch ● Bármikor szétszedhető ● Release-candidate
  • 26. Tudnivalók ● Megvalósítható Subversionnel – Git, Mercurial erősebb ebben ● Projekt elején néha célszerűbb eltekinteni tőle ● Lehetőleg minden feature külön branchbe kerüljön – Ha egymásra épülnek, akkor az új branch az előzményből származzon
  • 27. Commit log!! Commit hookok Commit log!! ● Konvenció ellenőrzés – Svn: enforcer.py ● Changelog a commitlogokból ● Integráció hibakezelő rendszerrel ● Commit lista → supervising
  • 28. Release management eszközök ● Maven, php-maven, Hudson ● Fordító nyelveknél előnyös – Java ● Maven tudja, hogy mit, honnan kell összeszedni – Repository szabadon használható ● Build során megkerülhetetlen – Nehezítheti a tesztelést ● Pl: JavaScript, CSS
  • 29. Összefoglaló ● Befektetés ● Mi felel meg nekünk legjobban? – Eszköz – Szakértelem – Publikálási gyakoriság – Telepítések száma – Kapcsolat az ügyfelünkkel
  • 30. Linkek Subversion Mercurial http://subversion.tigris.org/ http://mercurial.selenic.com/wiki/ http://svnbook.red-bean.com/ Bazaar http://tortoisesvn.tigris.org/ http://bazaar-vcs.org/ Maven Git http://maven.apache.org/ http://git-scm.com/ http://www.php-maven.org/ http://www.youtube.com/watch?v=4XpnKHJAok8 Hudson http://hudson.dev.java.net/ http://web.conf.hu/ nagya@wildom.com