1月から順調に体重が増加傾向にある堀です。
最近Azureの学習をずっと続けていましたがAWSをほとんど知らないのはまずいと思い調べてみることにしました。今回は、AWSとAzureの比較に触れた後、両者のサーバレスコンピューティングについて書いていきたいと思います。
AWSとAzureとは
2つのサービスでクラウド市場の約半数をシェアを誇る巨大プラットフォーマーです。GoogleのGCPと合わせて世界3大クラウドと言われたりもします。
AWS(Amazon Web Services)は、Amazon.comが提供するパブリッククラウドのプラットフォームです。サービス開始は2006年7月で、大手クラウドシステムと比較しても歴史が長く、クラウドサービス市場のトップシェア(32~34%)を誇ります。
Azureは、Microsoftが提供するパブリッククラウドのプラットフォームです。サービス開始はAWSからやや遅れて2010年1月(当時はWindows Azure)です。クラウド市場でAWSを猛追しており、クラウドサービス市場シェアは20%に達しており、3年後には僅差になるとも言われています。
サービス比較
主なサービス比較表を載せておきます。
サーバレスコンピューティングが気になる
サーバーレスコンピューティングを簡単にいうと、サーバーを意識することなく、プログラムを実行できるサービスのことをいいます。FaaS(Function as a Service)なんて言われたりもします。例えば、Webアプリを稼働させたいとなった場合は、VM(Azureの場合)を立ち上げ、Webサーバーやアプリケーションサーバーを立ち上げる必要があります。ですがサーバーレスコンピューティングの場合は「プログラムだけを開発すれば実行環境は用意してくれる」、だから「サーバレス」という訳です。さらに基本的にはアプリケーションの実行時のみ、コンピューティングリソースとアプリケーションの実行費用がかかる仕組みになっているため、アイドル時間にはコストがかかりません。
もうちょっと細かく違いを見てみる
動作タイプ
「Lambda」はサーバレスな環境でのみ動かすことができます。イベント発生からタイムアウトまでは最大で15分間です。
一方「Azure Functions」は、サーバレスの環境(従量課金プラン、Premiumプラン)とApp Service(PaaS)の環境の2種類で動かすことができます。また、サーバレス環境のPremiumプランを選択するとイベント発生からタイムアウトまでが無制限になります。。App Serviceプランの場合、あらかじめOSやWebサーバが準備されているため、Webアプリケーションをデプロイするだけの状態となっています。このApp Serviceインスタンス内で、Azure Functionsを動作させることができます。App Serviceを利用していて、とりあえずちょっと試してみたい場合は追加料金がかからないのでおすすめです。(リクエストがあってもすでにApp Serviceで料金を支払っている)
対応言語
ランタイムは以下の通りです。詳しいサポートは公式リファレンスを確認してください。
AWS Lambda | Azure Functions |
Node.js, Python, Ruby, Java, Go, .NET等 <公式>>https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.html | C#, JavaScript, F#, Java, PowerShell, Python, TypeScript等 <公式> https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-versions |
まとめ
利用目的をはっきりさせてこれがやりたいのであればこのクラウドサービスを使う必要があると考えていたのですが調べてみると、どちらのサービスでも大概のことは全てできてしまう気がします。雑な言い方をするとどっち使っても好みのほうでいい(笑)。触ってみるとAWSのほうも少し興味が出てきたのでまた少し勉強してみようかなと思いました。終わりでーす!