サーバレス・クラウドネイティブ
サーバレスやクラウドネイティブに関する技術の勉強・習得はしているか?という質問に対してきちんとした回答が持てていなかった。。。ので改めて調べることとする。
クラウドネイティブ
クラウドネイティブとは何か?ですが、Pivotalさんの表現を借りると
「クラウドネイティブとは、クラウドコンピューティングモデルの利点をフル活用してアプリケーションを構築し、実行するアプローチです。」とのこと。
クラウドファーストという言葉は以前からありましたが、これは「基盤環境をクラウドで対応することを優先して検討する」ということであくまでオンプレとクラウドどっちを優先するか?です。
一方でクラウドネイティブは「クラウドの利点(サービス)をフル活用していく」という点です。単純な基盤に留まらずクラウドが提供する各種サービスを活用したり、クラウドをであること・利点を最大限活用することを前提とする概念です。
例えば、AWSが提供する製品に絞っても以下の通り24種類あります。
さらに言うと分析ツールだけでも12種類あり、合計でおよそ数百種類のサービスが提供されていることになります。以下のサービスを組みあわせて提供することもクラウドネイティブの一種だと思います。
サーバレス
サーバレスとは、サーバを使わないという意味ではなくサーバ自体は存在していますがサーバを意識(管理)する必要なく利用できることを指します。
例えば、サーバの構築や保守はサーバレスの提供会社(AWS)などが対応してくれることでプログラムなどを提供する側は自身のサービスに集中できるということです。
これらについては、一般的な概念としてFaas(Funcitonal as a Service)などが挙げられます。例えばAWS LamdaやマイクロソフトのAzure Functions, グーグルのGoogle Cloud Functions, IBMのIBM Cloud Functionsです。
例えば、AWS Lamdaの利点としては
- サーバ管理が不要
- 継続的スケーリング(アプリの実行に応じて自動でスケール)
- ミリ秒単位で課金(コードが実行される100msごとに課金、使わないときは要求されない)
- 安定したパフォーマンス
などなどです。
DAIKINさんやYAMAHAなどでもデータ収集・分析にサーバレスアーキテクチャが利用されており年々利用数は増加しています。
CNCF
Cloud Native Computing Foundationという団体があります。
これはクラウドネイティブを推し進めるオープンソースの団体でこの中に参加するプロジェクトを「Sandbox Project(エントリープロジェクト)」、「Incubating Project(成長中のプロジェクト)」と「Graduated Project(卒業プロジェクト)」に分けられます。
これらはプロジェクトの成熟度段階を示しており、教育的指導が不要となりCNCFの技術統括委員会(TOC)に認定され卒業扱いとなります。
ちなみに、2020年3月時点でのプロジェクトは以下の通りです。
・Sandbox扱いとなっているプロジェクトは20種類
・Incubating扱いとなっているプロジェクトは15種類
・Graduated扱いとなっているプロジェクトは9種類
これらのうち卒業プロジェクトについては恐らく今後もクラウドネイティブとして求められる技術だと思うので抑えておく必要あると思います。
それぞれの製品についてはまた調べてブログに記載しようと思います。
参考
サーバーレス アーキテクチャ
【まとめ】サーバレスがここ数カ月で一気に遂げた進化とは