Qiita Night~AWS vol.2~ 2023/05/24
ランニングコストやっべぇぞ!ECS/FatgateでECRへのアクセスについて2023/05/24アイレット株式会社 本間 崇平Qiita Night ~AWS vol.2~
View Slide
自己紹介本間 崇平アイレット株式会社 アジャイル事業部Shuhei Honma2018年アイレット入社(平成最後の新卒)AWS歴5年Web・IoTのサーバーサイドエンジニアよく使うAWS: Amplify, Lambda, DynamoDBなどのサーレス郡2022,2023受賞
1. 【前置き】今回お話するAWSリソースについて○ Fargate○ ECR○ NAT Gateway2. 実際にあった話3. どうするべきだったのか4. まとめ本日話すこと
Fargateについて
FargateとはFargateとは、コンテナ向けサーバーレスコンピューティングOSメンテナンス等の管理が不要● AWSマネージドサービス○ EC2に比べてインスタンスのプロビジョン、スケール、管理不要● 従量制料金のコンピューティングエンジン● ECSやEKSで動作する● 要件によって、Lambda以上EC2未満であれば採択● コスト最適化するうえで選択肢の1つ
ECRについて
ECR(Elastic Container Registry)とはECRとは、フルマネージドDockerコンテナレジストリコンテナソフトウェアを簡単に保存、共有、デプロイ● インフラ運用やスケーリングが不要● 高耐久性・可用性● HTTPS経由で転送。保管時に自動で暗号化● シンプルなワークフロー● ECRリポジトリにPushしたイメージをFargate(ECS)で起動できる
NAT Gatewayについて
NAT GatewayとはNAT Gatewayとはプライベートサブネット内からインターネットへ接続● アベイラビリティーゾーン(AZ)別に作成● VPC内に構成したインターネット接続できないプライベートシステムがNATGateway経由でインターネットに出れることが可能に● 例えば、LambdaからIP制限されたシステムへアクセスするときに使える
ということで
実際にあった話
こんなアプリケーションを開発した● Lambdaなどのサーバーレスアーキテクチャ採用● 納期スケジュールが短いため、早めに開発進める必要があった● アプリからデータを受信するAPIを開発● データをもとに集計するバッチ機能を開発● 集計機能は一定間隔でバッチ実行(Fargate)実際にあった話
構築/実装したAWSアーキテクチャ(一部)
問題点
問題点 ~ランニングコスト~● ECRがVPC外にあるため、NAT Gateway経由でインターネット仲介しECRへアクセスをしていた● 急激なアクセスによってデータ転送が突発した時ECSも一定間隔で起動していたのでNAT Gatewayの処理データも増えてしまった● 冗長構成をとったうえでのNAT Gatewayも2つ用意することで料金が更に倍
色々反省点あった● 開発優先重視して後先のこと考えず。。。● アクセス過多の時、集計は100万件近いデータ処理が発生● アクセス集中してない時でもランニングコストがかかっていたそもそもECSから外部インターネットへアクセスする必要なくない?
● Asia Pacific (Tokyo)○ NAT Gatewayあたりの料金 $0.062(時)○ 処理データ1GBあたりの料金 $0.062● 例: $0.062 per NAT Gateway Hourだと○ 31日(744時間)×$0.062×2本(冗長構成分)=$92.256(税抜 約12,000円)● 例: $0.062 per GB Data Processed by NAT Gatewaysだと○ 2000GB(31日分の処理データ)×$0.062×2本(冗長構成分)=$248(税抜 約34,000円)NATGatewayの利用だけで合算すると毎月46,000円のランニングコストNAT Gatewayコスト算出例
うおおおおおおおお
どうするべきだったのか
どうするべきだったのかVPC Endpoint(PrivateLink)を採用するべきだった
VPC EndpointとはVPCと他サービス間でプライベート接続を提供できる● VPCコンポーネント(仮想デバイス)である● VPC内のサービスとVPC外のサービスをプライベートに接続通信できる● セキュリティ上でインターネット接続せずに繋げれる
VPC Endpointを利用した場合のコスト算出例● Asia Pacific (Tokyo)○ 各AZ VPC Endpoint 1つあたりの料金 $0.014(時)○ 処理データ1GBあたりの料金■ リージョンで1ヶ月に処理されるデータ最初の1PBで $0.01● 例: $0.014 per VPC Endpoint Hourだと○ 31日(744時間)×$0.014×2本(冗長構成分)=$20.832(税抜 約2,800円)● 例: $0.01 リージョンで1ヶ月に処理されるデータ1PB未満○ $ 0.01(税抜 約1円)VPCEndpointの利用だけで合算すると毎月 2,800円で済む
あるべき姿のAWSアーキテクチャ(こうあるべきだった)
まとめ
まとめ設計時で考慮しておかないと運用コストが....
やっべぇぞ!
とにかく言いたいことドキュメントを読むのは当たり前だが運用コストも算出しておこう
さいごにAWSの責はほぼない設計・実装したお前の責である
完