Slide 1

Slide 1 text

POD MASKĄ @szymanskilukasz

Slide 2

Slide 2 text

Senior PHP Developer @szymanskilukasz Łukasz Szymański

Slide 3

Slide 3 text

Odpowiedzi

Slide 4

Slide 4 text

ALLEGRO?

Slide 5

Slide 5 text

ALLEGRO?NIE

Slide 6

Slide 6 text

Nie jesteśmy Allegro ;)

Slide 7

Slide 7 text

SCRUM?

Slide 8

Slide 8 text

SCRUM? NIE

Slide 9

Slide 9 text

DOSTĘP DO PRODUKCJI?

Slide 10

Slide 10 text

DOSTĘP DO PRODUKCJI? TAK

Slide 11

Slide 11 text

Kontekst lokalny, globalny, skala

Slide 12

Slide 12 text

2009 2011 2014

Slide 13

Slide 13 text

40 krajów

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

77,5 mln wizyt miesięcznie

Slide 17

Slide 17 text

1,5 mld Page Views / miesiąc

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

+ Framework Authors & Core Committers POZ NAŃ

Slide 20

Slide 20 text

? programistów PHP

Slide 21

Slide 21 text

9 programistów PHP

Slide 22

Slide 22 text

Infrastruktura

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

HAPROXY VARNISH NGINX CSS, JS

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

HAPROXY VARNISH RIAK OBRAZKI Predefiniowane rozmiary

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

DYNAMIC PHP 5.6

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

SolrCloud DEMO

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

Graphite DEMO

Slide 41

Slide 41 text

Development

Slide 42

Slide 42 text

Problemy?

Slide 43

Slide 43 text

Migracje

Slide 44

Slide 44 text

ATLAS Lokalne marki Lokalny kod FRAMEWORK

Slide 45

Slide 45 text

Struktura kodu przed migracjami

Slide 46

Slide 46 text

base slando olxua olxkz olxpl olxro … …

Slide 47

Slide 47 text

class actions_Ads extends sites_base_actions_Ads { public function handleIndex() { … } }

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

Struktura kodu po migracjach

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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ą

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

Jak naprawić sytuację bez wstrzymywania produktu?

Slide 62

Slide 62 text

ATLAS 2.0

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

Struktura kodu

Slide 65

Slide 65 text

olxeu-atlas-web olxeu-atlas-web-olxpl

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

Przykład Uruchomienie OLX w nowym kraju

Slide 71

Slide 71 text

composer.json ?

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

PHPStorm Multirepository

Slide 74

Slide 74 text

PHPStorm Multirepository Demo

Slide 75

Slide 75 text

Efekty

Slide 76

Slide 76 text

Redukcja długu technologicznego do 1 roku

Slide 77

Slide 77 text

ATHENA Testing Framework

Slide 78

Slide 78 text

HERMES Content Quality Tool

Slide 79

Slide 79 text

Repozytoria Shared

Slide 80

Slide 80 text

Platform Team

Slide 81

Slide 81 text

@szymanskilukasz join .com olx