Microsserviços em PHP: arquitetura e prática do A ao Z

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
Aqui está a tradução do conteúdo HTML educacional do russo para o português (Português), mantendo todas as tags HTML e os termos técnicos em inglês:

Introdução: Por que PHP e microsserviços?

Por muito tempo, o PHP foi associado exclusivamente a aplicações monolíticas — WordPress, Laravel ou Symfony. No entanto, o PHP moderno (a partir da versão 7.4 e especialmente 8.x) se transformou em uma ferramenta poderosa para a construção de arquiteturas de microsserviços. Graças ao desempenho aprimorado, tipagem estrita, capacidades assíncronas (via ReactPHP ou Swoole) e um ecossistema maduro, o PHP se tornou uma linguagem completa para microsserviços.

Neste artigo, vamos abordar: o que são microsserviços em PHP, como projetar a arquitetura, quais tecnologias usar e escrever exemplos reais de código.



O que é arquitetura de microsserviços?

Microsserviços são uma abordagem na qual uma aplicação é dividida em serviços pequenos e implantados de forma independente. Cada serviço é responsável por sua própria função de negócio e se comunica com os outros através da rede (HTTP/REST, gRPC, filas de mensagens).



Princípios-chave dos microsserviços em PHP

  • Independência — cada serviço pode ser escrito em PHP, Node.js ou Go, mas usamos PHP para todos.
  • Descentralização de dados — cada banco de dados pertence a apenas um serviço.
  • Orquestração vs Coreografia — escolha entre gerenciamento centralizado (Kubernetes) e uma abordagem orientada a eventos.
  • Tolerância a falhas — um serviço que falha não deve quebrar todo o sistema.


Arquitetura de microsserviços em PHP: da teoria à prática

Vamos considerar um projeto típico: uma loja online. Vamos dividi-lo em microsserviços:

  • User Service — registro, autenticação, perfis.
  • Product Service — catálogo de produtos, preços, estoque.
  • Order Service — criação de pedidos, status.
  • Payment Service — processamento de pagamentos.
  • Notification Service — notificações por email/SMS.


Passo 1: Projetando o API Gateway

API Gateway — ponto de entrada único. Em PHP, pode ser implementado com Slim Framework ou usando Nginx + PHP-FPM. Exemplo de um gateway simples no Slim 4:



<?php// api-gateway/public/index.phpuse Slim\\Factory\\AppFactory;use Psr\\Http\\Message\\ServerRequestInterface as Request;use Psr\\Http\\Message\\ResponseInterface as Response;

require __DIR__ . '/../vendor/autoload.php';

$app = AppFactory::create();

// Roteamento para microsserviços$app->post('/api/orders', function (Request $request, Response $response) { // Redireciona a requisição para o Order Service $client = new GuzzleHttp\\Client(['base_uri' => 'http://order-service:8080']); $res = $client->post('/orders', [ 'json' => $request->getParsedBody() ]); $response->getBody()->write($res->getBody()); return $response->withStatus($res->getStatusCode());});

$app->run();


Passo 2: Interação síncrona (REST)

A maneira mais simples — requisições HTTP entre serviços. Usamos Guzzle ou Symfony HttpClient. Exemplo do Product Service:



<?php// product-service/src/Controller/ProductController.phpnamespace App\\Controller;

use Symfony\\Component\\HttpFoundation\\JsonResponse;use Symfony\\Component\\HttpFoundation\\Request;

class ProductController{ public function getProduct(int $id): JsonResponse { // Lógica para obter o produto do banco de dados $product = $this->productRepository->find($id); if (!$product) { return new JsonResponse(['error' => 'Product not found'], 404); } return new JsonResponse([ 'id' => $product->getId(), 'name' => $product->getName(), 'price' => $product->getPrice() ]); }}


Passo 3: Assíncrono

Blogs

Book Recommendations