🎄

[Day.11] AWSでNPOのWebサービスをはじめるSTO

2021/12/11に公開

以下の11日目のエントリです。

とあるプレスリリースを1つ紹介します。
https://prtimes.jp/main/html/rd/p/000000089.000012113.html

こちらのサービス群、2020.10.25 の STO案件説明会 にて募集のかかった案件で、フィールドワークの成果として 2021.05.28 に世に出たものです。
https://sto.code4japan.org/

この記事は、「何かをやっていかねば」と動き出した、NPO法人自立生活サポートセンター・もやい 主導プロジェクトのインフラパートを担当した自分が、プラットフォームとして選択された AWS を、「こんな使い方しました」と振り返るものです。
"コストを抑える" をかなり意識してきたので、そのあたりを気にされる方のどこかに刺さったりすれば幸いです。

Lightsail [$28/month]

検証環境をできるだけ安く、と考えて、4月だったと思うのですがそれまで使ったことのなかった Lightsail を使ってみました。

https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/what-is-amazon-lightsail

結果、Daily のコストが $0.92 と、なかなか素晴らしい低コストを実現できたように感じています。月間だと $28、内訳は以下です。[3]

  • 10 USD 仮想サーバーのプラン(下から3番目):これでないと Docker が重すぎて「使えない」
  • 18 USD ロードバランサー:冗長化?しておくにはカスタムサブドメインにエイリアスレコードを設定すると良い [4]
こんなことも実現できました(1つのサーバーで複数サブドメインを「ぶら下げる」+ 接続元IP制限)

tweet 1:55 AM Jun 22, 2021

Tips は こちら(sogaoh monthly 2021-06 (3) > NGINX で /admin 配下に接続元IP制限を付ける設定)。hoge1.conf と hoge2.conf みたいに用意して、server_name で振り分ける感じです。

App Runner [$15/month]

GA[5] が 2021/5/18 だった App Runner。おそらく、小規模ではありますがプロダクションでの利用を選択したのは自分が最初ではないかというくらいのスピード採用でした。API 機能がこのサービス中にあるのですが、そこで使ってます。検証はリリース当日という、なかなかの冒険。
ECR イメージが最新化されると自動で更新するようにしたので月初に $1 かかりますが、Daily では $0.46 です(2021/12/11時点)。月間にすると $13.8 で、カタログスペック(?)と合わない?と思ったりしました[6]が、問い合わせを経て従量課金分が載るためということで納得。
ALB等の整備をSkipできて見事にいろいろ節約できたなあ、と感じています。
その後、terraform import 等行っておいて万一のときの復旧準備もだいたいできている・・・はずです。

その他のコスト削減施策いくつか

不要な EBS ボリュームと Amazon EBS スナップショットを削除

このサービス群で特異な箇所は上述の2点で、それ以外はスタンダードな EC2 - RDS という構成にしています。
EC2 の運用コストを下げたいな、と思って何かないか調べたところ、以下の記事を見つけました。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/ebs-charge-stopped-instance/

これを見て、スケールアウト用に1台 EC2 インスタンスを余分に確保してあったのですが、それをやめて不要なボリュームとスナップショットを削除しました。これで 約 $0.5/day ($15/month) の節約ができた計算です。

もちろん、Savings Plans と Reserved Instance

言うまでもなく、というところですが、EC2 Instance Savings Plans・RDS Reserved Instance の採用を提案し、もちろんチーム内で了承を得ました。ちょっとした工夫として、とある AWS クレジットを利用していたので、割引幅の大きい All Upfront (全額前払い) ではなく Partial Upfront (一部前払い) を選択した、ことがあります。これにより、クレジットとの併用が可能です。

見積もりには↓のツールの利用が欠かせないと思うので、載せておきます。
https://calculator.aws/

時間単位のコミットメントを確認するページも。
https://aws.amazon.com/jp/savingsplans/compute-pricing/

それと、思い出してしまったのですが、Amazon Aurora MySQL のリザーブドインスタンスは
x RDS for MySQL で見積もり
o Aurora MySQL-Compatible で見積もり
です。。

今後気をつけておくこと

日々の料金傾向を月次で共有していて気がついたのですが、毎月16日以降、ALBの費用が $0.58 から $1.75 くらいに変わる傾向に気づきました。「これどういうこと?」と問い合わせた結果、無料利用枠「月750時間分」を超えたため、との回答が来ました。
なるほど、750時間 ÷ (24 * 2[ALBの数]) は 15.625 となり、そのくらいで傾向が変わりそう、と思いました。
次に気になったのは、「無料利用枠」はいつまで有効なの?という点で、それも問い合わせた結果 12ヶ月タイプの無料利用枠は、アカウントの作成から12か月後の末日までが有効 とのことで、これ以降は料金のかかり方が変わる、ということになります。そのタイミングの前に、サービスを継続しつつ、コスト調整の施策を考える必要があるなあ、と感じています。

AWS CLI の ce get-cost-and-usage で可視化しておく、などあるのですが、コマンド実行自体に CloudWatch の料金がかかったりするであろうとも思われ、悩ましくもあります。
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ce/get-cost-and-usage.html

COMPASS 始動

こうして運用してきた AWS 上の NPO 発サービス群に関して、ちょうど昨日(12/10)、プレスリリースが出ました。
https://twitter.com/npomoyai/status/1469154656018317312?s=20

ロゴも新たに、人びとが自分の望む生き方を実現するためのCOMPASS=羅針盤となればなあ、と自分も思います。必要あれば、ご活用ください。

さいごに

明日12日目の予定は以下になっています。それぞれお楽しみに。

脚注
  1. 10日目は tatsumi0040 さんの できることがなくても CivicTechに関わることができる でした。 ↩︎

  2. 10日目は ... 12/11 10:30 時点で未投稿です。 ↩︎

  3. refs Amazon Lightsail 料金表 ↩︎

  4. refs sogaoh monthly 2021-05 (2) > Lightsail の DNS Zone 確認・tfstate化 ↩︎

  5. App Runner リリースノート ↩︎

  6. refs sogaoh monthly 2021-05 (2) > App Runner の料金 ↩︎

Discussion