SlideShare a Scribd company logo
1 of 24
Download to read offline
Wydajne API dla aplikacji mobilnych 
co warto robić a czego warto unikać 
aby wycisnąć jak najwięcej z naszego API
O mnie 
•Programista PHP od 10 lat 
•Obecnie programista w FutureProcessing 
•WWW, CRM, ERP, API, integracja systemów 
2014-09-27 Marcin Wójcik, PHPCon 2014 2 / 24
Plan 
•Skąd ta prezentacja? 
•Elementy systemu i wpływ na wydajność 
•Optymalizacja 
•Dobre praktyki 
2014-09-27 Marcin Wójcik, PHPCon 2014 3 / 24
Skąd ta prezentacja? 
2014-09-27 Marcin Wójcik, PHPCon 2014 
1-3 req/ min 
2500 req/ sek 
4 / 24
Co robić, jak żyć? 
•Zaprojektować dobrze architekturę systemu 
•Obsługa żądań/połączeń 
•Przepływ, przetwarzanie, przechowywanie danych 
•Podział obowiązków: co ma robić API? 
•(Z)optymalizować aplikację 
•Optymalizacja frontendu(endpoints) 
•Optymalizacja backendu 
•Dbać o dobre praktyki podczas pisania kodu 
2014-09-27 Marcin Wójcik, PHPCon 2014 5 / 24
Publiczne API 
2014-09-27 Marcin Wójcik, PHPCon 2014 
SZYBKIEZWALNIANIEZASOBÓW 
6 / 24 
Endpoints: 
/getProduct/registerDevice 
…
Backend 
2014-09-27 Marcin Wójcik, PHPCon 2014 7 / 24
Architektura 
2014-09-27 Marcin Wójcik, PHPCon 2014 
processes 
8 / 24
Architektura 
•Eventualconsistency„spójność ostateczna” :) 
•o ile do systemu nie są zgłaszane nowe żądania modyfikujące, dane ostatecznie stają się spójne 
2014-09-27 Marcin Wójcik, PHPCon 2014 9 / 24
Optymalizacja środowiska -soft 
2014-09-27 Marcin Wójcik, PHPCon 2014 10 / 24 
•nginx 
•php-fpm 
•KeepAlive 
•moduły 
•tuningLEMP 
•tuningOS
Optymalizacja środowiska -sprzęt 
2014-09-27 Marcin Wójcik, PHPCon 2014 11 / 24 
•routing 
•VM vs box 
•dostawianie maszyn 
•cloud?
Szybkie zwalnianie zasobów 
2014-09-27 Marcin Wójcik, PHPCon 2014 12 / 24
Szybkie zwalnianie zasobów 
2014-09-27 Marcin Wójcik, PHPCon 2014 
•Minimalizowanie czasu dostępu do danych 
•Radzenie sobie z czasochłonnymi operacjami 
•Możliwie krótki tor przetwarzania żądania 
•Mało istotne operacje wykonywane po zwróceniu odpowiedzi 
•RESTless 
13 / 24
Architektura -dane 
2014-09-27 Marcin Wójcik, PHPCon 2014 
Rejestracja urządzenia + pobranie listy produktów 
14 / 24
Optymalizacja API 
2014-09-27 Marcin Wójcik, PHPCon 2014 
Pregenerowaniedanych 
15 / 24 
•Identyfikatory 
•Dane w JSON 
•URLe
Optymalizacja API 
2014-09-27 Marcin Wójcik, PHPCon 2014 
•Uproszczenie dostępu do danych 
•HGET usersapp_hash:user_hash 
•HGET purchasesapp_hash:user_hash 
•HGET issuesapp_hash 
•Dane gotowe do wystawienia 
// getJSON with prepareddata 
$purchases= $redis->hGet(`purchases`, $app_user_hash); 
echo $purchases; 
16 / 24
Optymalizacja API 
2014-09-27 Marcin Wójcik, PHPCon 2014 
•fastcgi_finish_request() 
•brak frameworka, usunięcie autoloadera, minimalizacja ilości dołączanych plików 
•wyłączenie rewrite, oparcie API na strukturze katalogów: ../public_html/getProducts/index.php 
17 / 24
jMeter 
2014-09-27 Marcin Wójcik, PHPCon 2014 
UWAGA: stosowanie GUI ogranicza ilość żądań! 
18 / 24
Ideał 
2014-09-27 Marcin Wójcik, PHPCon 2014 19 / 24
Dobre praktyki 
•Ciągłe monitorowanie i profilowanie: (XHProf/ webgrind) + StatsD+ (Graphite/ Munin / Cacti) 
2014-09-27 Marcin Wójcik, PHPCon 2014 20 / 24
Dobre praktyki 
2014-09-27 Marcin Wójcik, PHPCon 2014 21 / 24 
•szukaj optymalizacji 
•unikaj @todoi @fixme 
•functionalfirst
Dobre praktyki 
2014-09-27 Marcin Wójcik, PHPCon 2014 22 / 24 
API: 
•architektura 
•dostęp do danych 
Backend: 
•architektura 
•mikrooptymalizacja 
APC/OPcache
Dobre praktyki 
•Failover/ disasterrecovery 
2014-09-27 Marcin Wójcik, PHPCon 2014 23 / 24
Pytania? 
2014-09-27 Marcin Wójcik, PHPCon 2014 24 / 24 
https://joind.in/talk/view/11846

More Related Content

Viewers also liked

[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...Future Processing
 
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błądFuture Processing
 
Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.Future Processing
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven DevelopmentFuture Processing
 
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Future Processing
 
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...Future Processing
 
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyceFuture Processing
 
Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Future Processing
 
Jak aspekty uporządkują twój kod.
Jak aspekty uporządkują twój kod.Jak aspekty uporządkują twój kod.
Jak aspekty uporządkują twój kod.Future Processing
 
Wyboista droga do dobrego kodu. ...
Wyboista droga do dobrego kodu.                                              ...Wyboista droga do dobrego kodu.                                              ...
Wyboista droga do dobrego kodu. ...Future Processing
 
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...Future Processing
 
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i PraktykaFuture Processing
 
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe![FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!Future Processing
 
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentówFuture Processing
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Future Processing
 
Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Future Processing
 
[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep LearningFuture Processing
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-aFuture Processing
 

Viewers also liked (20)

[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
[QE 2015] Jarosław Pałka - Systematyczny architekt na drodze ku planowanemu p...
 
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd
[QE 2015] Mateusz Kocielski - W każdym programie jest jeszcze jeden błąd
 
Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
Kim jest Agile Coach?
Kim jest Agile Coach?Kim jest Agile Coach?
Kim jest Agile Coach?
 
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
 
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
 
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
[QE 2015] Krzysztof Trzewiczek - Specification by Example w praktyce
 
Jakość jest w nas
Jakość jest w nasJakość jest w nas
Jakość jest w nas
 
Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.
 
Jak aspekty uporządkują twój kod.
Jak aspekty uporządkują twój kod.Jak aspekty uporządkują twój kod.
Jak aspekty uporządkują twój kod.
 
Wyboista droga do dobrego kodu. ...
Wyboista droga do dobrego kodu.                                              ...Wyboista droga do dobrego kodu.                                              ...
Wyboista droga do dobrego kodu. ...
 
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
 
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
 
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe![FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
 
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.
 
Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.
 
[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
 

Similar to Wydajne API dla aplikacji mobilnych

Poznajmy się!
Poznajmy się!Poznajmy się!
Poznajmy się!Redexperts
 
Automatyzacja Procesów Biznesowych (RPA) - Zmieniamy teorię w praktykę
Automatyzacja Procesów Biznesowych (RPA) - Zmieniamy teorię w praktykę Automatyzacja Procesów Biznesowych (RPA) - Zmieniamy teorię w praktykę
Automatyzacja Procesów Biznesowych (RPA) - Zmieniamy teorię w praktykę Mindbox
 
Znajomość wymagań technicznych i środowiskowych oraz prognoz i analiz branżow...
Znajomość wymagań technicznych i środowiskowych oraz prognoz i analiz branżow...Znajomość wymagań technicznych i środowiskowych oraz prognoz i analiz branżow...
Znajomość wymagań technicznych i środowiskowych oraz prognoz i analiz branżow...SCA - Hygiene and Forest Products Company
 
Nowoczesna Chmura dla nowoczesnej firmy, Janusz Naklicki, Oracle @ SaaS Day p...
Nowoczesna Chmura dla nowoczesnej firmy, Janusz Naklicki, Oracle @ SaaS Day p...Nowoczesna Chmura dla nowoczesnej firmy, Janusz Naklicki, Oracle @ SaaS Day p...
Nowoczesna Chmura dla nowoczesnej firmy, Janusz Naklicki, Oracle @ SaaS Day p...Ewa Stepien
 
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side developmentTomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side developmentSharePoint Saturday Warsaw
 
Summit EOIF GigaCon 2017 - katalog
Summit EOIF GigaCon 2017 - katalogSummit EOIF GigaCon 2017 - katalog
Summit EOIF GigaCon 2017 - katalogJustyna Cieślak
 
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...Grupa Unity
 
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...Intratic
 
4Developers 2015: User Experience a metodyki projektów - Wojciech Chojnacki
4Developers 2015: User Experience a metodyki projektów - Wojciech Chojnacki4Developers 2015: User Experience a metodyki projektów - Wojciech Chojnacki
4Developers 2015: User Experience a metodyki projektów - Wojciech ChojnackiPROIDEA
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieGrzegorz Godlewski
 
Dostarcz energii swoim projektom z Oracle Project Cloud, Ryszard Krawczyński,...
Dostarcz energii swoim projektom z Oracle Project Cloud, Ryszard Krawczyński,...Dostarcz energii swoim projektom z Oracle Project Cloud, Ryszard Krawczyński,...
Dostarcz energii swoim projektom z Oracle Project Cloud, Ryszard Krawczyński,...Ewa Stepien
 
Nowoczesna architektura Systemów IT w OSD na podstawie Energa-Operator
Nowoczesna architektura Systemów IT w OSD na podstawie Energa-OperatorNowoczesna architektura Systemów IT w OSD na podstawie Energa-Operator
Nowoczesna architektura Systemów IT w OSD na podstawie Energa-OperatorEnerga OPERATOR SA
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Case Study - eRecruiter w Money Expert
Case Study - eRecruiter w Money ExpertCase Study - eRecruiter w Money Expert
Case Study - eRecruiter w Money ExpertMarcinSienczyk
 
Jarosław Poręba @ "Szybki sukces w finansach" - "I Manewry w Chmurze Partneró...
Jarosław Poręba @ "Szybki sukces w finansach" - "I Manewry w Chmurze Partneró...Jarosław Poręba @ "Szybki sukces w finansach" - "I Manewry w Chmurze Partneró...
Jarosław Poręba @ "Szybki sukces w finansach" - "I Manewry w Chmurze Partneró...Ewa Stepien
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduThe Software House
 

Similar to Wydajne API dla aplikacji mobilnych (20)

Poznajmy się!
Poznajmy się!Poznajmy się!
Poznajmy się!
 
Automatyzacja Procesów Biznesowych (RPA) - Zmieniamy teorię w praktykę
Automatyzacja Procesów Biznesowych (RPA) - Zmieniamy teorię w praktykę Automatyzacja Procesów Biznesowych (RPA) - Zmieniamy teorię w praktykę
Automatyzacja Procesów Biznesowych (RPA) - Zmieniamy teorię w praktykę
 
Znajomość wymagań technicznych i środowiskowych oraz prognoz i analiz branżow...
Znajomość wymagań technicznych i środowiskowych oraz prognoz i analiz branżow...Znajomość wymagań technicznych i środowiskowych oraz prognoz i analiz branżow...
Znajomość wymagań technicznych i środowiskowych oraz prognoz i analiz branżow...
 
Nowoczesna Chmura dla nowoczesnej firmy, Janusz Naklicki, Oracle @ SaaS Day p...
Nowoczesna Chmura dla nowoczesnej firmy, Janusz Naklicki, Oracle @ SaaS Day p...Nowoczesna Chmura dla nowoczesnej firmy, Janusz Naklicki, Oracle @ SaaS Day p...
Nowoczesna Chmura dla nowoczesnej firmy, Janusz Naklicki, Oracle @ SaaS Day p...
 
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side developmentTomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
Tomasz Głogosz: SharePoint Framework - nowa jakość w client-side development
 
Summit EOIF GigaCon 2017 - katalog
Summit EOIF GigaCon 2017 - katalogSummit EOIF GigaCon 2017 - katalog
Summit EOIF GigaCon 2017 - katalog
 
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski, N...
 
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
Konferencja Intratic Przyjazny SharePoint, Krzysztof Lis, Paweł Walczewski - ...
 
4Developers 2015: User Experience a metodyki projektów - Wojciech Chojnacki
4Developers 2015: User Experience a metodyki projektów - Wojciech Chojnacki4Developers 2015: User Experience a metodyki projektów - Wojciech Chojnacki
4Developers 2015: User Experience a metodyki projektów - Wojciech Chojnacki
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
Dostarcz energii swoim projektom z Oracle Project Cloud, Ryszard Krawczyński,...
Dostarcz energii swoim projektom z Oracle Project Cloud, Ryszard Krawczyński,...Dostarcz energii swoim projektom z Oracle Project Cloud, Ryszard Krawczyński,...
Dostarcz energii swoim projektom z Oracle Project Cloud, Ryszard Krawczyński,...
 
Nowoczesna architektura Systemów IT w OSD na podstawie Energa-Operator
Nowoczesna architektura Systemów IT w OSD na podstawie Energa-OperatorNowoczesna architektura Systemów IT w OSD na podstawie Energa-Operator
Nowoczesna architektura Systemów IT w OSD na podstawie Energa-Operator
 
PHP. Praktyczne wprowadzenie
PHP. Praktyczne wprowadzeniePHP. Praktyczne wprowadzenie
PHP. Praktyczne wprowadzenie
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
Case Study - eRecruiter w Money Expert
Case Study - eRecruiter w Money ExpertCase Study - eRecruiter w Money Expert
Case Study - eRecruiter w Money Expert
 
Grupa Unity - IT przyszlosci 2016v2
Grupa Unity - IT przyszlosci 2016v2Grupa Unity - IT przyszlosci 2016v2
Grupa Unity - IT przyszlosci 2016v2
 
Jarosław Poręba @ "Szybki sukces w finansach" - "I Manewry w Chmurze Partneró...
Jarosław Poręba @ "Szybki sukces w finansach" - "I Manewry w Chmurze Partneró...Jarosław Poręba @ "Szybki sukces w finansach" - "I Manewry w Chmurze Partneró...
Jarosław Poręba @ "Szybki sukces w finansach" - "I Manewry w Chmurze Partneró...
 
Od Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki koduOd Figmy do gotowej aplikacji bez linijki kodu
Od Figmy do gotowej aplikacji bez linijki kodu
 
PHP5. Księga eksperta
PHP5. Księga ekspertaPHP5. Księga eksperta
PHP5. Księga eksperta
 

More from Future Processing

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfFuture Processing
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfFuture Processing
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfFuture Processing
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurzeFuture Processing
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shakeFuture Processing
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myśleniaFuture Processing
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletkaFuture Processing
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...Future Processing
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny BlockchainFuture Processing
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈XFuture Processing
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...Future Processing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NETFuture Processing
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark ApplicationsFuture Processing
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
 

More from Future Processing (20)

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdf
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdf
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 

Wydajne API dla aplikacji mobilnych

  • 1. Wydajne API dla aplikacji mobilnych co warto robić a czego warto unikać aby wycisnąć jak najwięcej z naszego API
  • 2. O mnie •Programista PHP od 10 lat •Obecnie programista w FutureProcessing •WWW, CRM, ERP, API, integracja systemów 2014-09-27 Marcin Wójcik, PHPCon 2014 2 / 24
  • 3. Plan •Skąd ta prezentacja? •Elementy systemu i wpływ na wydajność •Optymalizacja •Dobre praktyki 2014-09-27 Marcin Wójcik, PHPCon 2014 3 / 24
  • 4. Skąd ta prezentacja? 2014-09-27 Marcin Wójcik, PHPCon 2014 1-3 req/ min 2500 req/ sek 4 / 24
  • 5. Co robić, jak żyć? •Zaprojektować dobrze architekturę systemu •Obsługa żądań/połączeń •Przepływ, przetwarzanie, przechowywanie danych •Podział obowiązków: co ma robić API? •(Z)optymalizować aplikację •Optymalizacja frontendu(endpoints) •Optymalizacja backendu •Dbać o dobre praktyki podczas pisania kodu 2014-09-27 Marcin Wójcik, PHPCon 2014 5 / 24
  • 6. Publiczne API 2014-09-27 Marcin Wójcik, PHPCon 2014 SZYBKIEZWALNIANIEZASOBÓW 6 / 24 Endpoints: /getProduct/registerDevice …
  • 7. Backend 2014-09-27 Marcin Wójcik, PHPCon 2014 7 / 24
  • 8. Architektura 2014-09-27 Marcin Wójcik, PHPCon 2014 processes 8 / 24
  • 9. Architektura •Eventualconsistency„spójność ostateczna” :) •o ile do systemu nie są zgłaszane nowe żądania modyfikujące, dane ostatecznie stają się spójne 2014-09-27 Marcin Wójcik, PHPCon 2014 9 / 24
  • 10. Optymalizacja środowiska -soft 2014-09-27 Marcin Wójcik, PHPCon 2014 10 / 24 •nginx •php-fpm •KeepAlive •moduły •tuningLEMP •tuningOS
  • 11. Optymalizacja środowiska -sprzęt 2014-09-27 Marcin Wójcik, PHPCon 2014 11 / 24 •routing •VM vs box •dostawianie maszyn •cloud?
  • 12. Szybkie zwalnianie zasobów 2014-09-27 Marcin Wójcik, PHPCon 2014 12 / 24
  • 13. Szybkie zwalnianie zasobów 2014-09-27 Marcin Wójcik, PHPCon 2014 •Minimalizowanie czasu dostępu do danych •Radzenie sobie z czasochłonnymi operacjami •Możliwie krótki tor przetwarzania żądania •Mało istotne operacje wykonywane po zwróceniu odpowiedzi •RESTless 13 / 24
  • 14. Architektura -dane 2014-09-27 Marcin Wójcik, PHPCon 2014 Rejestracja urządzenia + pobranie listy produktów 14 / 24
  • 15. Optymalizacja API 2014-09-27 Marcin Wójcik, PHPCon 2014 Pregenerowaniedanych 15 / 24 •Identyfikatory •Dane w JSON •URLe
  • 16. Optymalizacja API 2014-09-27 Marcin Wójcik, PHPCon 2014 •Uproszczenie dostępu do danych •HGET usersapp_hash:user_hash •HGET purchasesapp_hash:user_hash •HGET issuesapp_hash •Dane gotowe do wystawienia // getJSON with prepareddata $purchases= $redis->hGet(`purchases`, $app_user_hash); echo $purchases; 16 / 24
  • 17. Optymalizacja API 2014-09-27 Marcin Wójcik, PHPCon 2014 •fastcgi_finish_request() •brak frameworka, usunięcie autoloadera, minimalizacja ilości dołączanych plików •wyłączenie rewrite, oparcie API na strukturze katalogów: ../public_html/getProducts/index.php 17 / 24
  • 18. jMeter 2014-09-27 Marcin Wójcik, PHPCon 2014 UWAGA: stosowanie GUI ogranicza ilość żądań! 18 / 24
  • 19. Ideał 2014-09-27 Marcin Wójcik, PHPCon 2014 19 / 24
  • 20. Dobre praktyki •Ciągłe monitorowanie i profilowanie: (XHProf/ webgrind) + StatsD+ (Graphite/ Munin / Cacti) 2014-09-27 Marcin Wójcik, PHPCon 2014 20 / 24
  • 21. Dobre praktyki 2014-09-27 Marcin Wójcik, PHPCon 2014 21 / 24 •szukaj optymalizacji •unikaj @todoi @fixme •functionalfirst
  • 22. Dobre praktyki 2014-09-27 Marcin Wójcik, PHPCon 2014 22 / 24 API: •architektura •dostęp do danych Backend: •architektura •mikrooptymalizacja APC/OPcache
  • 23. Dobre praktyki •Failover/ disasterrecovery 2014-09-27 Marcin Wójcik, PHPCon 2014 23 / 24
  • 24. Pytania? 2014-09-27 Marcin Wójcik, PHPCon 2014 24 / 24 https://joind.in/talk/view/11846