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ą.

33d8f6c5f5c8b940ff4d6422a5f32b02?s=128

Łukasz Szymański

November 23, 2015
Tweet

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