PHP (Laravel) - mikroserwisy - jak to się robi?

0

Witam.

Czy możecie mi podpowiedzieć jak w php podejść do tematu aplikacji opartej na mikroserwisach?

Chcę (a właściwie muszę, bo to na zaliczenie (inżynieria oprogramowania i programowanie w środowiskach rozproszonych)) aplikację podzieloną na mikroserwisy.
Chciałbym ją napisać z wykorzystaniem PHP (najlepiej z wykorzystaniem Laravela).

Z tego co się dowiedziałem to np w Javie działa to mniej więcej tak, że są serwisy a nad nimi są usługi które nadzorują komunikację pomiędzy nimi oraz pomiędzy frontem.
Wykorzystujemy do tego m.in:

  • Api gateway - Zuul
  • Service discovery - Eureka

A czego można użyć (użycie czego będzie najprostsze) w przypadku php?

Z góry dziękuję za pomoc.

0

W Javie na tyle nie robiłem by móc porównać, ale w PHP nie ma tutaj nic szczególnie wymagającego. Po prostu to co zwykle byś robił jako jedną stronę rozbijasz na osobne API. Samo API może być klasyczne REST czy GraphQL (Laravel nie wspiera natywnie, jest do tego Lighthouse).

Laravel na API jest spoko, ale na bardzo proste mikrousługi to trochę przerost formy nad treścią, bo to fullstackowy framework. By pozostać w ekosystemie Laravela to sprawdź Lumena, to taki okrojony Laravel typowo do API. Jeżeli pozostajemy w Laraverze to posprzątał bym go wywalając wszystko co zbędne a więc otoczkę frontendową.

Jeżeli wszystkie usługi mają być własnego autorstwa to piszesz ile ich tam potrzeba i wrzucasz do osobnych kontenerów (Docker) i spinasz w Docker Compose by usługi miały połączenie między sobą. W teorii docker compose da radę i na produkcji, ale jeżeli to ma być też zadanie bardziej devopsowe to pewnie trzeba by postawić Kubernetesa pod to.

Oczywiście jest tu bardzo dużo kwestii i nie wiem jakie to studia i jakie zaliczenia, ze mnie też żaden student ;)

0

Microserwisy w PHP, uproszczony model

  • Wystaw aplikację numer 1, w pliku file.php na porcie localhost:8081:
    <?php
    echo json_encode(['value' => 123]);
    
  • Wystaw drugą aplikację, w pliku app.php, na porcie localhost:8082:
    <?php
    $responseAsString = file_get_contents("http://localhost:8081/file.php"); // dowolny sposób na request, może być curl, Guzzle, cokolwiek
    $data = json_decode($responseAsString, true);
    echo "Dane z mikroserwisu to " . $data['value'];
    
  • Otwórz przeglądarkę i otwórz http://localhost:8082/app.php

1 użytkowników online, w tym zalogowanych: 0, gości: 1