O WordPress é um poderoso Sistema de Gerenciamento de Conteúdo (CMS) que pode estabelecer a base para diferentes tipos de sites e aplicativos. Ele usa uma típica “arquitetura monolítica”, mas, à medida que um site cresce, essa pode não ser a opção mais adequada. É nesse ponto que uma “arquitetura de microsserviços” pode ser benéfica.

Neste artigo, exploraremos como você pode criar aplicativos web de WordPress usando uma arquitetura de microsserviços. Também apresentaremos o plugin Create Block Theme e discutiremos como essa solução promissora se encaixa em seu desenvolvimento.

O que são microsserviços

Antes de criar qualquer aplicativo web, você deve entender os microsserviços e como eles diferem das arquiteturas monolíticas.

Com a arquitetura monolítica, há um forte acoplamento entre todos os componentes de um aplicativo. Basicamente, é executado como um único serviço. É uma maneira simples de desenvolver um aplicativo, embora a manutenção e o dimensionamento possam se tornar um desafio à medida que ganha complexidade.

Por outro lado, os microsserviços ajudam a dividir o aplicativo em uma coleção de serviços menores. Cada serviço é independente um do outro no que diz respeito ao desenvolvimento, à implementação e ao dimensionamento.

Cada serviço lida com uma tarefa específica e se comunica com os outros serviços por meio de uma interface de programação de aplicativos (API). Por exemplo, considere um site de eCommerce típico, com carrinho, checkout, processamento de pedidos, página de produto, e outros.

O site da DARTDrones mostrando uma de suas páginas de eCommerce.
O site da DARTDrones mostrando uma de suas páginas de eCommerce.

Em uma arquitetura monolítica, todos esses recursos fariam parte de um único e grande aplicativo. O WordPress é monolítico, e usar o Woo como plataforma de eCommerce é um excelente exemplo.

Entretanto, a implementação de uma arquitetura de microsserviços permite usar a tecnologia certa para cada tarefa. Por exemplo, você poderia usar o excelente CMS do WordPress para o seu marketing de conteúdo. O Adobe Commerce poderia ser o seu sistema de gerenciamento de produtos. Uma solução de checkout como o Bolt poderia atender às suas necessidades.

O site do Bolt.
O site do Bolt.

Com os microsserviços, você pode unir tudo isso. A seguir, vamos falar mais detalhadamente sobre por que você deveria considerar seriamente utilizar os microsserviços em seu próximo projeto.

O que faz os microsserviços se destacarem das arquiteturas monolíticas

O melhor “argumento de venda” dos microsserviços é como você pode combinar diferentes tecnologias e ferramentas para criar um todo. No entanto, há outras características, que merecem ser observadas:

  • Desacoplamento. Cada serviço mantém a independência. Isso significa que você pode usar a melhor tecnologia para cada trabalho em vez de lidar com frameworks inadequados.
  • Autonomia. Por extensão, os serviços que você integra não precisam depender uns dos outros para apresentar bom desempenho.
  • Especialização. Obviamente, cada serviço se concentrará em seu próprio trabalho, o que novamente afeta o desempenho.
  • Resiliência. Parte inerente do bom desempenho desse ativo é que uma falha em um serviço não derrubará todo o site.

Além desses aspectos, há outras vantagens ainda maiores de usar microsserviços:

  • Escalabilidade. Você pode dimensionar serviços individuais com base em necessidades individuais sem afetar o restante do aplicativo.
  • Flexibilidade. Já descrevemos brevemente como seus serviços podem usar a melhor tecnologia para o seu trabalho. Isso se estende até mesmo às linguagens de programação que você usa para criá-los.
  • Desenvolvimento mais rápido. Você pode desenvolver serviços pequenos e focados mais rapidamente, entender melhor a funcionalidade do seu serviço e fazer a manutenção do sistema com mais facilidade.
  • Melhor isolamento de falhas. Com a configuração “modular”, você pode isolar um serviço em caso de falha sem afetar os outros serviços.

Por outro lado, os microsserviços podem introduzir complexidade na comunicação, na consistência dos dados e no gerenciamento de sistemas distribuídos. Dessa forma, você deve avaliar cuidadosamente os requisitos do seu aplicativo. Em resumo, considere os benefícios e as desvantagens antes de decidir usar microsserviços.

Os componentes de uma arquitetura de microsserviços

Como você poderia esperar, uma arquitetura de microsserviços pode ser composta de vários componentes. Essas “engrenagens” trabalham juntas em toda a “roda” para fornecer um aplicativo escalável e de fácil manutenção.

Dessa forma, existem alguns componentes fundamentais para uma implementação tranquila:

  • Gateway de API: Esse é o ponto de entrada para todas as solicitações do cliente. Ele transfere essas solicitações para os microsserviços apropriados. Também pode lidar com tarefas como limitação de taxa e autenticação.
  • Descoberta de serviços: Você precisará empregar uma maneira dinâmica de permitir que os microsserviços descubram e se comuniquem uns com os outros. Ferramentas como Consul ou Eureka podem ajudar nisso.
  • Conteinerização: É comum empacotar e implantar microsserviços como contêineres usando ferramentas como o Docker. É assim que você provê isolamento para cada serviço.
  • Orquestração: À medida que você adiciona microsserviços ao seu aplicativo, o gerenciamento deles se torna mais complexo. Uma ferramenta como o Kubernetes pode ajudar a automatizar esse gerenciamento de serviços.
  • Cache: mecanismos de cache, como Redis ou Memcached, geralmente melhoram o desempenho. Isso pode ser crucial, dada a maior pressão sobre os serviços de backend e bancos de dados.
  • Mensagens: Obviamente, seus serviços também precisam conversar entre si. Esse é o trabalho das soluções de mensagens “assíncronas” como o RabbitMQ ou o Apache Kafka. Esses “corretores de mensagens” permitem um acoplamento frouxo entre seus microsserviços.

No entanto, as ferramentas são apenas um aspecto da sua configuração. Há outras considerações, incluindo como você projetará cada microsserviço dentro da arquitetura completa.

Padrões de design para microsserviços

Seus padrões de design para microsserviços são tão importantes aqui quanto em qualquer outro ponto do seu fluxo de trabalho de desenvolvimento. Dada a potencial complexidade em todo o seu aplicativo, é importante considerar quais padrões terão o maior impacto. Podemos apontar três deles:

  • Banco de dados por serviço: Cada microsserviço usa seu próprio banco de dados dedicado, o que ajuda no isolamento e autonomia dos dados.
  • Composição de API: Você pode compor microsserviços para criar serviços ou APIs de nível superior. Essa flexibilidade e possibilidade de reutilização é um dos principais benefícios.
  • Arquitetura orientada por eventos: Aqui, os serviços se comunicam por meio de eventos. Isso facilita um acoplamento mais frouxo e processamento assíncrono.

Também é fundamental levar em conta padrões de design específicos para as ferramentas que você usará para criar sua arquitetura. Por exemplo, o Docker e o Kubernetes têm padrões típicos que você deve considerar juntamente com o design global da sua arquitetura.

No entanto, entenda que nem todo componente precisa ser um microsserviço. A ideia correta é começar com os principais serviços e fazer a arquitetura evoluir com o tempo. Mais adiante discutiremos isso em mais detalhes. Primeiro, devemos ver como desenvolver o frontend.

Apresentando o plugin Create Block Theme

É provável que o WordPress apareça em algum lugar da sua arquitetura, já que é excelente em muitos aspectos. Um deles é a facilidade de uso no frontend. Os temas são uma parte essencial da plataforma, e criar o seu próprio tema é muito mais fácil agora que existem plugins como o Create Block Theme.

A imagem do cabeçalho do Create Block Theme em WordPress.org.
A imagem do cabeçalho do Create Block Theme em WordPress.org.

Esse plugin é o sucessor espiritual do tema inicial Underscores, mas é totalmente compatível com a edição completa do site (FSE). Você pode criar um tema inicial rapidamente, aproveitar todo o poder do editor e se beneficiar de todas as opções de personalização. Ele funciona como um plugin típico de WordPress, com a opção de exportá-lo como um tema independente posteriormente.

Ao usar o plugin Create Block Theme junto com uma arquitetura de microsserviços, você pode “colar” tudo. Por exemplo, você pode usar Padrões de Blocos e Blocos reutilizáveis em diferentes sites WordPress. Ao passo que isso promove a reutilização e a consistência do código, também pode trazer uma frente unificada para todos os serviços individuais que você usa.

Exploraremos os detalhes de como usar o Create Block Theme mais adiante neste artigo. Por enquanto, vamos discutir o WordPress headless e como os microsserviços podem afetá-lo.

A interseção entre o WordPress headless e uma arquitetura de microsserviços

Se você quiser desacoplar os frontends e backends do WordPress, microsserviços podem ser uma etapa natural. No caso do WordPress headless típico, a plataforma serve apenas para o gerenciamento de conteúdo. Pode ser que seja usada como uma API.

Ao combinar o WordPress sem interface com uma arquitetura de microsserviços, você pode:

  • Aproveitar a API REST do WordPress. O WordPress fornece uma API REST integrada que permite recuperar e manipular o conteúdo de forma programática. Você pode usar essa API para integrar seus microsserviços ao WordPress.
  • Tenha escalabilidade independente dos seus frontend e backend. Com duas partes independentes do seu site, você pode dimensionar ambas e obter melhor desempenho. Apesar das complexidades, você realmente obtém flexibilidade.

A seguir, vamos nos concentrar um pouco mais na API REST. É assim que você consumirá os microsserviços, e portanto é uma parte vital de toda a cadeia.

Microsserviços e a API REST do WordPress

A API REST do WordPress desempenha um papel crucial ao permitir a integração entre seu site e os microsserviços. Seus endpoints permitem que você recupere e manipule artigos, páginas, usuários, taxonomias, entre outros, do WordPress, usando a saída em JSON.

[
  {
    "id": 1,
    "date": "2020-04-01T10:30:00",
    "date_gmt": "2020-04-01T14:30:00",
    "guid": {
      "rendered": "https://example.com/?p=1"
    },
    "modified": "2020-04-01T10:30:00",
    "modified_gmt": "2020-04-01T14:30:00",
    "slug": "hello-world",
    "status": "publish",
    "type": "post",
    "link": "https://example.com/hello-world/",
    "title": {
      "rendered": "Hello World"
    },
    …

Dessa forma, a API REST é o hub de todos os outros serviços da arquitetura. Isso significa que é preciso escolher quais serviços do site atual você irá extrair como microsserviços. Veremos isso com mais detalhes adiante neste artigo.

Em uma palavra, o segredo é identificar as diferentes funcionalidades e responsabilidades dentro do seu aplicativo web. A partir daí, você pode dividi-las em microsserviços independentes, focados e implementáveis.

Criando um aplicativo web com o Create Block Theme e microsserviços

O restante deste artigo abordará os conceitos básicos de microsserviços e WordPress headless. Abordará muitas coisas em termos holísticos, visto que o processo real será específico para suas necessidades.

Mesmo assim, vamos nos aprofundar no processo de criação de um aplicativo web usando microsserviços e o plugin Create Block Theme. A primeira etapa é configurar seu ambiente de desenvolvimento.

1. Configure um ambiente de desenvolvimento

Todo aplicativo começa com um espaço para ser criado. Sendo assim, você precisa de um ambiente de desenvolvimento. Há dois locais para o espaço de desenvolvimento: seu computador local e o seu servidor.

Há muitas maneiras de configurar um ambiente de desenvolvimento local, embora nós, naturalmente, recomendemos o DevKinsta:

A logo da DevKinsta.
A logo da DevKinsta.

Também recomendamos um ambiente de teste, pois você precisa de uma maneira de testar as alterações antes de implantá-las. Se você escolher o DevKinsta e for um cliente da Kinsta, terá maior conectividade com seu servidor:

A tela de informações do site DevKinsta.
A tela de informações do site DevKinsta.

O DevKinsta instalará o Docker para você, o que ajuda a tirar outra tarefa da sua lista. Você pode querer usar o Kubernetes para orquestração, então este é o momento de instalá-lo. A Kinsta usa isso para aplicativos de hospedagem de banco de dados e outras tarefas, e você pode baixá-lo no Docker Desktop:

As configurações do Kubernetes no painel do Docker.
As configurações do Kubernetes no painel do Docker.

É aqui que você deverá configurar também quaisquer outros frameworks necessários para desenvolver seu tema. No entanto, você não conseguirá fazer nada sem o plugin Create Block Theme; portanto, vamos dar uma olhada nele agora.

2. Configure o plugin Create Block Theme

Tendo configurado seu ambiente de desenvolvimento, você poderá começar a trabalhar com o plugin Create Block Theme para criar seu tema personalizado baseado em blocos. Você também precisará do seguinte:

  • Um site de WordPress com que possa trabalhar.
  • Qualquer editor de código que você prefira usar.
  • O plugin Create Block Theme.

Você pode instalar o plugin da maneira típica do WordPress. A partir daí, você deve acessar o link Appearance > Create Block Theme no WordPress:

O link do Create Block Theme no painel WordPress.
O link do Create Block Theme no painel WordPress.

Adicionalmente, se você verificar a aba Appearance, verá a opção Manage Theme Fonts (Gerenciar fontes do tema). O Create Block Theme também dá acesso a essa opção, que é essencialmente o recurso Biblioteca de Fontes do WordPress 6.5.

Independentemente disso, na tela Create Block Theme, você verá uma lista de opções para gerar um novo tema. Não vamos examinar todos eles aqui, mas escolhemos clonar o Twenty Twenty-Four. De qualquer forma, você verá um conjunto de opções e campos:

A tela de configurações do Create Block Theme.
A tela de configurações do Create Block Theme.

Se você observar bem, esses campos se tornarão os campos de identidade do tema no seu arquivo style.css. Eles são simples e consistem na escolha de um nome, captura de tela, URL e algumas tags para o Diretório de Temas do WordPress.

Após clicar para confirmar, vá para a tela Appearance > Themes novamente e veja seu novo tema pronto e aguardando:

A tela de temas do WordPress.
A tela de temas do WordPress.

Em alguns casos, você fará o download de um arquivo ZIP do seu tema, que deverá ser carregado de volta para o WordPress. Observe que você também pode exportar o tema, mas, no nosso caso, não faremos isso agora.

Dicas para configurar e usar o Create Block Theme

Também não vamos nos aprofundar muito na personalização do seu novo tema de bloco, pois isso está além do escopo deste artigo. Todavia, aqui estão algumas dicas de uso para o Create Block Theme:

  • Você pode fazer modificações em dois lugares. Usando a opção Global Styles no Full Site Editor ou personalizando o arquivo theme.json.
  • É uma boa ideia criar um bloco para o microsserviço que você escolheu. Falaremos mais sobre isso.
  • O Create Block Theme permite que você gere um tema filho (child theme) com base no tema ativo atual. No entanto, sua escolha dependerá de seus objetivos.

Vamos falar um pouco mais sobre o último ponto. Se esse for um tema para criar e distribuir, você desejará trabalhar dentro do tema principal. Para seu próprio uso, você pode personalizar apenas o tema filho. Como regra geral, quanto menos “populoso” for um tema inicialmente, mais você deverá trabalhar com o tema principal.

3. Extraindo os microsserviços que você escolheu

Quando o seu tema de bloco estiver pronto para ser implementado, é hora de examinar seus microsserviços mais de perto. Uma decisão importante que você precisará tomar é quais serviços se tornarão “micro”.

Essa pode ser uma pergunta complexa e subjetiva, a ser respondida por suas próprias necessidades. No entanto, há alguns fatores a observar:

  • Os recursos do seu site: Observe cada funcionalidade distinta que seu site oferece e considere dividi-las em microsserviços separados, como, por exemplo, a funcionalidade de pagamento.
  • Escalabilidade independente: Um serviço existente que depende de escalonamento independente será um bom candidato para microsserviços. O armazenamento em cache pode ser um exemplo disso.
  • Diversidade tecnológica: Se você precisar se afastar da arquitetura PHP do WordPress, esse é também um bom candidato a microsserviço. Esse pode ser o caso de plataformas específicas de eCommerce ou componentes de backend.
  • Isolamento de dados: Serviços com requisitos de armazenamento de dados personalizados podem ser microsserviços. Esse também é o caso se esses serviços não precisarem compartilhar dados com outros.

Em nossa opinião, é uma ideia consistente criar microsserviços que forneçam funcionalidades específicas de API. Podem ser pesquisa, processamento de pagamentos ou autenticação. Se esses serviços puderem reagir com outras APIs próprias e de terceiros, isso os tornará mais flexíveis e valiosos.

Desenvolvendo e implantando seus microsserviços

Para trabalhar e, eventualmente, implantar seus microsserviços, você precisará contar com outras ferramentas. Aqui estão algumas considerações importantes e ferramentas que você pode usar:

  • O Docker é geralmente o meio pelo qual você conteineriza seus microsserviços. Ele empacota o microsserviço e suas dependências em conjunto, facilitando a implantação e o dimensionamento.
  • Cada microsserviço também precisará de um Dockerfile, que deve especificar as dependências, as configurações e o ambiente de runtime de que você precisa.
  • Use o Kubernetes para orquestração e gerenciamento de contêineres. A Kinsta fornece uma plataforma avançada com suporte integrado para o Kubernetes.
  • Os pipelines de integração e implantação contínuas (CI/CD) podem ser a forma como você automatiza a criação, os testes e a implantação. Ferramentas como GitLab e Travis CI podem ajudar a simplificar seus processos de CI/CD.
  • Funções sem servidor não precisam de um servidor completo, sendo ótimas para microsserviços. Plataformas como o AWS Lambda, o Google Cloud Functions ou o Azure Functions permitem que você execute códigos sem provisionar ou gerenciar servidores.
  • Gateways de API fornecem um ponto de entrada único para os seus microsserviços. Ferramentas como Kong ou Amazon API Gateway podem ajudar você a gerenciar e proteger suas APIs. Além disso, podem lidar com tarefas como autenticação, limitação de taxa e roteamento de solicitações.

Nesse ponto, você terá um site WordPress e um microsserviço independentes um do outro. A etapa final é integrá-los.

4. Integrando microsserviços com o WordPress

Após desenvolver e implantar seus microsserviços, você precisa integrá-los ao WordPress. Para fazer isso, você fará chamadas de API do WordPress para os endpoints que seu microsserviço expõe. Dessa forma, você precisará conhecer a API REST por dentro.

A maneira típica de fazer isso no WordPress é com wp_remote_get() ou wp_remote_post(). Isso permitirá que você envie solicitações HTTP e lide com as respostas. Aqui está um código de exemplo de como tudo isso se encaixaria:

// API endpoint URL

$api_url = 'https://api.example.com/endpoint';

// API request parameters

$params = array(
    'param1' => 'value1',
    'param2' => 'value2',
);


// Make the API request using wp_remote_get
$response = wp_remote_get(add_query_arg($params, $api_url));

// Check if the request was successful
if (is_wp_error($response)) {
    // Handle the error
    $error_message = $response->get_error_message();

    // Log or display the error message
} else {
    // Process the API response
    $response_body = wp_remote_retrieve_body($response);

    $data = json_decode($response_body, true);

    // Use the retrieved data as needed

    // ...
}

Os microsserviços geralmente se beneficiam da busca assíncrona de dados para evitar o bloqueio do thread principal. O WordPress pode combinar dois elementos para fazer isso. Você pode usar o pacote API Fetch, juntamente com o suporte para async e defer introduzido no WordPress 6.3. Seu código pode se parecer com o seguinte:

import apiFetch from '@wordpress/api-fetch';

// Microservice API endpoint URL
const microserviceUrl = 'https://api.example.com/microservice';
...


// Make the API request to the microservice
apiFetch({
  path: microserviceUrl,
  method: 'GET',
  data: params,
})

  .then((response) => {
    // Process the response
    console.log(response);

    // Use the retrieved data from the microservice

    // ...
  })
...

Você também pode considerar o AJAX para realizar atualizações dinâmicas da interface do usuário (UI).

Obviamente, a autenticação adequada e as medidas de segurança também são cruciais. A API REST do WordPress inclui algumas maneiras de autenticar sessões, como o uso de cookies, JSON Web Tokens (JWT) ou senhas de aplicativos. Dada a dependência de soluções externas, é fundamental manter a segurança dos microsserviços e do site.

Como estamos usando um tema de bloco personalizado, faz sentido aproveitar essa funcionalidade. Adicionar seu microsserviço a um bloco significa que você pode incluí-lo em praticamente qualquer lugar do seu site. Para dar um passo além, você pode até querer incluir essa funcionalidade em um plugin.

O processo tem três componentes: registro do Bloco, renderização do conteúdo e processamento de dados. JavaScript será a sua linguagem escolhida aqui, e a função registerBlockType cuidará do registro e renderização:

// JavaScript function that builds the Block to enable access within the Block Editor.
( function( blocks, element ) {
    var el = element.createElement;

    blocks.registerBlockType( 'my-micro/stripe-api', {
        title: 'Stripe Payment Gateway',
        icon: 'dashicons-cart',
        category: 'embed',

        edit: function() {
            return el(
                'div',
                {},
                '' // Create the visual elements of the microservice to display within the Block Editor.
            );
        },
…

Esse é um exemplo muito básico de registro de um Bloco, e qualquer coisa a mais está fora do escopo deste artigo. No entanto, você pode ver que é fácil combinar o plugin Create Block Theme, microsserviços e o WordPress. Se você usar o provedor de hospedagem correto, terá outra maneira de agregar valor à sua arquitetura de microsserviço.

Usando a Kinsta para gerenciar e dimensionar seu site WordPress e microsserviços

Todo o ecossistema da Kinsta é bastante adequado para gerenciar sites WordPress usando arquitetura de microsserviços. Em seu núcleo está a hospedagem de aplicativos. Isso pode simplificar a implantação de microsserviços em contêineres, e então usar as outras ofertas da Kinsta para mantê-los.

Por exemplo, o dimensionamento automático ficará de olho em seus recursos para lidar com picos de tráfego. Isso significa que seus microsserviços podem ser ampliados ou reduzidos de acordo com a demanda. Você obtém os benefícios de desempenho enquanto mantém os custos baixos.

A Kinsta oferece hospedagem gerenciada para uma variedade de tipos de bancos de dados:

O último tem vários casos de uso diferentes, como cache in-memory, message broker, banco de dados de vetores e documentos, e outros, tudo sem a necessidade de SQL.

A logo do Redis.
A logo do Redis.

Essa variedade significa que a Kinsta pode lidar com os bancos de dados de WordPress e de microsserviços sem esforço. Juntamente com o melhor cache da categoria, suporte a Docker e Kubernetes, o elegante painel MyKinsta e muito mais, você dispõe de um pacote completo para hospedar seus microsserviços juntamente com o WordPress.

Resumo

O WordPress é monolítico, mas isso não o impede de incorporar microsserviços. Isso pode trazer muitos benefícios, como maior escalabilidade, flexibilidade e desenvolvimento mais rápido.

O plugin Create Block Theme permite que você crie uma base de código limpa e segura para o restante do seu projeto. Os microsserviços podem introduzir complexidade em seu site. Usar um tema de bloco personalizado significa que você pode implementar esses serviços da melhor maneira para suas necessidades. Se você combinar isso com ferramentas de desenvolvimento, como o DevKinsta e a hospedagem de aplicativos da Kinsta, terá a base ideal para criar aplicativos web modernos e poderosos.

Você acha que uma arquitetura de microsserviços se encaixa perfeitamente com o plugin Create Block Theme? Conte-nos o que você acha disso, e suas experiências, na seção de comentários abaixo!

Jeremy Holcombe Kinsta

Editor de Conteúdo & Marketing na Kinsta, Desenvolvedor Web WordPress e Escritor de Conteúdo. Fora do universo WordPress, eu curto praia, golfe e filmes. Também enfrento problemas de gente alta ;).