Deployment PHP aplikací | WebExpo 2011

3,215 views
3,121 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,215
On SlideShare
0
From Embeds
0
Number of Embeds
1,076
Actions
Shares
0
Downloads
23
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Deployment PHP aplikací | WebExpo 2011

  1. 1. Deployment PHP aplikací<br />Jan Mittner<br />
  2. 2. Kdo jsme a co děláme?<br />
  3. 3. Vergilio, s.r.o.<br />malé webové studio<br />co děláme<br />tvorba webů a webových aplikací<br />desítky klientů<br />150 projektů<br />ze známějších projektů např. Jízdomat.cz<br />
  4. 4. Jaký problém jsme řešili?<br />
  5. 5. Deployment PHP aplikací<br />mnoho projektů s častými aktualizacemi<br />desítky až stovky úprav měsíčně<br />jak je nahrát do produkčního prostředí?<br />deployment aplikace<br />řada rutinních kroků<br />na mnoha místech možnost udělání chyby<br />žádná přidaná hodnota<br />nikoho to nebaví<br />
  6. 6. Otevření databázového klienta<br />Přihlášení do databáze<br />Úprava databázového schématu<br />Lokální práce vývojáře<br />Je vše OK?<br />Kontrola výsledku <br />a chyb<br />Commit do repository<br />Čekání na dokončení přenosu<br />občas se na commit zapomene…<br />Je vše OK?<br />opakování přenosu (FTP padá…)<br />Spuštění FTP klienta<br />Spuštění přenosu<br />Notifikace týmu o deploymentu<br />Notifikace zákazníka o deploymentu<br />Připojení ke správnému FTP serveru<br />Výběr změněných souborů<br />
  7. 7. Lokální práce vývojáře<br />Commit do repository<br />Otevření deployovací aplikace<br />Kliknutí na tlačítko „Deploy!”<br />
  8. 8. Jak jsme to vyřešili?<br />
  9. 9. Automatizovaný deployment<br />SVN + Phing + DBDeploy<br />deployovací aplikace <br />vývojář<br />produkční server(y)<br />integrační / test server<br />klient deployovací aplikace<br />Phing skript<br />SVN repository<br />SVN klient<br />deployovací aplikace<br />Phing skript<br />
  10. 10. Live ukázka<br />
  11. 11. Funkcionalita#1<br />přenos jen změněných souborů<br />tisíce souborů, stovky adresářů<br />migrace databáze<br />spouštění delta skriptů pro migraci databáze<br />zálohování databáze před migrací<br />různá konfigurace pro různá běhová prostředí<br />např. doplnění produkčních hesel<br />aby nebyla uložena v repository, ale doplnila se až při deploymentu<br />můžeme tak nechat na projektu pracovat kohokoliv<br />
  12. 12.
  13. 13. Funkcionalita #2<br />linkování externích knihoven a sdílených adresářů<br />Zend Framework, Nette, ...<br />uploadované soubory, logy, ...<br />automatické odstraňování cache a dalších souborů<br />členové týmu i zákazník obdrží e-mail s notifikací<br />včetně přehledu provedených změn (volitelně)<br />
  14. 14. Eliminace rizika lidského faktoru<br />nikdo nezná hesla do žádných služeb <br />FTP, SSH, DB, …<br />špatný adresář nebo soubor při uploadu<br />opomenutí commitu do repository<br />méně technicky zkušení členové týmu <br />např. grafici<br />… a to vše na jedno kliknutí<br />
  15. 15. Jak tedy na to?<br />
  16. 16. Charakteristika řešení #1<br />systém pro správu verzí nezbytným základem<br />SVN, Git, …<br />automatizace potřebných kroků pomocí nástroje Phing<br />velmi podobné javovému nástroji Ant<br />řada připravených a užitečných tasků <br />možnost psát vlastní tasky jednoduše a rychle přímo v PHP<br />spouštění phingových skriptů pomocí deployovací aplikace instalované na produkčním a integračním serveru<br />
  17. 17.
  18. 18.
  19. 19. Charakteristika řešení #2<br />pro všechny projekty je stejný build skript (orchestrační skript)<br />automaticky modifikován dle konfigurace daného projektu<br />symlinky (sdílené adresáře)<br />replace pravidla (produkční hesla)<br />remove pravidla (cache)<br />dostatečně univerzální řešení (proprietární aplikace, ZF, Wordpress)<br />logika fungování podobná nástroji Capistrano pro RoR<br />current, releases a shared adresáře - symlinking<br />Phing i DBDeploy musel být trochu upraven<br />úprava stávajících tasků, přidání vlastních tasků<br />celé ale v PHP<br />
  20. 20.
  21. 21. Možná rozšíření<br />spouštěnítestů na testovacím serveru<br />napojení na CI server<br />Jenkins, PHPUnderControl, CruiseControl, …<br />PHP CodeSniffer, PHPMD, PDepend, …<br />javascripty a CSS soubory<br />minifikace<br />kombinování souborů<br />přímá podpora Phingu<br />
  22. 22. Co když…<br />… máte hosting jen s FTP přístupem?<br />… máte hosting se SFTP/SCP přístupem?<br />… máte vlastní server nebo SSH přístup?<br />
  23. 23. Jak začít?<br />1. Nainstalujte si PEAR + Phing <br />2. Vytvořte první build skript<br />3. Přidejte úkoly pro deploy target <br />4. Spusťte phing deploy –buildfilescript.xml<br />5. Upravujte build skript k obrazu svému<br />6. Zautomatizujte spouštění phingu<br />
  24. 24. Zhodnocení našeho řešení<br />aktivně využíváno od dubna 2010 u 150 projektů<br />průměrně 8 deploymentů denně<br />min. 1/2hodinová úspora času denně<br />roční úspora odhadem až 20 čld.<br />značné snížení chybovosti a zvýšení agilnosti<br />cokoliv se otestuje, je možné ihned nasadit<br />databáze a aplikace vždy ve stejné verzi<br />všechno musí projít přes repository<br />
  25. 25. Existující řešení<br />Capistrano, Capifony, Phingistrano, Pake, …<br />ne však zcela univerzální řešení<br />PHPFog, PagodaBox<br />PaaS cloudové služby s možností one-click deploymentu<br />neposkytují však všechny popisované funkce<br />připravujeme vlastní projekt Elephantra.cz<br />ne open-source, ale důležité funkce zdarma<br />
  26. 26. Co si odnést?<br />manuální deployment je ztráta času a peněz<br />deployment PHP aplikací lze automatizovat<br />existujínástroje, které vám pomohou<br />
  27. 27. Děkuji za pozornostVaše dotazy?<br />

×