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

    View Slide

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

    View Slide

  3. Odpowiedzi

    View Slide

  4. ALLEGRO?

    View Slide

  5. ALLEGRO?NIE

    View Slide

  6. Nie jesteśmy Allegro ;)

    View Slide

  7. SCRUM?

    View Slide

  8. SCRUM? NIE

    View Slide

  9. DOSTĘP
    DO PRODUKCJI?

    View Slide

  10. DOSTĘP
    DO PRODUKCJI?
    TAK

    View Slide

  11. Kontekst
    lokalny, globalny, skala

    View Slide

  12. 2009
    2011
    2014

    View Slide

  13. 40 krajów

    View Slide

  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

    View Slide

  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

    View Slide

  16. 77,5 mln
    wizyt miesięcznie

    View Slide

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

    View Slide

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

    View Slide

  19. +
    Framework
    Authors &
    Core Committers
    POZ
    NAŃ

    View Slide

  20. ?
    programistów PHP

    View Slide

  21. 9
    programistów PHP

    View Slide

  22. Infrastruktura

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. HAPROXY VARNISH NGINX
    CSS, JS

    View Slide

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

    View Slide

  28. HAPROXY VARNISH RIAK
    OBRAZKI
    Predefiniowane rozmiary

    View Slide

  29. VARNISH RIAK
    OBRAZKI
    Inteligentne dopasowanie:
    - wielkość ekranu
    - jakość połączenia

    View Slide

  30. Redis
    in-memory data structure store
    http://redis.io/

    View Slide

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

    View Slide

  32. Memcached
    Podział na 3 typy:
    Storage
    Session
    Outputcache
    Problem z evictionami:
    Dzielenie na podstawie rozmiaru obiektów
    Restart

    View Slide

  33. Apache
    HTTP server
    http://httpd.apache.org/

    View Slide

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

    View Slide

  35. DYNAMIC
    PHP 5.6

    View Slide

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

    View Slide

  37. SolrCloud
    DEMO

    View Slide

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

    View Slide

  39. Graphite
    enterprise-scale monitoring tool that runs well on cheap
    hardware
    http://graphite.readthedocs.org/en/latest/

    View Slide

  40. Graphite
    DEMO

    View Slide

  41. Development

    View Slide

  42. Problemy?

    View Slide

  43. Migracje

    View Slide

  44. ATLAS
    Lokalne marki
    Lokalny kod
    FRAMEWORK

    View Slide

  45. Struktura kodu przed migracjami

    View Slide

  46. base
    slando
    olxua
    olxkz
    olxpl
    olxro


    View Slide

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

    }
    }

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  51. Struktura kodu po migracjach

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  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ą

    View Slide

  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

    View Slide

  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

    View Slide

  61. Jak naprawić
    sytuację bez
    wstrzymywania
    produktu?

    View Slide

  62. ATLAS 2.0

    View Slide

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

    View Slide

  64. Struktura kodu

    View Slide

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

    View Slide

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

    View Slide

  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"
    }

    View Slide

  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"
    }

    View Slide

  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"
    }

    View Slide

  70. Przykład
    Uruchomienie
    OLX w nowym
    kraju

    View Slide

  71. composer.json
    ?

    View Slide

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

    View Slide

  73. PHPStorm
    Multirepository

    View Slide

  74. PHPStorm
    Multirepository
    Demo

    View Slide

  75. Efekty

    View Slide

  76. Redukcja długu
    technologicznego
    do 1 roku

    View Slide

  77. ATHENA
    Testing Framework

    View Slide

  78. HERMES
    Content Quality Tool

    View Slide

  79. Repozytoria Shared

    View Slide

  80. Platform Team

    View Slide

  81. @szymanskilukasz
    join .com
    olx

    View Slide