Budowanie aplikacji PHP bez użycia frameworków

Preview:

Citation preview

Michał ŁukaszewskiIntelSoftware Engineer

Budowanie aplikacji PHP

bez użycia frameworków

Plan historyjki

• Smuteczki

• Mądrzenie się

• Wnioski

Smuteczki

Czemu się czepiam frameworków?

Problemy jakie rozwiązują

Rapid Development

Te, które same stworzyły

Problemy jakie stwarzają

• Mnóstwo kodu

Problemy jakie stwarzają

• Mnóstwo kodu

• Korzystasz z kodu, którego nie rozumiesz

• Opcache ma limity

• Zaczynasz wykorzystywać rozwiązania, które „dostałeś”, a nie tych, których

na danym etapie projektu naprawdę potrzebujesz

Problemy jakie stwarzają

• Mnóstwo kodu

• Mnóstwo zależności

Casus Left-pad gate

Problemy jakie stwarzają

• Mnóstwo kodu

• Mnóstwo zależności

• Mnóstwo dokumentacji

Problemy jakie stwarzają

• Mnóstwo kodu

• Mnóstwo zależności

• Mnóstwo dokumentacji kiepskiej dokumentacji

Problemy jakie stwarzają

• Mnóstwo kodu

• Mnóstwo zależności

• Mnóstwo dokumentacji kiepskiej dokumentacji

• Opóźnione aktualizacje komponentów

Problemy jakie stwarzają

• Mnóstwo kodu

• Mnóstwo zależności

• Mnóstwo dokumentacji kiepskiej dokumentacji

• Opóźnione aktualizacje komponentów

• Latami utrzymywana zgodność ze starszymi wersjami środowisk

Problemy jakie stwarzają

• Mnóstwo kodu

• Mnóstwo zależności

• Mnóstwo dokumentacji kiepskiej dokumentacji

• Opóźnione aktualizacje komponentów

• Latami utrzymywana zgodność ze starszymi wersjami środowisk

• Są coraz wolniejsze i nikogo to nie obchodzi

Problemy jakie stwarzają

• Mnóstwo kodu

• Mnóstwo zależności

• Mnóstwo dokumentacji kiepskiej dokumentacji

• Opóźnione aktualizacje komponentów

• Latami utrzymywana zgodność ze starszymi wersjami środowisk

• Są coraz wolniejsze i nikogo to nie obchodzi

• Brak kontroli nad bezpieczeństwem (np. OWASP A9)

Problemy jakie stwarzają

• Mnóstwo kodu

• Mnóstwo zależności

• Mnóstwo dokumentacji kiepskiej dokumentacji

• Opóźnione aktualizacje komponentów

• Latami utrzymywana zgodność ze starszymi wersjami środowisk

• Są coraz wolniejsze i nikogo to nie obchodzi

• Brak kontroli nad bezpieczeństwem (np. OWASP A9)

• Zależności jego zależności

Problemy jakie stwarzają

• Mnóstwo kodu

• Mnóstwo zależności

• Mnóstwo dokumentacji kiepskiej dokumentacji

• Opóźnione aktualizacje komponentów

• Latami utrzymywana zgodność ze starszymi wersjami środowisk

• Są coraz wolniejsze i nikogo to nie obchodzi

• Brak kontroli nad bezpieczeństwem (np. OWASP A9)

• Zależności jego zależności

• Degeneracja umysłowa programistów

Wojny frameworków

Programista frameworka

• Dopasowuje świat do frameworka

• Spędza godziny wertując dokumentację frameworka

• Która i tak go okłamuje, więc potem zamęcza innych na grupach dyskusyjnych

• Każde rozwiązanie czy architektura musi pasować do frameworka

• Coś co nie jest w bundlu – nie istnieje

• Rozwiązuje problemy stwarzane przez framework, a nie przypadki biznesowe.

• Święcie wierzy, że reszta świata się myli

Mądrzenie się

Czego tak naprawdę potrzebujemy

Czego tak naprawdę potrzebujemy

Router/Dispatcher

Czego tak naprawdę potrzebujemy

Router/Dispatcher Responder/Renderer

Warstwy, ogry mają warstwy

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Warstwy, ogry mają warstwy

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

Warstwy, ogry mają warstwy

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

Serializers

Warstwy, ogry mają warstwy

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

SerializersValidators

Warstwy, ogry mają warstwy

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

SerializersValidators

Ca

ch

e

Warstwy, ogry mają warstwy

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

SerializersValidators

Ca

ch

eC

ac

he

Warstwy, ogry mają warstwy

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

SerializersValidators

Ca

ch

eC

ac

he

Cache

Warstwy, ogry mają warstwy

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

SerializersValidators

Ca

ch

eC

ac

he

Cache

Cache

Warstwy, ogry mają warstwy

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

SerializersValidators

Ca

ch

eC

ac

he

Cache

Cache

Cache

Architektura über alles

Business requirements

Architecture Implementation

Elastyczność

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

SerializersValidators

Ca

ch

eC

ac

he

Cache

Cache

Cache

Elastyczność

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source

SerializersValidators

Ca

ch

eC

ac

he

Cache

Cache

Cache

Elastyczność

Router/Dispatcher Responder/Renderer

Magic/Unicorns/Fairies

Data Source A

SerializersValidators

Ca

ch

eC

ac

he

Cache

Cache

Cache

Data Source B

Elastyczność

http://getprooph.org

Wnioski

Ale...

Tak, zbudowaliście framework

Tak, zbudowaliście framework

• Minimalny

• Oparty ma architekturze, którą rozumiecie

• Bo dopasowanej bo biznesu, któremu ma służyć

• Optymalny dla Waszych możliwości technicznych i poznawczych

Nigdy więcej frameworka?

Nigdy więcej frameworka?

Business requirements

Architecture Implementation

Nigdy więcej frameworka?

Business requirements

Architecture Implementation

Architecture Implementation

Nigdy więcej frameworka?

Implementation

Framework

Microframework

Full framework

Specialiazedframework

(i.e. Magento)

Custom Do you best

Nigdy więcej frameworka?

• Nie odkrywaj koła na nowo

• Potrzeby biznesowe są ważniejsze od mojej strefy komfortu

• Za pomocą dużego frameworka można zrobić wszystko

• Ale nie wszystko jej sens

• Samodzielne myślenie boli tylko nie przyzwyczajonych

&Michał ŁukaszewskiIntelSoftware Engineer