テクノロジ系

クラウドネイティブ — マイクロサービスとサーバーレス

導入

クラウドが当たり前になった現代では、システムの作り方も大きく変わってきました。「クラウドネイティブ」というアプローチは、クラウドの特性を最大限に活かした設計思想として注目されています。

なぜ重要か

従来のシステムはサーバーを自社で購入・管理する「オンプレミス型」が主流でした。しかしビジネスのスピードが上がる中で、「新機能を素早くリリースしたい」「アクセスが急増しても止まらないようにしたい」「コストを使った分だけ払いたい」という要求が高まり、クラウドネイティブな設計が普及してきました。

ITパスポートでは、クラウドネイティブを構成する要素技術(マイクロサービス・サーバーレス・コンテナ)が繰り返し出題されています。これらは単独の用語問題だけでなく、「このシステム構成の特徴として適切なものはどれか」という応用問題でも登場します。DX(デジタルトランスフォーメーション)の推進においてもクラウドネイティブへの移行は重要なテーマであり、現代のITエンジニアや情報システム担当者にとって基礎知識として欠かせない概念です。

くわしく知ろう

クラウドネイティブとは、クラウド環境の柔軟性や拡張性を前提として設計・構築されたアプリケーションやシステムのアプローチを指します。従来の「1つの大きなアプリケーション(モノリス)」から脱却し、複数の小さな機能単位に分割する考え方が中心にあります。

マイクロサービスアーキテクチャは、アプリケーションを「ユーザー認証」「決済処理」「通知送信」のような独立した小さなサービス(マイクロサービス)に分割する設計手法を指します。各サービスはAPIで連携し、個別にデプロイ・スケールアップできるため、一部機能の障害が全体に波及しにくくなっています。

サーバーレス(FaaS:Function as a Service)は、コードを関数単位で実行し、実行時間に応じてのみ課金される仕組みを指します。サーバーの管理が不要で、必要なときだけ自動的に起動するため、小さな処理を頻繁に行うケースに向いています。AWS LambdaやGoogle Cloud Functionsが代表的なサービスです。

コンテナ(Docker等)は、アプリケーションと動作に必要な環境をひとまとめにしたものを指します。どの環境でも同じように動作するため「開発環境では動いたのに本番では動かない」という問題を減らすことができます。コンテナオーケストレーション(Kubernetesなど)は、大量のコンテナを自動で管理・配置・スケールする仕組みとして知られています。

CI/CD(継続的インテグレーション/継続的デリバリー)は、コードの変更を自動的にテスト・デプロイするパイプラインです。クラウドネイティブの開発では、この仕組みによって小さな変更を頻繁かつ安全にリリースするスタイルが定着しています。

具体例で理解する

たとえば、動画配信サービスでは「認証」「再生」「課金」がそれぞれ別のマイクロサービスとして動いており、課金サービスを更新しても再生機能は止まらない設計になっています。一方、サーバーレスは画像アップロード時のサムネイル生成など、イベント駆動の処理に活用されています。コンテナを使えば開発者のPCとクラウドサーバーで全く同じ環境を再現できるため、チーム開発での環境差異によるトラブルを大幅に減らすことができます。

試験での出題パターン

【パターン1:マイクロサービスの特徴を問う問題】

「アプリケーションを機能単位の小さなサービスに分割し、APIで連携する」という説明が正解になります。モノリシックアーキテクチャ(1つの大きなアプリ)との対比で問われることが多く、「一部の機能を更新しても他の機能に影響しない」という特徴がキーポイントです。

【パターン2:サーバーレスの課金方式を問う問題】

「サーバーを常時起動せず、処理が実行された時間・回数に応じてのみ課金される」という点が正解の根拠になります。「サーバーが存在しない」という意味ではなく「利用者がサーバーを管理しなくてよい」という点も試験で確認されることがあります。

【パターン3:コンテナとコンテナオーケストレーションの区別】

「コンテナ=アプリと実行環境をまとめたもの(Docker)」「コンテナオーケストレーション=多数のコンテナを自動管理する仕組み(Kubernetes)」というペアで覚えておくことが大切です。どちらかの説明を問う問題で混同しないよう注意してください。

よくある間違い・紛らわしいポイント

【サーバーレス=サーバーが存在しないという誤解】

「サーバーレス」という名称から「サーバーが一切ない」と思いがちですが、実際にはクラウドプロバイダが管理するサーバー上でコードが動いています。利用者がサーバーの準備・管理を意識しなくてよいという意味でのサーバーレスです。

【マイクロサービスとSOA(サービス指向アーキテクチャ)の混同】

SOAも機能をサービスとして分割する考え方ですが、マイクロサービスはより小さく独立した単位で分割し、それぞれが独自のデータベースを持ちAPIで通信する点が特徴です。試験ではマイクロサービスの説明問題でSOAとの混同が生まれやすいですが、「独立したデータ管理」と「軽量なAPI通信」がマイクロサービスの特徴として区別の基準になります。

【コンテナと仮想マシン(VM)の違い】

仮想マシンはOSごと仮想化するため起動が遅く重い一方、コンテナはOSのカーネルを共有してアプリの実行環境のみをまとめるため軽量で起動が速い点が特徴です。どちらも「隔離された環境」を提供しますが、その仕組みと用途が異なります。

まとめ・試験ポイント

  • クラウドネイティブ=クラウドの特性を前提とした設計・開発アプローチ
  • マイクロサービス=機能を小さなサービスに分割し、APIで連携する設計
  • サーバーレス(FaaS)=関数単位で実行し、実行時のみ課金される仕組み
  • コンテナ=アプリと実行環境をひとまとめにしたもの(Dockerが代表例)
  • Kubernetes=多数のコンテナを自動管理するオーケストレーションツール
  • 試験では「マイクロサービスの特徴」「サーバーレスの課金方式」が問われやすい

学習した内容を試験形式で確認しよう。ITパスポート入門試験100問に挑戦できます。

入門試験100問に挑戦する