Inquiry icon START A CONVERSATION

Share your requirements and we'll get back to you with how we can help.

Please accept the terms to proceed.

Thank you for submitting your request.
We will get back to you shortly.

マイクロサービス アーキテクチャによるアプリケーション設計

マイクロサービスアーキテクチャ(MSA)は、アジリティ(Agility)の重要な要因として人気を集めています。NetflixやAmazonなどのおよび多くの他の大規模Webアプリケーションは、継続的なイノベーションのため、モノリシックな単位からマイクロサービスに移行しました。

現在、中小企業もこのモジュール型サービスを採用し、開発時間を大幅に削減し、より迅速に市場に参入しています。

急速なデジタル化と分散クラウドコンピューティングがマイクロサービスアーキテクチャを支持している一方で、これがすべてのケースでデフォルトのアプローチである必要はありません。重要な点は、やみくもに流行に追随するのではなく、必要性を見極めることです。当社は、しっかりと見極めを行い適切なアーキテクチャによる設計・構築を実現致します。

マイクロサービスアーキテクチャ

マイクロサービス アーキテクチャとは、さまざまなコンポーネントを作成し、分離した個別のサービスとして維持する、ソフトウェアの構築スタイルです。マイクロサービスはそれぞれ、1つのビジネス機能のみを担う小規模なもので、システムの残りの部分に影響を及ぼすことなく個別に導入することを意図しています。

従来、アプリケーションは、機能をすべて組み込んだ結合ユニットとして設計されていました。こういったソフトウェアは、通常、単一の装置にデプロイされ、垂直方向にしか拡張できません。これが実用的でないと認識されると、モノリシックな構造内の論理的なユニットが、ユーザーインターフェース、サーバーロジックまたはWebサービス、およびストレージのためのデータベースなど、物理的な層に分割されました(tiered architecture)

最終的に、Webサービスレイヤーがさまざまなサービスに垂直方法に分けられるサービス指向型アーキテクチャ(SOA)が、容易に拡張するための実行可能な設計となりました。マイクロサービスは、SOAの斬新的進化と捉えることができます。

以下に示すのは、マイクロサービスアーキテクチャによるリテールアプリケーションの例です。各サービスは、単一のビジネス機能のみを担います。その一方で、マイクロサービスは互いにコミュニケーションを取って必要な情報をやり取りします。

Example of microservice architecture in eCommerce application

eコマースアプリケーションにおけるマイクロサービスアーキテクチャの例

なぜマイクロサービスが必要か

規模の大小を問わず、企業は、顧客に関心を持ち続けてもらうため、顧客の高まる需要と期待に応え続けなければなりません。従来のソフトウェアの開発とデプロイの方法が頻繁に追いつけないことがある一方で、マイクロサービスのアプローチは、迅速に競争力を維持できるようにする特定のサービスを提供しています。

技術活用における柔軟性

MSAは、異なる言語で書かれた分離したサービスを協調的に共存させることができます。企業は、各事業の能力にふさわしい技術スタックを自由に選択が可能

自律的チーム

グローバルに分散するチームは、ソリューションが独立した小規模なフラグメントに分けられている場合、より生産的な作業が可能

継続的デリバリー

それぞれのチームが別々のコンポーネントの作業を行えば、開発を加速でき、企業にビジネスの機敏性が加わることで、新たなコンポーネントの追加、デプロイ、拡張も個別に実装可能

メンテナンスが容易

不具合を隔離し、システム全体に影響を及ぼすことなくマイクロサービスを変更が可能となり、複雑なモノリシックシステムに比べ、アプリケーションのメンテナンスが容易

モノリシックシステムのマイクロサービスへの置換

当社のあるお客様が使用されていたアプリケーションは、製品設計や開発に使われるラピッドプロトタイピングツールでした。このアプリケーションは、コンポーネントを個別に開発・拡張できないクライアントやサーバーと強連結したモノリシックシステムでした。当社は、技術スタックを評価し、欠陥を把握した上で新しいソリューションを提案するように依頼を受けました。

当社が行った技術的評価から、業務遂行の大きな障害となっているだけでなく、ソースコードのメンテナンス、コード品質、アプリケーションの全体的な拡張性に関する深刻な懸念が明らかになりました。当社は、マイクロサービスモデルのレイヤーによるN層アプリケーションとして、システムを再設計するように提案しました。これなら、モジュールがそれぞれ独立し、他のモジュールとの結び付きは弱連結です。サービスモデルごとにデータベースを作成する代わりに、ハイブリッドマイクロサービスアーキテクチャで単一の共有データベースを使用することにしました。

また、新たなアプリケーションライフサイクルの完全な自動化も提案しました。マイクロサービスの設計とデプロイは、Jenkinsによって自動化するようにしました。IaC(Infrastructure as Code)を導入すれば、インフラのデプロイ、監視と管理も自動化できます。アプリケーションをDocker化することで資源利用の削減と迅速な開発が可能になり、さらに、オーケストレーションツールによってコンテナのライフサイクル管理を簡素化できます。最後に、ELK Stackによる、継続的なインフラ監視とログ管理を提案しました。

{'en-in': 'https://www.qburst.com/en-in/', 'en-jp': 'https://www.qburst.com/en-jp/', 'ja-jp': 'https://www.qburst.com/ja-jp/', 'en-au': 'https://www.qburst.com/en-au/', 'en-uk': 'https://www.qburst.com/en-uk/', 'en-ca': 'https://www.qburst.com/en-ca/', 'en-sg': 'https://www.qburst.com/en-sg/', 'en-ae': 'https://www.qburst.com/en-ae/', 'en-us': 'https://www.qburst.com/en-us/', 'en-za': 'https://www.qburst.com/en-za/', 'en-de': 'https://www.qburst.com/en-de/', 'de-de': 'https://www.qburst.com/de-de/', 'x-default': 'https://www.qburst.com/'}