プラクティスに入る前にCloudNativeの基礎的な知識のおさらいです。
CloudNative(クラウドネイティブ)とは、クラウドの特性を最大限に活用し、柔軟でスケーラブルかつ高可用性なシステムを構築・運用するためのアプローチや設計思想を指します。
このアプローチによりエンジニアの労力を軽減し、変更を頻繁かつ予測可能に出来ます。
従来の密結合なシステムとは異なり、疎結合な設計を採用することで、柔軟性を高めています。
参考:CNCF Cloud Native Definition
CloudNativeはある特定の技術要素を指すのではなく、以下のような複数の要素が組み合わさって形成されます。
本プラクティスでも以下の要素を学習していきます。
-
IaC(Infrastructure as Code)
インフラストラクチャをコードとして管理し、自動化・再現性・バージョン管理を実現します。TerraformやCloudFormationなどのツールが代表例です。 -
コンテナ
アプリケーションやその依存関係を一つのパッケージとしてまとめ、どの環境でも一貫して動作させる技術です。Dockerなどが代表例です。 -
CI/CD(継続的インテグレーション/継続的デリバリー)
コードの変更を自動的にビルド・テスト・デプロイする仕組みです。これにより、品質向上とリリースサイクルの短縮が可能になります。 -
オーケストレーター
コンテナ化されたアプリケーションやサービス群を自動的に管理・運用する仕組みです。Kubernetesが代表的なオーケストレーターです。 -
マイクロサービスアーキテクチャ
アプリケーションを小さな独立したサービス群として分割し、それぞれが独立して開発・デプロイ・スケールできる設計手法です。これにより、柔軟性や障害耐性が向上します。
-
アジャイル開発
変化に柔軟に対応しながら、短いサイクルで継続的に価値を提供する開発手法です。チーム間のコミュニケーションやフィードバックを重視します。 -
DevOps
開発(Development)と運用(Operations)が連携し、システムの品質向上やリリースの迅速化を目指す文化・プラクティスです。自動化や継続的な改善が重要な要素となります。
- 以下の単語を使ってCloudNativeの特徴を説明する文章を作成してください。
- クラウド
- 柔軟
- スケーラブル
- 高可用性
- 迅速
- 予測可能
- 疎結合
(作成した文章をChatGPT等で確認してみましょう。)
答え例
クラウドの特性を活かし、柔軟・スケーラブル・高可用性なシステムを構築・運用するアプローチです。 変更を迅速かつ予測可能にし疎結合な設計を採用することで、柔軟性を高めています。
- 次のうち、CloudNativeの恩恵を最も受けないのはだれですか?
a) プロジェクトマネージャー
b) SRE
c) インフラエンジニア
d) 営業担当
答え
d) 営業担当
- プロジェクトマネージャー(a):プロジェクトの効率化やデリバリーの迅速化を享受できます。
- SRE(b):運用自動化や可観測性向上といった恩恵があります。
- インフラエンジニア(c):インフラ構築・運用の自動化、柔軟なスケーリングなど多くの利点があります。