マイクロサービス実現に必要なAWSのサービスとは?
マイクロサービスとは、2014年にジェームス・ルイス氏とマーチン・ファウラー氏が提唱したアプリケーションの概念です。以来、マイクロサービスはシステム開発におけるトレンドとなりました。
また、近年はAWSでのマイクロサービスの開発も多くなっています。この記事では、マイクロサービスの概念やAWSでマイクロサービスを実現するために必要なサービスについて紹介します。
マイクロサービス(マイクロサービスアーキテクチャ)とは何か?
マイクロサービス(マイクロサービスアーキテクチャ)とは、1つのアプリケーションをビジネスとして必要な機能に分割した考え方です。1つ1つの機能は独立しており、それらを組み合わせて1つのシステムを構成します。
マイクロサービスの対比として使われるのが「モノリス(モノリシスアーキテクチャ)」です。モノリスとは「大きな1つの単位」という意味で、ビジネスロジックをプログラム単位で分割します。そしてビジネスロジックで全ての処理を行います。
また、モノリスは内部的には機能単位でプログラムが分割されていても、あくまで同一マシン内で動作するため分割できません。また、モノリスの場合はプログラム間の関連が密結合のため同期を取ってリリースする必要があります。
一方、マイクロサービスは機能ごとに動作環境を割り当てることができます。また、マイクロサービスはプログラム間が疎結合のため機能単価でリリースが可能です。更に、マイクロサービスは一つ一つのプログラムが小さいため、ソースコードの見通しが良いメリットがあります。
このようにマイクロサービスは一つ一つの単位が小さいため小さなリソースで実行できます。また、モノリスに比べて可溶性が高く、メンテナンス性にも優れています。
マイクロサービスが注目を集めている理由
今、企業のシステム開発では「ビジネスニーズに素早く対応する開発プロセスにすること」が求められています。なぜなら、ITの進展に伴いビジネス環境が激しく変化しており、ビジネスニーズに素早く対応できないと企業間競争に負けてしまうからです。
このような要求に応えた開発プロセスが「アジャイル開発」です。アジャイル開発は「開発~リリース~改善のサイクルを短い期間で繰り返しながら小単位でリリースすることでビジネスニーズに素早く応える開発手法」です。
アジャイル開発は2001年に登場した開発手法です。当時はモノリシックなアーキテクチャによるシステム開発が行われていました。しかし、モノリシックなアーキテクチャでは機能が増えるに従ってプログラムコードが大きくなり、複雑化しています。
また「プログラムコードが大きいためテストに時間がかかる」、「複雑化しているためバグが発生しやすい」といった問題が発生するなど、システム開発の高速化の足かせとなっています。
先にも述べたようにマイクロサービスの最大のメリットは独立した小さな機能単位で分割して開発、デプロイできる点です。このため、マイクロサービスはアジャイル開発と非常に相性が良く、開発やリリースのスピードの向上が期待できることで注目が集まっています。
AWSのマイクロサービスとは?
とはいえ、マイクロサービスでアプリケーションを構築するのは容易ではありません。
なぜなら、サービス分割に伴うトランザクションの分割など、マイクロサービスでアプリケーションを構築するにはさまざまな点に考慮が必要だからです。主な考慮点は以下の通りです。
- サービス実行フローの制御
- トランザクション管理
- ステートフルデータを共有するためのデータストアの利用
- サービス間の通信方式
- サービス間の認証方式
- ロギング/モニタリング方式
- サービスの分割
また、これらを考慮しながら一から設計・開発を進めるのはアプリケーションが複雑になり、時間とコストがかかるため現実的ではありません。
このような考慮点について、AWSではマイクロサービスアプリケーションを構築するための以下のサービスが提供されています。
- Elastic Load Balancing
- アプリケーションへのトラフィックを仮想サーバーなどの複数のターゲットに分散し、安定稼働するためのサービスです。
- Amazon ECS
- Dockerコンテナを実行、停止、管理できるためのコンテナオーケストレーションサービスです。
- Amazon API Gateway
- REST APIの定義やHTTPリクエスト/レスポンスなど、簡単にAPIの作成、公開、保守、モニタリングなどを行うことができます。
- AWS Lambda
- サーバーレスでプログラムを実行できる環境を提供します。
このようにマイクロサービスアプリケーションの実現に必要な複雑な制御をAWSサービスで実現されるため、開発者はビジネスロジックの構築に集中することができます。
まとめ
この記事では、AWSにおけるマイクロサービスについて紹介しました。
「マイクロサービス(マイクロサービスアーキテクチャ)」とは1つのアプリケーションをビジネスとして必要な機能に分割した考え方です。今、企業のシステム開発では「ビジネスニーズに素早く対応する開発プロセスにすること」が求められています。
このような要求に応えた開発プロセスが「アジャイル開発」です。このアジャイル開発に相性が良いのがマイクロサービスです。このため、マイクロサービスが注目を集めています。
とはいえ、マイクロサービスを実現するにはさまざまな考慮が必要であり、設計・開発を進めるにはアプリケーションが複雑になります。AWSではマイクロサービス実現に必要なサービスが提供されているため、開発者はビジネスロジックの開発に集中することができるメリットがあります。
「AWSでマイクロサービスを実現したいと考えているが、どのように実現すればよいか分からない」など、AWSでのマイクロサービス実現に関するご相談があれば、是非弊社にお問い合わせください。