Fusic Tech Blog

Fusion of Society, IT and Culture

AWS Amplifyが変えた世界
2021/12/01

AWS Amplifyが変えた世界

Fusicの清家です。

この記事は AWS Amplify Advent Calendar 2021の記事です。

本日はAWS Amplifyを利用することで
どのようにAWSのインフラ準備が変わっていったのかをつらつら書いていこうと思います。

書き終わった後に読み返しましたが少しポエムっぽいです。ご注意とご了承ください。

筆者の技術スタック

AWSに出会う前

筆者の技術スタックは以下のとおりです。
Webに関するフルスタックエンジニアエンジニアというのがわかりやすいのかもしれません。

  • フロントエンドからバックエンドまでいっしょくたに提供してた時代からのエンジニア
  • その名残で今もフロントエンド、バックエンド、インフラ構築までおしなべて行ういわゆるフルスタックエンジニア
  • 前職にて社内のインフラ整備だったりお客様の環境構築を任されることが多かった
  • 現在の会社からAWSを学び始める

とりあえずやってみよう!という精神を生かして
何でも手を出してた事から、アプリケーションを構築する会社で絶対数が少なくなりがちな
インフラ部分を任されることが多かったと思います。

さくらのVPSなどに対して すべてのアプリケーションが整うお手製のシェルをメンテナンスしながら、
一発で環境を整えることに快感を覚えておりました。

AnsibleなどのIaCが話題に上がってきた時は感動しながら
そのシェルが社内淘汰されていく様を悲しく思ったものです。

社内のネットワークや、サーバーをハードウェアとも戦いながら整備してたのも良い想いでです。

そんな僕はSSH大好きです。

AWS

そんなインフラ準備を行うことが多かった事もあり、
現職でAWSを触るようになってからもすんなり入れたほうだと思います。

いろんな事を任せる事が出来て、サーバーのセットアップどころか
サーバーリソースの準備までやってくれるAWSに感動しました。

Cloudformationを実行するとネットワーク含めて用意がされる世界に
一定の危機感と共に、マネージドサービスを中心にしたインフラアーキテクチャの可能性に震えました。

いわゆるサーバーレスアーキテクチャに触れました。
インフラ構築は好きですが、何もかも自分で管理することの大変さも感じていたのが事実だったからです。

ここでも僕の世界は一つ変わったのだと思います。

AWS Amplify

やっと本題に少しずつ触れていきます。
AWSでインフラ構築を経験して、リソースのセットアップからサーバーの構築にも慣れてきました。

手元にこのインフラ構成ならこのCloudformation Templateを利用するなどの資源も溜まってきました。
Serverless Framework のTemplateも然りです。

そんななか新しいソフトウェアの話を入手しました、それがAWS Amplifyです

最初はモバイルのアプリケーション構築を行うものかな…?と少し遠目から見てたのですが、
実際使ってみるとインフラ整備を行うエンジニアからすると震えました。

例えば通常のWebアプリケーションを構築するにあたり、以下のような要素が必要となってきます。

  • HTTPリクエストを受け付けるWebサーバー
  • 要求に応じて適切なレスポンスを返すアプリケーションサーバー
  • データを保存、提供するデータベースサーバー

EC2(ECS)、RDSなどを構築する必要が出てきます。

AWS Amplifyは上記を提供してくれます。

  • HTTPリクエストを受け付ける AWS Amplify Hosting
  • 要求に応じて適切なレスポンスを返す Amplify API(GraphQL、REST API)、Amplify function
  • データを保存、提供するデータベースサーバー Amplify APIのバックエンドStorage(Dynamodb,Aurora Serverless)

    • ※ Aurora Serverlessを採用する時は、現在は自分で構築する必要があります
    • いわゆるデータベースのデータのみではなく、S3にファイルを保持させるAWS Amplify Storage もあります

リソースの準備だけでなくて機能自体を提供している部分もあります。
次の図をご覧ください。

Reactで構築されたアプリケーションをAWS Amplify で公開する例となります。
リソース下部のAWS Cloudformationすら自分で用意したものではありません。

これらのリソース、機能をCLIでの質問に答えるだけで構築することが可能です。

またHostingしているReactに関して、Amazon Cognitoから認証を受ける必要があるのですが、
その認証画面のUIすら提供、連携設定まで行ってくれます。
また、ReactからAppSyncへのデータリクエストを行う部分のコードも、
GraphQL の定義から自動生成してくれます。

これでもAWS Amplify の機能としては一部です。
まだ説明しきれていない部分もありますが、最低限のWebアプリケーションを構成する上での
必要な機能を提供してくれます。

まとめ

サーバーやルーターをハードウェアの購入から行ってセットアップしていた時代から考えると
なかなか考えられない世界になってきています。

サーバーリソースを準備していた時代から、サーバーリソースを提供してもらい
機能すら提供してもらう世界が見えてきました。

AWS Amplifyを正しく理解して利用することで、
オンプレからAWSを利用していたときのような世界が変わる瞬間を感じれるかもしれません。

皆様もAWS Amplify の利用を検討してみてはいかがでしょうか。

明日は @Tatsuya21 さんのAWS Amplifyを利用したiOSの記事みたいです!
お楽しみに!

Shiro Seike

Shiro Seike

Company:Fusic CO., LTD. Slides:slide.seike460.com blog:blog.seike460.com Program Language:PHP , Go Interest:Full Serverless Architecture