class: center, middle # Ewolucja aplikacji webowych ## Michał Kwiatkowski
freelance developer
github: [mkwiatkowski](https://github.com/mkwiatkowski/)
twitter: [@michalkw](https://twitter.com/michalkw)
--- ![Shelly Cloud Logo](shelly-logo.png) --- ![Logos](logos.png) --- # Plan prezentacji ## 1. Problem ## 2. Możliwe rozwiązania ## 3. Konsekwencje --- # Jestem deweloperem i chcę rozwijać aplikację lokalnie ![App server + local database](d1.png) --- # Chcę wrzucić aplikację do pokazania klientowi ![PHP deployment model](d2.png) --- # Chcę wrzucić aplikację do pokazania klientowi ![Capistrano deployment model](d3.png) --- # Aplikacja długo się ładuje ![Unicorn](d4.png) --- # Mam za mało zasobów na obsłużenie ruchu ![Frontend serving assets](d5.png) --- # Moja aplikacja wolno odpowiada ![Frontend serving cache](d6.png) --- # Moja aplikacja wolno odpowiada cz. 2 ![Key-value store](d7.png) --- ![Logos](logos-selected.png) --- # Moja aplikacja wolno odpowiada cz. 3 ![Background processing](d8.png) --- # Mam jeszcze więcej użytkowników ![Load balancer](d12.png) --- # Chcę wiedzieć gdy moja aplikacja jest niedostępna > "Monitoring is for ops what testing is for dev" -- [Grig Gheorghiu](http://agiletesting.blogspot.com/2011/03/monitoring-is-for-ops-what-testing-is.html) --- # Moje serwery aplikacyjne umierają ## 502 Bad Gateway --- # Moje serwery aplikacyjne umierają cz. 2 ![Monitoring tool](d9.png) --- # Mam memory leak w aplikacji ## Często trudne do namierzenia ## ImageMagick --- # Moja baza danych wolno odpowiada ## Optymalizacja liczby zapytań ## Optymalizacja SQL ## Dostosowanie ustawień bazy danych, np. [work_mem](http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server#work_mem_maintainance_work_mem) w PostgreSQL --- # Moja baza danych wolno odpowiada cz. 2 ## Replikacja ![MongoDB replication](d10.png) --- # Moja baza danych nie odpowiada ## Failover ![MongoDB failover](d11.png) --- # Chcę skalować aplikację zależnie od potrzeb --- # Skalowanie ## wertykalne: większy serwer ## horyzontalne: więcej serwerów --- # I tak dalej... ## Deployment bez downtime'u ## Cofanie nieudanych deploymentów ## Środowisko dla nowych programistów ## Backup danych ## Bezpieczeństwo ## Uaktualnienia oprogramowania --- ![App server + local database](d1.png) --- ![Architecture](d13.png) --- # Pytania? .footnote[Michał Kwiatkowski
[michal@trivas.pl](mailto:michal@trivas.pl)]