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

Metryki kodu i aplikacji PHP

Metryki kodu i aplikacji PHP

Abstrakt prezentacji:

Każdy projekt można sprowadzić to zestawu metryk, dzięki którym możemy jednoznacznie powiedzieć, czy zespół porusza się we właściwym kierunku. Mierzyć można bardzo wiele parametrów aplikacji, zaczynając od liczby klas, metod oraz ich złożoności cyklomatycznej, a na monitorowaniu zdarzeń biznesowych w środowisku produkcyjnym kończąc. Nie dajcie się zwieść, te z pozoru banalne informacje przetworzone w odpowiedni sposób stanowią bardzo ważne narzędzie analityczne, ważne także dla developerów. W trakcie prezentacji poznamy zestaw narzędzi i technik pomocnych w zbieraniu i wykorzystywaniu metryk aplikacji w projektach PHP.

34be88398f623c109b61d23e8215bd23?s=128

Mariusz Gil

August 11, 2012
Tweet

Transcript

  1. METRYKI KODU I APLIKACJI PHP Mariusz Gil, m t.ph 6,

    Poznan ` niedziela, 12 sierpnia 2012
  2. mierz WSZYSTKOco mozesz * TAK, PIERWOTNA WERSJA BYLA ZBYT WIELOZNACZNA...

    * . - niedziela, 12 sierpnia 2012
  3. ZAWSZEORAZ CZESTO ` niedziela, 12 sierpnia 2012

  4. PRZYKLAD: LOAD AVERAGE 0 5 10 15 20 25 30

    12:01 12:02 12:03 12:04 12:05 12:06 12:07 - niedziela, 12 sierpnia 2012
  5. CO SIE WLASCIWIE STALO? NOWI UZYTKOWNICY? ATAK NA INFRASTRUKTURE? PROBLEM

    Z OBCIAZENIEM BAZ DANYCH? NOWY BUG W KODZIE APLIKACJI? ` ` . ` . ` - - niedziela, 12 sierpnia 2012
  6. PRZYKLAD: APACHE REQUESTS 0 25000 50000 75000 100000 125000 150000

    12:01 12:02 12:03 12:04 12:05 12:06 12:07 - niedziela, 12 sierpnia 2012
  7. A TERAZ? UZYTKOWNICY POWIEDZIELI BYE BYE? PROBLEMY Z SERWERAMI WWW?

    NOWY BUG W KODZIE APLIKACJI? . niedziela, 12 sierpnia 2012
  8. ZAWSZE ANALIZUJ DANE niedziela, 12 sierpnia 2012

  9. BO KONTEKSTJEST WAZNY . niedziela, 12 sierpnia 2012

  10. niedziela, 12 sierpnia 2012

  11. DEVELOPMENT MONITORING OPERATIONS BIZNES niedziela, 12 sierpnia 2012

  12. COLLECTD CACTI MUNIN GANGLIA ANALYTICS HADOOP STATSD STATSD STATSD GRAPHITE

    GRAPHITE GRAPHITE PHPLOC PDEPEND COLLECTD ISSUE TRACKERS DEVELOPMENT MONITORING OPERATIONS BIZNES niedziela, 12 sierpnia 2012
  13. metryki kodu metryki aplikacji VS niedziela, 12 sierpnia 2012

  14. co mozna mierzyc? ` . niedziela, 12 sierpnia 2012

  15. metryki kodu niedziela, 12 sierpnia 2012

  16. JAK SZYBKO ROZPOZNAC, CZY NASZ KOD PHP APLIKACJI NIE JEST

    PROBLEMEM ALBO NIE BEDZIE NIM W NAJBLIZSZEJ PRZYSZLOSCI? ? ` ` ` . - niedziela, 12 sierpnia 2012
  17. quality assurance tools ph niedziela, 12 sierpnia 2012

  18. $ phploc /usr/local/src/phpunit/PHPUnit phploc 1.7.0 by Sebastian Bergmann. Directories: 16

    Files: 117 Lines of Code (LOC): 27640 Cyclomatic Complexity / Lines of Code: 0.12 Comment Lines of Code (CLOC): 13771 Non-Comment Lines of Code (NCLOC): 13869 Namespaces: 0 Interfaces: 6 Traits: 0 Classes: 109 Abstract: 9 (8.26%) Concrete: 100 (91.74%) Average Class Length (NCLOC): 125 Methods: 723 Scope: Non-Static: 498 (68.88%) Static: 225 (31.12%) Visibility: Public: 510 (70.54%) Non-Public: 213 (29.46%) Average Method Length (NCLOC): 18 Cyclomatic Complexity / Number of Methods: 3.34 Anonymous Functions: 0 Functions: 128 Constants: 33 Global constants: 1 Class constants: 32 PHPLOC niedziela, 12 sierpnia 2012
  19. PHPDEPEND EHH:Average Hierarchy Height srednia wysokosc hierarchii kla AC: Afferent

    Coupling ilosc skoja en odsrodkowych CCN: Cyclomatic Complexity Number wielkosci zlozonosci cyklomatycznej CIS: Class Interface Size wielkosc nieprywantych metod i wlasciwosci CLOC: Comment Lines of Code ilosc linii kodu komenta y CLSA: Number of Abstract Classess liczba kla abstrakcyjnych CLSC: Number of Concrete Classes liczba wlasciwych kla implementacji LOC: Lines of Code ilosc linii kodu ...oraz 32 inne metryki niedziela, 12 sierpnia 2012
  20. metryki aplikacji niedziela, 12 sierpnia 2012

  21. 0 75 150 225 300 ilosc requestow http get /

    post ilosc http 200/301/404/500 ilosc wywolan ajax liczba zalogowanych uzytkownikow liczba logowan do aplikacji ilosc (nie)poprawnych captcha czas generowania strony czas renderowania strony* i wiele innych... ` ` ` ` ` ` ` ` ` ` ` ` . niedziela, 12 sierpnia 2012
  22. /** * Sample class. */ class ConcreteClass2 extends AbstractClass {

    // … /** * Returns object value. * * @param void * @return integer * @access public * @deprecated */ public function getValue() { StatsD::increment(”code.deprecated.ConcreteClass2.getValue”, 1); return $this->getValue(); } } STATSD / graphite niedziela, 12 sierpnia 2012
  23. /** * Login processes. */ class LoginAction extends webAction {

    // … public function executeSignIn( // … if ($loginForm->isValid()) { StatsD::increment(”login_attemps.success”, 1); } else { StatsD::increment(”login_attemps.failed”, 1); } // … return $response; } } STATSD / graphite niedziela, 12 sierpnia 2012
  24. <?php $start = microtime(true); // action flow // ... //

    counters incrementation StatsD::increment(”requests.total”, 1); StatsD::increment(”requests.methods.$method”, 1); StatsD::increment( $user->isAuthenticated() ? ”requests.users.authenticated” : ”requests.users.unauthenticated”, 1 ); StatsD::increment(”requests.http_codes.$code”, 1); StatsD::timing(”requests.timing”, (microtime(true) - $start)); STATSD / graphite niedziela, 12 sierpnia 2012
  25. aplikacja php rejestracja statystyk aplikacja php rejestracja statystyk } aplikacja

    php rejestracja statystyk statsd / node.js agregacja statystyk } graphite agregacja statystyk i storage developer kontrola aplikacji monitoring runtime monitoring biznes analizy STATSD / graphite niedziela, 12 sierpnia 2012
  26. GRAPHITE WEBAPP interfejs uzytkownika CARBOON storage manager WHISPER rozproszony storage

    . STATSD / graphite niedziela, 12 sierpnia 2012
  27. agreguja tysiace licznikow duze aplikacje . ` ` ` niedziela,

    12 sierpnia 2012
  28. serwer www rejestracja logo aplikacja php rejestracja zda en }

    serwer www rejestracja logo apache flume zapi danych HDFS } apache hadoop p etwa anie danych developer kontrola aplikacji biznes analizy biznes analizy niedziela, 12 sierpnia 2012
  29. PARSOWANIE SKRYTPOW INICJALIZACJA APLIKACJI, ROUTING POBIERANIE DANYCH PRZETWARZANIE DANYCH RENDERING

    STRONY ` niedziela, 12 sierpnia 2012
  30. pobranie html pobranie frameworkow javascript pobranie dodatkowych danych z backendu

    rendering komponentow, obsluga eventow zapis statystyk ` ` - ` niedziela, 12 sierpnia 2012
  31. metryki developmentu niedziela, 12 sierpnia 2012

  32. STATSD https://github.com/etsy/statsd GRAPHITE http://graphite.wikidot.com/ PHPLOC https://github.com/sebastianbergmann/phploc PHPDEPEND http://pdepend.org/ wazne linki

    EPISODES http://stevesouders.com/episodes/paper.php . niedziela, 12 sierpnia 2012
  33. dziekuje ` ` email: mariusz@mariuszgil.pl twi e : @mariuszgil niedziela,

    12 sierpnia 2012