<目次>
(1) クラウドネイティブとは?(コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ等)
(1-1) コンテナ
(1-2) サービスメッシュ
(1-3) マイクロサービス
(1-4) イミュータブルインフラストラクチャ
(1) クラウドネイティブとは?(コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ等)
クラウド技術を用いて、より「短時間」で、より「スケーラビリティ」があり「疎結合」で「可観測性の高い」システム構築をするための手法を「クラウドネイティブ」と呼びます。いうなれば「変化に強い」システムを通るためのアプローチとも言えます。
(1-1) コンテナ
「コンテナ」はアプリケーションが載る基盤に関わらず、「環境間の移行を素早く」かつ「安定的に稼働」させるためのソリューションです。VMと似ているように思えますが、大きな違いとしてVMはハードウェアレベルで仮想化しているのに対して、コンテナはOSレベルでの仮想化をしています。OS上で複数のコンテナが稼働するため、OS全体の起動と比較して速く、かつメモリの消費も少ないという利点があります。
(1-2) サービスメッシュ
「サービスメッシュ」はマイクロサービスにおける各サービス同士の通信を円滑にしつつ、信頼性やセキュリティや可観測性を向上させる目的で使われる「ソフトウェアアーキテクチャのパターンです。各マイクロサービスに対して「サイドカーProxy」を持ち、サービス同士の通信はこのサイドカーProxyを通じて行う事で、高負荷のネットワーク間のサービス間の通信を処理する事が可能です。「サービスメッシュ」の機能を提供する代表的な製品では「Istio」などがあります。
(1-3) マイクロサービス
「マイクロサービス」はシステムのアーキテクチャの一種で、アプリケーションを構成する際に、以下のような条件を満たすサービスの集合体として形成する事です。
(1-4) イミュータブルインフラストラクチャ
「イミュータブルインフラストラクチャ」はシステムインフラの新しい枠組みで、文字通り一度構築したら「immutable」(不変)なシステムを指します(正確には都度、新しいものに置き換わる)。
逆に、今までのシステム開発では「mutable」(可変)なサーバ構成という事になります。サーバのOSやパッケージはSSHやリモートデスクトップでサーバにログインして、パッチ適用等で定期的にアップデートされ、中のconfigファイルやアプリケーションは随時改修が入り、新しいものに置き換わっていきます。そうした点から「可変」なサーバ構成と呼んでいます。
なので「イミュータブルインフラストラクチャ」では、一度デプロイしたら変更が入る事はなく、もし更新が必要な場合は、共通のテンプレートから必要な設定を加えた新しいものを作り、全体を置き換えます(リプレース)。