why
サービス作れるようになりたい
S3 に HTML CSS IMG 置いて静的サイト作るしかできない状態。
AWS は、この S3 と、アプリが動くらしい EC2 しか認識できていない。
EC2 を動かすイメージ確認
まずは動画で見てみる。
https://www.youtube.com/watch?v=HvrIPQ77xRY&t=802s
KLein さんの EC2 構築の動画を見るとこの様に解説されている。
VPC という大きな箱を作る。ネットワークの範囲領域らしい。
VPC にサブネットという単位を作る。VPC を分割するものらしい。
( VPC のままでは使えないのでさらに小さい箱を作ると予想 )
VPC にインターネットゲートウェイという穴を作る。インターネットからアクセスできる口らしい。クリーンアーキテクチャで言う Port と解釈した。
サブネットの中に EC2 インスタンスを作成できる
そして EC2 インスタンスでバックエンドのアプリを作り、外部からアクセスできる様にしていく様だ。
用語整理
VPC ( Virtual Private Cloud )
https://www.sbbit.jp/article/cont1/51188
ビジネス+IT のサイトによると
Amazon Virtual Private Cloud。
プライベートの仮想ネットワーク空間らしい。
EC2 などの AWS サービスを置ける論理的なまとまりのようだ。
他の VPC にも接続できるらしい。
Public でインターネットから接続できるようにできる。
Private で内部のサービス?でしか接続できないようにもできるらしい。
EC2
https://dev.to/kaede_io/aws-ji-chu-part-0-sabisutoyong-tu-nozheng-li-34jj-temp-slug-9710180/edit
Amazon Elastic Compute Cloud
伸縮性のあるコンピューターのクラウド。
インスタンスと呼ばれる、CPU やメモリを決められる仮想サーバーらしい。
https://aws.amazon.com/jp/ec2/?nc1=h_ls
公式によると 99.99% 落ちない強さがあるらしい。
それと安さが売りなようだ。
https://sitecloud.jp/blog/2729/
sitecloud によると、1ヶ月の料金が
- 静的サイト 2,600 円
- 中規模 EC サイト 10,000 円
- 大規模 Web アプリ 20,000 円
くらいらしい。
実際動画で見てみると、
Ubuntu や Amazon Linux を立てられる
Linux なのでなんでも大体立てられる
様に見えた。
ECS
Docker サーバー
Docker で DL できるものならなんでもおける様に見える。
ECR などの Docker レジストリがある前提。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html
コンテナごと権限が与えられるから何かに便利らしい。
Docker コンテナだからビルドされたアプリケーションイメージ push 時に CI/CD として連動機能を作れるらしい。
ログを CloudWatch におけるらしい。
https://zenn.dev/optfit/articles/a6026924062dd7
OptFit さんの記事によると
EC2 をスケールさせて運用した場合と比べて、変更の反映が楽らしい。
CloudFornt
EC2 などの前に噛ませるようにするキャッシュサーバー。
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
キャッシュサーバーとしてインターネットの各地でデータを持ってくれるから、近いところからデータが取れてアクセスが速くなると解釈した。
html, css, js, image, などを置けるらしい。
https://zenn.dev/kuma2/articles/f7eeb470e930e7
kuruma さんの記事よれば、本体のサーバーの負荷も下げてくれるらしい。それで安くなるなら嬉しいと感じる。
API Gateway
アプリケーションサーバーの前に噛ませる API サーバー。
( 要検証 )
https://www.redhat.com/ja/topics/api/what-does-an-api-gateway-do
Red Hat のサイトによれば
API の集約らしい。
BackEnd For FrontEnd のようなものだと予想。
管理できるので、認証や監視、アラートもできるらしい。
https://www.youtube.com/watch?v=EpEETIox03s&t=2618s
AWS 公式の動画によると
インターネット -> ( CloudFront ) -> API Gateway -> VPC -> サブネット
が一般的な構成らしい。
REST or WebSocket の API を扱えるようだ。
prod or dev の複数環境を作れて、dev のみアクセス制限をなくしたりできるらしい。
また、レスポンスを監視してくれるので、
( Elastic APM を入れなくても )
400/500系の エラーがいつ何回でたか記録してくれるようだ。
https://youtu.be/EpEETIox03s?t=1672
- Lamda 関数の呼び出し
- 外部 API の呼び出し
- Mock データのレスポンス
- 内部の AWS サービスの呼び出し
これらを行うことができるようだ。
内部の AWS サービスを使えるのがいちばんの価値だと予想した
Lamda については全く理解していない。
Aurora
ムカデみたいな名前しやがって
(Arthropleura, 閲覧注意)
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/CHAP_AuroraOverview.html
公式によると
MySQL と Postgres をおける DB エンジン。
Amazon RDS (Relational Database Service) の一部。
DB エンジンとは、Docker と Postgres などで作った DB サーバーを動かすところと解釈した。
- バックアップ
- 障害検知
- 修復
などの便利機能が使えるらしい。
Lambda
Node.js や Python で書いた関数をおける。
AWS 各サービスから呼べる。
処理時間が 15min までなので、すぐ終わる処理しかできない。
https://www.benjamin.co.jp/blog/technologies/lambda-2-eventbridge/
EventBridge で定期実行してバッジ処理する
https://qiita.com/kamome_ss/items/581c0369ce9a4268a08b
コードを書いて ECS の Task を呼ぶ
これらのことができるらしい。
AWS サービスまとめ
EC2 が基礎となるスケールしやすい仮想サーバーで
ECS がたくさんの EC2 を管理しやすくするもの
ECR が ECS で使うための Docker イメージの置き場
CloudFront がインターネットの手前のキャッシュを活用して負荷を下げもの
API Gateway が実質 BFF
Aurora が DB サーバー置くところ
だと解釈した。
用語
Security Group
通信が来る時のインバウンドルールを設定するもの。
各サービスを作るときに嵌めて作る。後からは変更できない認識。
https://www.acrovision.jp/service/aws/?p=1550
ホワイトリスト方式なので、追加していかないとどこからもアクセスできない。
- EC2インスタンス
- ECSコンテナの{タスク,サービス}
これらを作成するときに必須。
- SSH: 22, 0.0.0.0
- HTTP: 0.0.0.0
- Custom TCP: {my.private.server.ip}/32, 0.0.0.0
- Custom TCP: 8080, 0.0.0.0
- MySQL/Aurora: 3306, 0.0.0.0
例としてこれらだと
- インターネットからの SSH アクセス
- インターネットからの(デフォルトの)80ポートへのアクセス
- プライベートサーバーからの(デフォルトの)80ポートへのアクセス
- インターネットからの8080ポートへのアクセス
- インターネットから MySQL/Aurora へのアクセス
これらが許可される。
Top comments (0)