はじめに
AWSには「はじめてのアマゾンウェブサービスforDeveloper」というセミナーがあります。
「はじめてのアマゾンウェブサービス」という名前に釣られ、参加してみました。
そのままにしておくのはもったいないので、自分なりにアウトプットしてみようと思います。
大まかな流れ
クラウドの基本的な特徴
AWS のビジネス規模および成長率
主要サービスのまとめ
クラウド のセキュリティ
-
クラウドを活用した開発手法のトレンド
- Microservices / Serverless
- Infrastructure as a Code / DevOps
- 非同期型処理
クラウドを活用した開発手法のトレンド
Microservices
クラウドネイティブ開発の場合、取り入れると有効であると思われるアーキテクチャです。
- それぞれのリソースをブラックボックス化してしまい、定義されたAPIでやり取りをする。
- 他のリソースへの影響を考えずに機能改善が行えるため、楽
ということでした。
-
メリット
- サービスごとに小規模なチームで開発を行う為、自主的かつ迅速に仕事に取り組める。
- サービスごとにスケーリングを行えるため、効率化できる。
- デプロイが容易なため新しいアイデアを試すことや、うまくいかなかった際にロールバックすることが簡単にできる。
- 一つのサービスに障害が発生してもアプリケーション全体のクラッシュは回避できる。
マイクロサービスの対義語には「モノリシック」というものがあり、全体で単一のサービスとして実行されるものを言います。
参考:マイクロサービス
AWS Lambda(Serverless)
- Serverless システムの実行には、
- プログラムを書き
- 実行する
という手順が必要です。
したがって、従来のシステムではプログラムを実行するための実行環境のサーバの構築やメンテナンスをする必要があります。
実行環境であるサーバにリクエストが集中して実行環境に障害が起きてしまうと元も子もないため、リクエストが増えることがわかっている場合にはスケーリングする必要があります。
そういった煩わしさをなくしたのが、サーバレスコンピューティングを担う「AWS Lambda」です。
- AWS Lambdaのメリット
- Lambdaの実行環境設定をすれば、設定をもとにAWSが面倒を見てくれる
- 複数の言語サポート(アクセスがまばらの場合は初動が速いPythonなどがおすすめ)
ということでした。
料金体系は
サービス | 料金体系 |
---|---|
Lambda | 実行したリクエストと時間分だけ料金発生 |
となっています。
参考:サーバーレスって何が便利なの ? AWS でサーバーレスを構築するためのサービスをグラレコで解説
Infrastructure as Code
簡単に言うと「インフラストラクチャーをコード化する」ということみたいです。
そのまんまですね。
- リソースは API 経由でプロビジョニング
- 定義ファイルによる効率化と自動化
- エラーやセキュリティ違反の除去
といったメリットがあります。
AWSではAWS CloudFormationを用いて実現することができます。
非同期型処理
- Amazon SQS
- 完全マネージド型のメッセージキューイングサービス
- AWSで非同期型処理をやるならこれ
非同期処理をしない場合には、ユーザが注文をした際に在庫を確認し、発送できる状態であるかの確認をするまで待機してもらうことになるのですが、AmazonSQSを間に挟むことによってフロントエンドとバックエンドを非同期にすることができ、ユーザビリティの向上につながります。
まとめ
ここまで「はじめてのアマゾンウェブサービス for Developer」で説明受けたクラウドを活用した開発手法のトレンドをまとめてみました。
前提知識がないとなかなかイメージしにくいなと感じることがあったので、アジェンダを確認し、知らない単語があれば事前に調べることをお勧めします。