マイクロサービス・アーキテクチャを使ったWordPressウェブアプリケーションの構築方法

WordPressは強力なコンテンツ管理システム(CMS)であり、さまざまなタイプのウェブサイトやアプリケーションの基礎を築きます。WordPressは典型的な「モノリシックアーキテクチャ」を採用していますが、ウェブサイトが成長するにつれて、このアーキテクチャが最も適切でなくなる可能性があります。そこで登場するのが「マイクロサービスアーキテクチャ」です。

图片[1]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

マイクロサービスとは

モノリシック・アーキテクチャでは、アプリケーションのすべてのコンポーネントは互いに緊密に結合しています。アプリケーションは基本的に単一のサービスとして動作します。これはアプリケーションを開発するシンプルな方法ですが、複雑さが増すと、メンテナンスとスケーラビリティが課題になります。

対照的に、マイクロサービスはアプリケーションを一連の小さなサービスに分解するのに役立ちます。各サービスは、開発、デプロイ、拡張の面で互いに独立しています。各サービスは特定のタスクを処理し、アプリケーション・プログラミング・インターフェース(API)を通じて他のサービスと通信します。例えば、典型的なeコマースサイトには、ショッピングカート、チェックアウト、注文処理、商品ページなどがあります。

图片[2]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

マイクロサービスをアーキテクチャ全体から際立たせるもの

マイクロサービスの高度な "リフトピッチ "とは、異なる技術やツールをいかに組み合わせて全体を作り上げるかということです。他にも特筆すべき深い特徴があります:

  • デカップリング各サービスは独立しています。つまり、不適切なフレームワークを使用することなく、各業務に最適なテクノロジーを使用することができます。
  • 自治スケーリングにより、統合されたサービスは互いに依存することなく、高いパフォーマンスを発揮します。
  • プロ化もちろん、各サービスは自分たちの仕事に集中し、それがパフォーマンスに影響します。
  • 回復力1つのサービスが停止しても、サイト全体がダウンすることはありません。

このような側面以外にも、マイクロサービスを利用するメリットはあります:

  • スケーラビリティパーソナルサービスは、アプリケーションの他の部分に影響を与えることなく、個々のニーズに合わせて拡張することができます。
  • お点前サービスがどのように最適なテクノロジーを使って仕事をこなすか、簡単に説明してきました。これは、サービスの作成に使用されるプログラミング言語にまで及びます。
  • 開発の迅速化小規模で一元化されたサービスは、より速く開発することができ、その機能をよりよく理解することができ、システムをより簡単に保守することができます。
  • フォールトアイソレーションの改善モジュール化」設定により、障害時に他のサービスに影響を与えることなくサービスを分離することができます。

一方、マイクロサービスは、通信、データの一貫性、分散システムの管理に複雑さをもたらす可能性があります。そのため、アプリケーションの要件を慎重に検討する必要があります。

图片[3]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

マイクロサービスアーキテクチャの構成要素

マイクロサービス・アーキテクチャは複数のコンポーネントで構成することができます。それは、スケーラブルで保守性の高いアプリケーションを提供するために、「歯車」のように「車輪」全体で連携するようなものです。

そのため、スムーズな導入には欠かせない要素がいくつもあります:

  • APIゲートウェイ:これはクライアントからのリクエストのエントリーポイントです。これらのリクエストを適切なマイクロサービスに転送します。また、レート制限や認証などのタスクも処理します。
  • サービスの発見:ConsulやEurekaのようなツールは、この点で役立ちます。
  • コンテナ化ドッカーこのようなツールでは、マイクロサービスをパッケージ化し、コンテナとしてデプロイするのが一般的です。これは各サービスを分離するための方法です。
  • オーケストレーション:アプリケーションにマイクロサービスを追加すると、その管理はより複雑になります。Kubernetesこのようなツールは、サービス管理の自動化に役立ちます。
  • キャッシュ:レディスやMemcachedのようなキャッシュ・メカニズムは、通常パフォーマンスを向上させます。バックエンド・サービスやデータベースへの負担が大きくなっていることを考えると、これは非常に重要です。
  • メッセージングそしてもちろん、サービス同士はコミュニケーションを取る必要があります。これはラビットMQもしかしたらApache Kafkaこれらの "メッセージブローカー "はマイクロサービス間の疎結合を可能にします。これらの「メッセージブローカー」はマイクロサービス間の疎結合を可能にします。

しかし、ツールはセットアップの一側面に過ぎません。完全なアーキテクチャの中で各マイクロサービスをどのように設計するかなど、他にも考慮すべき点があります。

图片[4]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

マイクロサービスのデザインパターン

マイクロサービスのデザインパターンここで開発ワークフローは、アプリケーションの他の場所と同様に重要です。アプリケーションの潜在的な複雑さを考慮すると、どのパターンが最大の影響を持つかを検討することが重要です。3つの主要なものがあります:

  • サービスデータベースごとに各マイクロサービスは専用のデータベースを使用するため、データの分離と自律性に役立ちます。
  • APIの組み合わせ:マイクロサービスを組み合わせることで、より上位のサービスやAPIを作成することができます。この柔軟性と再利用性が最大のメリットです。
  • イベント駆動型アーキテクチャ:ここでは、サービスはイベントを介して通信します。これにより、緩やかな結合と非同期処理が容易になります。

マイクロサービスとWordPress REST API

WordPress REST API は、サイトとマイクロサービス間の統合を可能にする上で重要な役割を果たしています。それはふりだしWordPress の投稿、ページ、ユーザーを 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-01T10:30:00"
"modified_gmt": "2020-04-01T14:30:00", "modified_gmt": "2020-04-01T14:30:00"
"title": {
"rendered": "Hello World"
}, ...
...
[
  {
    "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-01T10:30:00"、
    "modified_gmt": "2020-04-01T14:30:00", "modified_gmt": "2020-04-01T14:30:00"、
    
    
    
    
    "title": {
      "rendered": "Hello World"
    }, ...
    ...
[ { "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-01T10:30:00"、 "modified_gmt": "2020-04-01T14:30:00", "modified_gmt": "2020-04-01T14:30:00"、 "title": { "rendered": "Hello World" }, ... ...

したがって、REST APIはアーキテクチャ内の他のすべてのサービスのハブとなります。つまり、現在のどのウェブサービスをマイクロサービスとして抽出するかを選択しなければなりません。これについては後の投稿で詳しく説明します。

重要なのは、Webアプリケーション内のさまざまな機能と責任を特定することです。これに基づいて、それらは分離され、集中化され、デプロイ可能なマイクロサービスに分割することができます。

Create BlockテーマとマイクロサービスによるWebアプリケーションの構築

マイクロサービスとCreate Block Themeプラグインを使ってWebアプリケーションを構築するプロセスについて学びます。最初のステップは開発環境のセットアップです。

1.開発環境の構築

すべてのアプリケーションは、それを作成するためのスペースから始まります。したがって、開発環境が必要です。開発スペースには、ローカルコンピュータとサーバーの2つの場所があります。開発環境のセットアップは現地の開発環境の方法はたくさんあります。

2.作成ブロックテーマプラグインの設定

開発環境がセットアップされたら、Create Block Themeプラグインを使ってブロックベースのカスタムテーマを作成することができます。以下も必要です:

  • WordPressのウェブサイト。
  • コーディング・エディター。
  • ブロックテーマプラグインを作成します。

プラグインは通常のWordPressの方法でインストールできます。WordPressの"外観" > "ブロックテーマの作成"リンク

图片[5]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

調べる"登場"タブで「テーマフォントの管理オプションを使用できます。ブロックトピックを作成することでも、このオプションにアクセスできます。WordPress 6.5 フォントライブラリ機能

图片[6]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

これらは、ドキュメントのサブジェクト識別フィールドになります。スタイル.css.また、非常にシンプルで、以下のような規定もあります。WordPressテーマカタログ名前、スクリーンショット、URL、いくつかのタグを選択します。

確認をクリックし、もう一度"外観" > "テーマ"画面では、新しいテーマが準備できていることがわかります:

图片[7]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

ブロックテーマ作成の設定とヒント

この記事の範囲外なので、新しいブロックテーマをあまりカスタマイズすることはしません。ただし、「ブロック作成」テーマを使うためのヒントはいくつかあります:

  • 変更は2つの場所で行うことができます。サイトワイドエディター」の「グローバルスタイル」オプションを使用するか、またはテーマ.jsonドキュメンテーション
  • ブロックトピックを作成すると、現在のアクティブなトピックに基づいて子トピックを生成できます。

3.選択したマイクロサービスの抽出

ブロックテーマの準備ができたら、次はマイクロサービスをより詳細に検討します。決定しなければならない重要なことは、どのサービスを「マイクロサービス」にするかということです。

あなたのニーズに合わせて決めてください。ただし、留意すべき点がいくつかあります:

  • ウェブサイトの特徴サイトが提供するユニークな機能を調べ、決済機能など、別のマイクロサービスに分割することを検討してください。
  • 独立したスケーラビリティ:独立したスケーリングに依存する既存のサービスは、マイクロサービスの良い候補になるでしょう。キャッシュはその一例です。
  • 技術の多様性:WordPressのPHPアーキテクチャから離れる必要がある場合、これもマイクロサービスの候補となります。これは、特定のeコマースプラットフォームやバックエンドコンポーネントによく当てはまります。
  • データの分離:カスタム・データ・ストレージを必要とするサービスは、マイクロサービスにすることができます。これらのサービスが他のサービスとデータを共有する必要がない場合も同様です。
图片[8]-如何使用微服务架构构建 WordPress Web 应用程序-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

マイクロサービスの開発とデプロイ

マイクロサービスを扱い、最終的にデプロイするには、他のツールに頼る必要があります。ここでは、主な検討事項と使用可能なツールを紹介します:

  • Dockerは通常、マイクロサービスをコンテナ化する方法です。Dockerはマイクロサービスとその依存関係をパッケージ化し、デプロイと拡張を容易にします。
  • 各マイクロサービスにはDockerfileも必要です。Dockerfileには必要な依存関係、設定、実行環境を指定する必要があります。
  • Kubernetesを使用したコンテナのオーケストレーションと管理。
  • 継続的インテグレーションとデプロイメント(CI/CD)パイプラインは、ビルド、テスト、デプロイメントを自動化する方法です。GitLabやTravis CIなどのツールは、CI/CDプロセスを合理化するのに役立ちます。
  • サーバーレス関数は本格的なサーバーを必要としないため、マイクロサービスに最適で、AWS Lambda、Google Cloud Functions、Azure Functionsなどのプラットフォームは、コードを実行するためにオンプレミスやマネージドサーバーを必要としません。
  • APIゲートウェイは、マイクロサービスのシングル・ポイント・オブ・エントリーを提供します。コングもしかしたらAmazon API Gatewayさらに、認証、レート制限、リクエストルーティングなどのタスクを処理することもできます。

この時点で、WordPressのウェブサイトとマイクロサービスを別々に用意します。最後のステップは、これらを統合することです。

4.マイクロサービスとWordPressの連携

マイクロサービスを開発してデプロイしたら、WordPress と統合する必要があります。そのためには、WordPress がマイクロサービスに公開するエンドポイントから API 呼び出しを行う必要があります。REST API の完全な理解が必要です。

代表的な方法使用中wp_remote_get()もしかしたらwp_remote_post()HTTP リクエストを送信し、レスポンスを処理します。これにより、HTTPリクエストを送信し、レスポンスを処理することができます。以下は、これらがどのように組み合わされているかを示すサンプルコードです:

// API エンドポイント URL
$api_url = 'https://api.example.com/endpoint'
// APIリクエストパラメータ
$params = array(
);
// wp_remote_getを使用してAPIリクエストを行います。
$response = wp_remote_get(add_query_arg($params, $api_url))
// リクエストが成功したかどうかチェックします
if (is_wp_error($response)) { // エラーを処理します。
// エラーを処理します
$error_message = $response->get_error_message()
// エラーメッセージをログに記録または表示
} else { // API レスポンスを処理します。
// API レスポンスを処理します
$response_body = wp_remote_retrieve_body($response); } else { // APIレスポンスを処理します。
$data = json_decode($response_body, true)
// 取得したデータを必要に応じて使用
// ...
}
// API エンドポイント URL

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

// APIリクエストパラメータ

$params = array(
    
    
);


// wp_remote_getを使用してAPIリクエストを行います。
$response = wp_remote_get(add_query_arg($params, $api_url));

// リクエストが成功したかどうかチェックします
if (is_wp_error($response)) { // エラーを処理します。
    // エラーを処理します
    $error_message = $response->get_error_message();

    // エラーメッセージをログに記録または表示
} else { // API レスポンスを処理します。
    // API レスポンスを処理します
    $response_body = wp_remote_retrieve_body($response); } else { // APIレスポンスを処理します。

    $data = json_decode($response_body, true);

    // 取得したデータを必要に応じて使用

    // ...
}
// API エンドポイント URL $api_url = 'https://api.example.com/endpoint'; // APIリクエストパラメータ $params = array( ); // wp_remote_getを使用してAPIリクエストを行います。 $response = wp_remote_get(add_query_arg($params, $api_url)); // リクエストが成功したかどうかチェックします if (is_wp_error($response)) { // エラーを処理します。 // エラーを処理します $error_message = $response->get_error_message(); // エラーメッセージをログに記録または表示 } else { // API レスポンスを処理します。 // API レスポンスを処理します $response_body = wp_remote_retrieve_body($response); } else { // APIレスポンスを処理します。 $data = json_decode($response_body, true); // 取得したデータを必要に応じて使用 // ... }

マイクロサービスは、メインスレッドのブロックを避けるために、非同期データフェッチから恩恵を受けることがよくあります。 WordPressは、これを行うために2つの要素を組み合わせることができます。それはAPIフェッチパッケージ非同期持ち越すWordPress 6.3で導入サポート

import apiFetch from '@wordpress/api-fetch'
// マイクロサービスAPIのエンドポイントURL
const microserviceUrl = 'https://api.example.com/microservice'
...
// マイクロサービスへのAPIリクエストを行います
apiFetch({
path: microserviceUrl, method: 'GET', {
メソッド: 'GET', データ: params, {
data: params, })
})
.then((response) => {
// レスポンスを処理
console.log(response)
// マイクロサービスから取得したデータを使用します
// ...
})
...
import apiFetch from '@wordpress/api-fetch';

// マイクロサービスAPIのエンドポイントURL
const microserviceUrl = 'https://api.example.com/microservice';
...


// マイクロサービスへのAPIリクエストを行います
apiFetch({
  path: microserviceUrl, method: 'GET', {
  メソッド: 'GET', データ: params, {
  data: params, })
})

  .then((response) => {
    // レスポンスを処理
    console.log(response);

    // マイクロサービスから取得したデータを使用します

    // ...
  })
...
import apiFetch from '@wordpress/api-fetch'; // マイクロサービスAPIのエンドポイントURL const microserviceUrl = 'https://api.example.com/microservice'; ... // マイクロサービスへのAPIリクエストを行います apiFetch({ path: microserviceUrl, method: 'GET', { メソッド: 'GET', データ: params, { data: params, }) }) .then((response) => { // レスポンスを処理 console.log(response); // マイクロサービスから取得したデータを使用します // ... }) ...

また、AJAXを使用して、ユーザーインターフェース(UI)を動的に更新することも検討してください。適切な認証とセキュリティ対策も重要です。 WordPress REST API には、Cookie、JSON Web Tokens (JWT)、または以下のようなセッション認証の方法があります。アプリケーションパスワード.外部ソリューションへの依存を考えると、マイクロサービスとサイトを安全に保つことは非常に重要です。

カスタム Block テーマを使用していることから、このプロセスは 3 つの部分から成ります:ブロック登録そしてコンテンツのレンダリングとデータ処理。ジャバスクリプトは選択した言語になります。レジスタブロックタイプ関数は登録とレンダリング::

// ブ ロ ッ ク を構築 し て、 ブ ロ ッ ク エデ ィ タ 内でア ク セ スで き る よ う にす る JavaScript 関数。
( function( blocks, element ) {
var el = element.createElement
blocks.registerBlockType( 'my-micro/stripe-api', {
title: 'Stripeペイメントゲートウェイ', icon: 'dashicons-capi', {
edit: function() {
return el(
'div'.
{}, '' // ブロックエディタ内に表示するマイクロサービスのビジュアル要素を作成します。
'' // ブロックエディタ内に表示するマイクロサービスのビジュアル要素を作成します。
); }, {}
); }, ...
...
// ブ ロ ッ ク を構築 し て、 ブ ロ ッ ク エデ ィ タ 内でア ク セ スで き る よ う にす る JavaScript 関数。
( function( blocks, element ) {
    var el = element.createElement;

    blocks.registerBlockType( 'my-micro/stripe-api', {
        title: 'Stripeペイメントゲートウェイ', icon: 'dashicons-capi', {
        
        

        edit: function() {
            return el(
                'div'.
                {}, '' // ブロックエディタ内に表示するマイクロサービスのビジュアル要素を作成します。
                '' // ブロックエディタ内に表示するマイクロサービスのビジュアル要素を作成します。
            ); }, {}
        ); }, ...
...
// ブ ロ ッ ク を構築 し て、 ブ ロ ッ ク エデ ィ タ 内でア ク セ スで き る よ う にす る JavaScript 関数。 ( function( blocks, element ) { var el = element.createElement; blocks.registerBlockType( 'my-micro/stripe-api', { title: 'Stripeペイメントゲートウェイ', icon: 'dashicons-capi', { edit: function() { return el( 'div'. {}, '' // ブロックエディタ内に表示するマイクロサービスのビジュアル要素を作成します。 '' // ブロックエディタ内に表示するマイクロサービスのビジュアル要素を作成します。 ); }, {} ); }, ... ...

概要

WordPressはモノリシックですが、だからといってマイクロサービスの採用を止めることはできません。そうすることで、スケーラビリティ、柔軟性、開発スピードの向上など、多くのメリットがあります。ブロックテーマ・プラグインを作成することで、残りのプロジェクトのためにクリーンで安全なコードベースを作成することができます。マイクロサービスはウェブサイトに複雑さをもたらします。カスタムブロックテーマを使用することは、これらのサービスを必要に応じて最適な方法で実装できることを意味します。


お問い合わせ
記事が読めない?無料でお答えします!個人サイト、中小企業サイトのための無料ヘルプ!
電話:020-2206-9892
QQ咨询:1025174874
Eメール:info@361sale.com
勤務時間: 月~金、9:30~18:30、祝日休み
© 複製に関する声明
この記事はハリーが執筆しました。
終わり
好きなら応援してください。
クドス0 分かち合う
おすすめ
解説 ソファ購入

コメントを投稿するにはログインしてください

    コメントなし