1 of 57

PHP VERZIÓVÁLTÁS

– avagy hogyan dolgoztunk le 4 évnyi�technológiai adósságot néhány hét alatt?

.

2 of 57

ÉN VAGYOK A MEFI.

Dev team lead az ingatlan.com-nál, blogger, hobbifotós,�két macska lakótársa, az interneteken @mefiblogger

3 of 57

4 of 57

5 of 57

6 of 57

MI TÖRTÉNT�2012. FEBRUÁR 2-ÁN?

7 of 57

2012. FEBRUÁR 2-A:

  • Csütörtök.
  • Az előadó ebédje spaghetti carbonara.
  • A Tetovált lány c. film premierje Peruban.
  • Groundhog Day az USA-ban.
  • Parlamenti választás Kuwaitban.

És megjelenik a PHP 5.3.10-es verziója.

8 of 57

MI IS AZ A TECHNOLÓGIAI ADÓSSÁG?

Gyorsan, okosba’, rosszul – és drágán.

9 of 57

MI IS AZ A TECHNOLÓGIAI ADÓSSÁG?

A többletmunka, amely jellemzoen a triviálisabb fejlesztési feladatoknál keletkezik, amelyek – a rövid határido miatt – bonyolultabb megoldással készülnek el.

,,

,,

10 of 57

TECHNOLÓGIAI ADÓSSÁGOT OKOZHAT MÉG, HA:

  • egy komponens frissítését sokáig halogatjuk,
  • egy prototípus végül élesbe kerül,
  • a kódnak nincsen gazdája,
  • a tesztlefedettség konvergál a mackósajt brummogási mutatójához
  • gyakran változnak az igények, és a kódnak nincsen ideje minőségében követni.

És néha ezek együtt.

11 of 57

12 of 57

EZ OKÉ, DE...

...miért csak most frissítettetek?

13 of 57

Őszintén: hányszor választottad a „Majd máskor” opciót, ha frissített volna a telefonod, amikor használni akartad?

Place your screenshot here

14 of 57

MIÉRT CSAK MOST FRISSÍTETTÜNK:

TECH ADÓSSÁGOK

Voltak fontosabb és szükségesebb technológiai feladatok, amiket el kellett végeznünk.

ÁTALAKULÓ SZERVEZET

Zajlott a CIO és a fejlesztők keresése, alakulóban volt a DevOps csapat, lett architectünk.

UBUNTU LINUX

Az egész folyamat az Ubuntu frissítésével kellett kezdődjön: 12.04 → 14.04 (LTS)

15 of 57

EZ OKÉ, DE...

...miért tartott több hétig a PHP frissítése?

16 of 57

569 512+

25

3

sornyi forráskód

Git repóban

hét alatt

17 of 57

1.4

2012 novembere óta nem fejlesztik

18 of 57

1.4

Nem kompatibilis a Symfony2-vel

19 of 57

1.4

4 rendszerünk használja

20 of 57

21 of 57

MIT CSINÁLTUNK?

Mi kellett hozzá, mik voltak a lépései?

22 of 57

AZ IHLETETT GONDOLATTÓL...

Cél: az ingatlan.com összes forráskódja legyen kompatibilis a PHP 5.3.10, 5.5 és 7.0 verzióival.

23 of 57

24 of 57

2 HÉT MASSZÍV�TERVEZÉS…

Közösen hoztuk meg a fontosabb döntéseket, majd az architect és a vezető fejlesztők részletesen megtervezték a feladatokat.

25 of 57

…MAJD UGYANENNYI FEJLESZTÉS

Az 5 csapatból a projekt idejére egyet csináltunk, felvágtuk a feladatokat kompetencia és helyismeret mentén, aztán toltuk az ipart.

26 of 57

FOLYAMATOS�TESZTELÉS ÉS ÉLESÍTÉS

A fejlesztéseket – amennyire lehetett –, próbáltuk a GitFlow alapú workflow szerinti kis egységekben élesíteni.

27 of 57

REGRESSZIÓ ÉS�A GÉPEK FRISSÍTÉSE

Amire ide értünk, egy-két csomag kivételével minden élesben volt. A gépeket (100+ szerver) folyamatosan frissítettük és „lógattuk be”�az éles forgalomba.

28 of 57

AZTÁN MÉG KICSIT RAJTA TARTOTTUK A SZEMÜNK

A közös időszak után visszarendeződtünk a megszokott csapatfelállásba, de még terveztünk erőforrást a felmerülő problémák esetére.

29 of 57

PREVIOUSLY ON THE WALKING DEAD

Avagy élet a legacy kóddal.

30 of 57

SMARTY ;)

v2 → v3

31 of 57

MYSQL → MYSQLI

Az 5.5 óta deprecated.

32 of 57

REGISTER GLOBALS

Az 5.4 óta megszűnt.

33 of 57

STRING, FLOAT, INTEGER STB.

Ezek osztálynevek; pár éve jó ötletnek tűntek, de a PHP 7.0-ban már nem annyira. :)

34 of 57

COMPOSER OUTDATED

A PHP verzióváltás óta tudjuk használni.

35 of 57

A 2 HÉT

Már nem is tűnik olyan soknak, igaz?

36 of 57

NÉHÁNY HASZNOS DOLOG

Nekünk jól jöttek, hátha nektek is!

37 of 57

PHP Migration Guide

38 of 57

LExpress/symfony1

39 of 57

wimg/PHPCompatibility

40 of 57

sstalle/php7cc

41 of 57

ingatlancom/PHPCodesniff...

42 of 57

43 of 57

NINCS PREZENTÁCIÓ GRAFIKON NÉLKÜL

Avagy néhány érdekes számadat.

44 of 57

3620

330

db figyelmeztetés a legacy kódbázison

45 of 57

53

javított hiba

46 of 57

12

perc

7

perc

5.3.10

5.5.9

build ideje kb. 800 felület- és egységteszttel a legacy kódbázison

47 of 57

TANULSÁGOK

Mi volt jó és mit csinálnánk másként?

48 of 57

IDEÁLIS PROJEKT�ÚJ KOLLÉGÁKNAK

Tucatnyi olyan feladat volt (pl. register globals körül), amihez minimális helyismeret, de biztos és türelmes kezek.

49 of 57

HATÉKONYAN DOLGOZTUNK EGYÜTT

Kis csapatok ide, helyismeret oda: 13 fejlesztő dolgozott együtt a 25 különböző kódbázison.�És egyszer sem léptek egymás lábára.

50 of 57

ÚJ HELYISMERET A PROJEKTEKBEN

Mivel nem mindenki a saját kódterületén dolgozott, sokan szerezhettek helyismeretet egy�másik csapat kódjában.

51 of 57

A SZOKÁSOS�CSOMAG

Biztonság, hatékonyság, naprakészség, szép kód, technológiai adósságcsökkentés stb.

52 of 57

LEÁLLÁS ÉLESBEN:�1 ALKALOMMAL

Végig figyeltünk, de egyszer egy alattomos hiba átcsúszott a kezünk között. Két perccel később visszahúztuk, 15 perccel később újra élesítettük.

53 of 57

MEGSZAPORODTAK�A BUGOK

A projekt alatt csak a kritikus és blokkoló hibákat javítottuk. Emiatt viszont viszonylag sok felgyűlt a két hét alatt, amit nehézkesebb volt ledolgozni.

54 of 57

LENDÜLETVESZTÉS�A PROJEKT VÉGÉN

Az utolsó napokban még mindenki lelkesen fogta a feladatokat, de amikor újra beindult a hétköznapi üzem, kicsit elengedtük a gyeplőt.

55 of 57

HOGYAN TOVÁBB?

További lépések, tervek, víziók, álmok.

56 of 57

MIT TERVEZÜNK A TOVÁBBIAKBAN?

GYAKORI FRISSÍTÉS

Nem leszünk early adopterek, de nagy meglepetésekre nem számítunk mostanában. Tervezzük a további frissítéseket.

HHVM

Az új verzió miatt�ez is szóba jöhet. Kipróbáljuk, kísérletezünk vele, aztán elválik.

SYMFONY 1.5

Ahol lehet, próbáljuk majd fogni a projekt kezét; nem csak mi használjuk.

57 of 57

KÉRDÉSEK?

@mefiblogger | nadai.gabor@ingatlan.com

A sablont a SlidesCarnival szállította, köszi nekik!