Multi kernelowa aplikacja w oparciu o Symfony 3 i microkernele

32
Radek Baczyński 01 4Developers 2016

Transcript of Multi kernelowa aplikacja w oparciu o Symfony 3 i microkernele

Radek Baczyński

01

4Developers 2016

Multi kernelowa aplikacja w oparciu o Symfony 3 i microkernele

02

Monolit vs Wiele aplikacji 1

Message

Price3rd party integration

Frontend

Backend AdminAuth

App

Ilość zainstalowanych bundli

30

60

90

120

2013 2014 2015 2016

BundleAplikacja monolityczna w Symfony

Container, events, routesAplikacja monolityczna w Symfony

~2000 ~ 200 ~ 7500Usług w kontenerze Różych eventów Route

Dlaczego tak?Aplikacja monolityczna w Symfony

!

? Baaardzo szybki wzrost biznesu

21

? FOSElasticaBundle

? I18nRoutingBundle

? Wstępne założenia

Dajemy radę!Monolityczna aplikacja w Symfony

Bartek Kuleszewicz Przyspieszenie Symfony2 na przykładzie ZnanyLekarz.pl

05

https://vimeo.com/153816243

Wiele aplikacji 1

Message

Price3rd party integration

Frontend

Backend AdminAuth

! Bounded context

Cechy architektury wieloaplikacyjnej

!Duży problem dzielimy na wiele mniejszych problemów

! Większa autonomia zespołów

Wyzwania 1

! Deploy

Cechy architektury wieloaplikacyjnej

! Wiele repozytoriów (?)

! Warstwa sieciowa

! Tranzakcyjność

! Środowisko developerskie

Wiele aplikacji, a Symfony

02

Da się, ale…

SymfonyArchitektura wieloaplikacyjna w Symfony

" You never need more than one application in Symfony2"

Fabien Potencier

SpróbujmyArchitektura wieloaplikacyjna w Symfony

Symfony 2.8 wprowadziło MicroKernele, co ułatwia tworzenie wielu aplikacji w jednym

projekcie.

Ale ta możliwość była zawsze

http://jolicode.com/blog/multiple-applications-with-symfony2

Kernel & ContainerArchitektura wieloaplikacyjna w Symfony

Kernel & ContainerArchitektura wieloaplikacyjna w Symfony

Kernel & ContainerArchitektura wieloaplikacyjna w Symfony

app.php i wiele KerneliArchitektura wieloaplikacyjna w Symfony

Użyj stackphp lub nginx.conf

AdminKernelArchitektura wieloaplikacyjna w Symfony

Struktura 1

! katalog app apps

!configi indywidualne i współdzielone

!bundle indywidualne i współdzielone

Architektura wieloaplikacyjna w Symfony

Nowe problemy 1

! Assety

! Eventy

! Komunikacja między aplikacjami

Architektura wieloaplikacyjna w Symfony

API call spider’s web 1

Architektura wieloaplikacyjna w Symfony

Email

Price

3rd party integration

Frontend

BackendAuth

Message Bus 1

Architektura wieloaplikacyjna w Symfony

Email

Price

3rd party integration

Frontend

BackendAuth

message bus

AddOrderCommandAddedOrderEvent

Message Bus 1

Architektura wieloaplikacyjna w Symfony

! Commandy & Eventy asynchroniczne

! Monitoring i debugowanie

!Łatwość wpinania nowych aplikacji

Ale co z tym monolitem

02

W praktyce 1

Zmiana architektury z monolitycznej na wielo aplikacyjną

5 112 28Zespołów Bundli Krajów

1Aplikacja

Hackathon 1

Zmiana architektury z monolitycznej na wielo aplikacyjną

"

"

“Zajmie nam to rok” “To ma sens?” “Jak to zrobić”

“Zróbmy to w jeden dzień!”

Hackathon 1

Zmiana architektury z monolitycznej na wielo aplikacyjną

App

Front End

API

FrontEnd 1

Architektura wieloaplikacyjna w Symfony

! Tylko strona główna

! ~8 godzin Hackathon

!Sprawdzimy co będzie problemem

FrontEnd 1

Architektura wieloaplikacyjna w Symfony

!Osobna aplikacja i repozytorium

! Kopiujemy szablony Twig

! Assety z CDN

!Na razie dla niezalogowanych ale wprowadzimy SSO*

*https://pl.wikipedia.org/wiki/Pojedyncze_logowanie

! Cache!

! Testy wydajnościowe!

!Aplikacja szkieletowa dla kolejnych aplikacji

Monolit staje się backendem 1

Zmiana architektury z monolitycznej na wielo aplikacyjną

Backend

Front End

API

SearchEngine

API

Backoffice

API

Queue

Podsumowanie 1

Architektura wieloaplikacyjna w Symfony

! Zrób to na początku

!Jeśli masz dojarzały projekt znasz swoje Bounded Contexts

! Nie ugrzęźnij

Fajne wyzwanie? napisz do mnie:

[email protected] @radekbac

http://fb.com/radek-baczynski

02

Dziękuję :)

Czy macie jakieś pytania?

02