AWSにおけるサーバーレスのお話

f:id:pinkie79:20211026161951p:plain

皆さん、こんにちは。クラウドシフト課の本間です。
私は半年間スキルチェンジPJ(※1)に参画し、Amazon Web Services(下記、AWS)について学んできました。


※1:スキルチェンジPJについての取り組み

blog.css-net.co.jp

 

皆さんはAmazonという単語を聞いた時にどのようなことを思い浮かべるでしょうか?
ITにあまり関わってこなかった人は通販サービスや動画配信サービスなどを最初に考えると思いますが、今回はAWSというクラウドサービスの中のサーバーレスのものを中心にお話ししようと思います。

 

1.AWSとは

AWS(Amazon Web Services)とは、アマゾンが提供するクラウドサービスの総称です。
AWSには200を超えるサービスがありまして具体的なサービスとしては、仮想サーバを提供するEC2やデータベースであるRDS、ストレージを提供するS3などがあります。
いずれもサービスとして契約している期間だけ使用可能で、使用した分だけ料金を支払う従量課金制という形になっています。

f:id:pinkie79:20211026151212p:plain

EC2

f:id:pinkie79:20211026151225p:plain

RDS

f:id:pinkie79:20211026151234p:plain

S3

2.サーバーレスとは

一般的にシステムを運用するには、プログラムを稼働させるためのサーバが必要となります。サーバーレスは、実際にはアプリケーションが稼働するサーバが存在するものの、利用者はクラウドにあるサーバの存在を意識せず管理なども必要なく、機能としてアプリケーションの利用ができるというものになります。
サーバーレスの場合はアプリやサービスの開発者にはインフラの知識を必要としないため、プログラムの開発に注力できることが強みです。
ここからいくつかサーバーレスなリソースをご紹介いたします。

2-1.AWS Lambda  

f:id:pinkie79:20211026151305p:plain

Lambdaとは、クラウド上にプログラムを設定しておいて、インターネットを通じて好きなタイミングで実行することができるサービスになります。
サーバを使わなくても任意のプログラムを実行できるのでサーバやOSの構築、管理などの作業を行う必要はなく、実行するための関数を作成することで利用可能になります。
またリクエスト単位での従量制課金となっているので使用していない時に料金は発生せず料金を抑えられるという利点もあります。

2-2.Amazon API Gateway

f:id:pinkie79:20211026151319p:plain

まずAPIとは、自分のソフトウェアと他のソフトウェアの機能を連携できるようにしたものを指します。

Amazon API Gatewayでは以下2点が可能となります。
① APIの作成面において、AWS Lambdaで作成されたアプリケーションをAPIとして公開する
② APIの管理面において、APIの管理に必要なインフラの管理、運用やバージョンの管理、APIの監視、モニタリングをする

2-3.Amazon DynamoDB

f:id:pinkie79:20211026151336p:plain

Amazon DynamoDBには、NoSQLという特徴があります。NoSQLとはSQLを使わずにデータの操作ができるデータベースのことを指します。
DynamoDBはサーバーレスのため、パッチ適用などのサーバ管理をする必要がありません。
他に、テーブルを自動的にスケールアップやダウンをして容量を調整し、パフォーマンスを維持します。

 

3. EC2とLambdaの比較

3-1.設定

設定面においてEC2とLambdaは下記の違いがあります。
f:id:pinkie79:20211026160906p:plain
EC2の場合はプログラム以外に様々な設定や管理が必要ですが、Lambdaの場合は多くの設定をAWS側に任せることが出来るため、プログラムの記載に集中することが可能になります。

3-2.料金

料金面においてEC2とLambdaは下記の違いがあります。
f:id:pinkie79:20211026161010p:plain

EC2の場合はアクセスがない時も課金の対象となってしまいますが、Lambdaの場合は使用した分だけ料金を支払うので、安く済むケースが多いです。

3-3.Lambdaのデメリット

ここまでLambdaのメリットばかり話しましたが、Lambdaには実行時間に制約があります。Lambda関数の最大実行時間は15分ですので、その時間を超えての実行をすることができません。このため、15分を超える実行時間がかかる処理の場合には、EC2などの別環境で対応を行う必要が出てきます。

4.さいごに

私がAWSやサーバーレスといったものに触れ始めたのはここ半年ということもあり、AWSとはどんなものかという知識もない状態でしたのでAWSの学習に大変苦労しました。
ですが、勉強を進めていく中でAWSのリソースの利便性や拡張性を理解していき、AWSの将来性は高いものだと感じました。中でもサーバーレスの技術は開発者としては特に利便性を感じるものでしたので、よければご自身でも学んでみるのはいかがでしょうか。

最後までご覧いただき、ありがとうございました。