Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OLX pod maską [PL]

OLX pod maską [PL]

Opowiem o tym jak zmieniała się struktura i organizacja naszego kodu, oraz w jaki sposób walczymy z legacy code. Poznacie technologie jakie wykorzystujemy, statystyki i nasze wnioski odnośnie pewnych rozwiązań. Dowiecie się jak wygląda OLX pod maską.

Łukasz Szymański

November 23, 2015
Tweet

More Decks by Łukasz Szymański

Other Decks in Programming

Transcript

  1. POD MASKĄ @szymanskilukasz

  2. Senior PHP Developer @szymanskilukasz Łukasz Szymański

  3. Odpowiedzi

  4. ALLEGRO?

  5. ALLEGRO?NIE

  6. Nie jesteśmy Allegro ;)

  7. SCRUM?

  8. SCRUM? NIE

  9. DOSTĘP DO PRODUKCJI?

  10. DOSTĘP DO PRODUKCJI? TAK

  11. Kontekst lokalny, globalny, skala

  12. 2009 2011 2014

  13. 40 krajów

  14. Poznań - Polska Lizbona - Portugalia Berlin - Niemcy Buenos

    Aires - Argentyna Sofia - Bułgaria Dubai - Zjednoczone Emiraty Arabskie Delhi - Indie Manila - Filipiny Jakarta - Indonezja Cape Town - Południowa Afryka
  15. TOP 10 DOMEN w PL www.marketing-news.pl/message.php?art=45978 google.pl facebook.com youtube.com google.com

    onet.pl allegro.pl wp.pl wikipedia.org olx.pl interia.pl 9 miejsce
  16. 77,5 mln wizyt miesięcznie

  17. 1,5 mld Page Views / miesiąc

  18. + Ukraina Rumunia Portugalia Kazachstan Białoruś Bułgaria Angola Mozambik Uzbekistan

    POZ NAŃ
  19. + Framework Authors & Core Committers POZ NAŃ

  20. ? programistów PHP

  21. 9 programistów PHP

  22. Infrastruktura

  23. HAProxy High Performance TCP/HTTP Load Balancer http://www.haproxy.org/

  24. Varnish caching HTTP reverse proxy https://www.varnish-cache.org/

  25. Nginx HTTP and reverse proxy server http://nginx.org/

  26. HAPROXY VARNISH NGINX CSS, JS

  27. Riak distributed NoSQL key-value data store http://basho.com/products/riak-kv/

  28. HAPROXY VARNISH RIAK OBRAZKI Predefiniowane rozmiary

  29. VARNISH RIAK OBRAZKI Inteligentne dopasowanie: - wielkość ekranu - jakość

    połączenia
  30. Redis in-memory data structure store http://redis.io/

  31. Memcached in-memory key-value store http://memcached.org/

  32. Memcached Podział na 3 typy: Storage Session Outputcache Problem z

    evictionami: Dzielenie na podstawie rozmiaru obiektów Restart
  33. Apache HTTP server http://httpd.apache.org/

  34. MySQL Database http://www.mysql.com/

  35. DYNAMIC PHP 5.6

  36. SolrCloud search platform built on Apache Lucene™ http://lucene.apache.org/solr/

  37. SolrCloud DEMO

  38. StatsD Simple daemon for easy stats aggregation https://github.com/etsy/statsd

  39. Graphite enterprise-scale monitoring tool that runs well on cheap hardware

    http://graphite.readthedocs.org/en/latest/
  40. Graphite DEMO

  41. Development

  42. Problemy?

  43. Migracje

  44. ATLAS Lokalne marki Lokalny kod FRAMEWORK

  45. Struktura kodu przed migracjami

  46. base slando olxua olxkz olxpl olxro … …

  47. class actions_Ads extends sites_base_actions_Ads { public function handleIndex() { …

    } }
  48. ATLAS http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg

  49. Skazany przez Zeusa (…), na dźwiganie sklepienia niebieskiego… https://pl.wikipedia.org/wiki/Atlas_(mitologia)

  50. Skazany przez Zeusa (…), na dźwiganie sklepienia niebieskiego… https://pl.wikipedia.org/wiki/Atlas_(mitologia)

  51. Struktura kodu po migracjach

  52. ATLAS http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg

  53. http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg Jedno repozytorium dla wszystkich

  54. http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg Jedno repozytorium dla wszystkich Brak testów

  55. http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg Jedno repozytorium dla wszystkich Brak testów Brak composera

  56. http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg Jedno repozytorium dla wszystkich Brak testów Brak composera Dynamicznie

    tworzone klasy
  57. http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg Jedno repozytorium dla wszystkich Brak testów Brak composera Dynamicznie

    tworzone klasy Brak standardów
  58. http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg Jedno repozytorium dla wszystkich Brak testów Brak composera Dynamicznie

    tworzone klasy Brak standardów Framework powiązany z logiką biznesową
  59. http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg Jedno repozytorium dla wszystkich Brak testów Brak composera Dynamicznie

    tworzone klasy Brak standardów Framework powiązany z logiką biznesową 10 lat długu technologicznego
  60. http://telesangels.com/wp-content/uploads/2013/11/Special-Initiative_ATLAS_Drawing.jpg Jedno repozytorium dla wszystkich Brak testów Bugi, bugi, bugi…

    Brak composera Dynamicznie tworzone klasy Brak standardów Framework powiązany z logiką biznesową 10 lat długu technologicznego
  61. Jak naprawić sytuację bez wstrzymywania produktu?

  62. ATLAS 2.0

  63. http://objetivismo.org/wp-content/uploads/2012/11/Atlas-descansa-cartoon.gif FRAMEWORK ATLAS PLATFORM WEB PLUGINS

  64. Struktura kodu

  65. olxeu-atlas-web olxeu-atlas-web-olxpl

  66. olxeu-atlas-web olxeu-atlas-web-olxpl olxeu-atlas-web-env-test-olxpl olxeu-atlas-web-env-production-olxpl

  67. "require": { "naspersclassifieds-regional/olxeu-atlas-web": "dev-master" } "require": { "naspersclassifieds-shared/atlas-web-framework": "1.3.*" }

    olxeu-atlas-web-olxpl olxeu-atlas-web olxeu-atlas-web-env-production-olxpl "require": { "naspersclassifieds-regional/olxeu-atlas-web-olxpl": "dev-master" }
  68. "require": { "naspersclassifieds-regional/olxeu-atlas-web": "dev-master" } "require": { "naspersclassifieds-shared/atlas-web-framework": "1.3.*" }

    olxeu-atlas-web-olxpl olxeu-atlas-web olxeu-atlas-web-env-production-olxpl "require": { "naspersclassifieds-regional/olxeu-atlas-web-olxpl": "dev-master" }
  69. "require": { "naspersclassifieds-regional/olxeu-atlas-web": "dev-master" } "require": { "naspersclassifieds-shared/atlas-web-framework": "1.3.*" }

    olxeu-atlas-web-olxpl olxeu-atlas-web olxeu-atlas-web-env-production-olxpl "require": { "naspersclassifieds-regional/olxeu-atlas-web-olxpl": "dev-master" }
  70. Przykład Uruchomienie OLX w nowym kraju

  71. composer.json ?

  72. "require": { "naspersclassifieds-regional/olxeu-atlas-web": "dev-master" } composer.json

  73. PHPStorm Multirepository

  74. PHPStorm Multirepository Demo

  75. Efekty

  76. Redukcja długu technologicznego do 1 roku

  77. ATHENA Testing Framework

  78. HERMES Content Quality Tool

  79. Repozytoria Shared

  80. Platform Team

  81. @szymanskilukasz join .com olx