mkurokiのメモ

mkurokiのインフラとか仕事とか色々なメモ書きです。ここで書いている主張等は所属する会社とは関係がありません

AWSのSpot InstanceとAurora Serverlessで個人環境のTCOを最小化したい話

こんばんは、mkurokiです

個人的な/私用の 環境って持ってる人も多いかと思うんですが、 お金を稼ぐためのものではなかったりすると思いますので できるだけそこにかかるコストは最小化したいですよね?

今回はそのへんをうまいこと調整してみたいなーと思い、やってみた話です。  

要約

  • Spot Instance で 仮想マシンTCOを最小化してみる
  • Aurora Serverless でDBのTCOを最小化してみる

解決したい課題・要件

  • 個人用の環境のTCO(Total Cost of Ownership)を最小化する
    • 前述の通り、金も手間もかけずにいい感じの環境を目指す
  • DBの面倒をなるべく見ないで済むようにする
    • サーバー費節約のためAllInOneサーバーになにもかもすべてを同居させてしまうと、事あるごとにMySQLがOOMに殺されるので、そのような事態を避け、DBのお世話にかかる手間を小さくしたい
  • 主にフロント用途で仮想マシンは1台稼働させる

前提条件

  • 単純なWEB(apache)とDB(MySQL)のサーバーシステムの個人的な環境
  • 一応外部に公開しているサービスが動いている
  • そんなにミッションクリティカルでもなく、止まるとめっちゃ困るわけでもなく、ゆるく触りたいけど金と手間をなるべくかけたくない環境
  • けどそんなに頻繁に長いこと止まられるとちょっと嫌だなーという環境
  • クラウドサービスはどこでもいいといえばいいんだけど、今回はAWS

割り切った部分

  • レスポンスタイムは多少遅くても良い
  • 可用性はそんなに重要視しない

 

採用した構成

  • EC2 t3.small スポットインスタンス + Aurora Serverless
    • 可用性を重視しないためスポットインスタンスの瞬断を許容し、費用を抑える
    • DBへのアクセスも少ないし初回起動時に時間がかかっても大して困らないため、Aurora Serverless で必要なときに必要なだけDBのリソースを使い、管理を気にしなくて良い構成へ

結果

  • 費用はこんな感じになった
    f:id:mkuroki24sp:20200702235654p:plain
    コストの推移グラフ
    • 上記グラフの①のあたりで構成を切り替えて、今回導入の「スポットインスタンス + Aurora Serverless構成」に変更した
    • ②の期間中は、Aurora Serverless の設定がマズくて費用が高くなってた。後述する
    • ③のあたりが平常時の平均的なコスト。
      • 一日$0.66(≒月$19.99)くらいにおさまる感じ(おさまってくれ頼む)
  • Aurora Serverless は最初、常に1インスタンス立ち上がりっぱなしの設定になっていたため、費用がかさんでいた(②の期間)
    • 下記にチェックを入れないと、アイドル時に費用を抑えることができない
      f:id:mkuroki24sp:20200703000351p:plain
      ここにチェック

念のため、予算アラートの設定

  • とはいえ、Aurora Serverless がアクセスに応じて費用が増えまくる可能性はあるため、月額の費用がある程度の金額を超えたらアラートを出すように設定しました
  • 請求ダッシュボード→Budgets から予算とアラートを設定できます。個人のメールでアラートを受信するようにしました
    f:id:mkuroki24sp:20200703001414p:plain
    予算アラート設定

まとめ

というわけで、いい感じのそこそこ安くて使える環境になったような気がします。 監視周りをもうちょっと整えていきたいところですが、続きはまた次回!

在宅勤務のパフォーマンスを最大化するために

こんばんは、mkurokiです

在宅勤務が日常的になってきている職場もあると思います。

仕事の中で、在宅勤務がどうすればうまく進むか・パフォーマンスを最大化できるか といったところを検討してきたので、メモ代わりではないですが書き残しておいてみたいと思います。

環境設備・ツール・ビデオ会議(ビデオチャット)Tipsの3つのカテゴリで分けて記載します。

 

1. 環境・設備面

在宅勤務のために必要な設備や環境について

必須で必要なものから、あると便利なものまで

 

  • 必須で必要なもの
      • 家がないと在宅が出来ない
    • 電源
      • PCを動かすために必要
      • 意外と作業場所との兼ね合いでコンセント位置が悩ましいこともある
    • PC
      • おそらくほとんどの人が、PCがないと仕事ができないと思われる
      • 会社貸与のノートPC、もしくは自宅のPC
      • もしくは会社から自宅へ送付したPC
    • インターネット回線
      • 可能なら高速で安定した回線
      • さらに可能なら1Gbps以上の有線接続
    • VPNもしくはRDP環境
    • 家族の理解
      • 家で仕事をしているときは基本的に他のことが出来ない、
        ということを家族と共有し、理解を得ておくとスムーズに進む
      • ただ、自治体・保育園・教育機関の都合などで在宅勤務をしながら子の面倒を見ないといけない、等の場合は家族でサポートし合う必要がある
      • その際、会社側の理解および周囲のメンバーにそのことを伝え、理解を得られておくと望ましい。周囲のメンバーがそれをある程度柔軟に許容できる環境であるとよい
  • あると望ましいもの
    • 個別の部屋 個室
      • ビデオ会議時など、他の家族や物音の混入が避けられ、快適
      • 一人暮らしであればおそらく問題ない
      • 一人暮らしでも、壁が薄い問題が発生する場合がある
    • ある程度いい椅子・デスク
      • 長時間座っても身体への負担が少ないものがあるとよい
    • サブモニター
      • ディスプレイが複数あるとやはり作業の効率が良い
    • PCカメラ(WEBカメラ)・マイク
      • ビデオ会議で使用。会社スマホなどでも代替可能
      • いいものがあると気分が良くなる
    • イヤホン・ヘッドホン
      • ビデオ会議時、イヤホン/ヘッドホンを使用することで
        スピーカーからの音をマイクで拾うことがなくなり、
        通話のクオリティが格段に上がることが多い
        個人的には必須レベルでおすすめしたい
      • ビデオ会議ツールによっては、あんまり変わらないかも?
  • あったら便利なもの
    • 外付けマウス・キーボード
      • 好みで

 

2. ツール

  • ビデオ会議ツールを選択する
    • Google Meet
      • 必要十分な機能を持つ
      • セキュリティ的な懸念がなさそう
    • Zoom
      • 人気がある、機能が充実している
      • バーチャル背景で部屋を隠せる
  • チャットツールを選択する
    • Hangouts Chat / Slack / Chatwork / Teems など
    • 正直なんでもよい。統一されていることのほうが望ましい
    • チャットツール利用のガイドラインが定まっているとよい

 

3. ビデオ会議をよりよいものにするために

直接対面でのコミュニケーションが取れないので、ビデオ会議を上手く使うことで有効なコミュニケーションに繋げることが出来ます

その際のTipsをいくつか

 

  • イヤホン/ヘッドホンを使用する
    • 前述の通り、通話の品質がぐっと上がる
  • 話さないときはマイクをオフにする
    • タイピングの音や、家の外を走る車の音などが意外とうるさかったりして
      それらを防ぐことが出来る
    • 話すときにマイクをオンにするのを忘れがちだが、
      Meetであればマイクオフで喋ってるよ、と表示してくれるので気づきやすい
  • 画面共有を利用する
    • 同じものを見ながら話すことで、認識のズレが少なくなる
  • ホワイトボード系のツールを併用する
    • GoogleのツールであればJamboardなど
    • 同じものを見ながら話すことで、認識のズレが少なくなる
  • 議事録を取りながら会議を進めて、会議が終わったら共有する
    • オフィスでの仕事以上に、情報の可視化と共有が大事になる
    • 必要な情報が行き届かない人がいないように全員が意識するとよい
    • Google Docsなどリアルタイムで複数人が編集できるドキュメントを活用すると、議事録作成が効率よく進む

まとめ

在宅勤務のやりかたは会社の数だけあると思うので、上記に色々と書いてはみたけれど、正直答えは人によってバラバラだと思う。

結局は組織に蓄積していくノウハウが大きい、もしくはノウハウの蓄積ができる環境になっているかどうかというところがものを言うかもしれない。

上記は既に動いているチームの駆動を前提としたもので、チームビルディング過程のチームや新しくメンバーがジョインしたばかりのチームにおいてはテレワークでの関係構築はなかなか難しいところだと思う。課題として残してトライアンドエラーで良い方法を見つけていきたい。

人間の生きる環境は様々なので、他者の人生と環境にどれだけ想像力をもって相互理解の手を伸ばせるメンバーが集っているかどうか、およびチームのマネージャーがそういうチームを作れているかが大事になってくるのかなー。

AWS 認定資格 Solution Architect - Associateを取得した話

こんばんは、mkurokiです。

f:id:mkuroki24sp:20200105010027p:plain

先日、AWS 認定資格の Solution Architect Associate (通称SAA)を取得してきました!
ので、その時の話を書いてみます。

 

どんな資格なのか

 AWS 認定ソリューションアーキテクト – アソシエイト試験は、AWS における分散システムの可用性、コスト効率、高耐障害性およびスケーラビリティの設計に関する 1 年以上の実務経験を持つソリューションアーキテクト担当者を対象としています。

https://aws.amazon.com/jp/certification/certified-solutions-architect-associate/

 とのことで、上位のProfessionalと比べてやや難易度は低いものの、AWSにおける重要なポイントを抑えられているかが問われる試験となっているようです。

受験料は税込16500円でした。

 

なぜ取得したか

以前GCPの Associate Cloud Engineer は取得していたのですが、業務上はAWSを利用する必要もあり、より幅広い観点で最適なアーキテクチャの提案ができるように、またその裏付け・説得力としての認定資格があるといいかな、と考え、試験を受けました。

 

どのように勉強したか

SAA資格取得のための勉強を始める前の、AWSについての知識量としては、業務で多少嗜んだ程度ですが、AWS Summitなどに参加してレポートをまとめていたり、GCPで学んだ知識も多少はありましたので、そのあたりはまぁ役には立ったかと思います。

もともとインフラエンジニアとしては8年くらいなんとなくやってますので、インフラ的な知識は持っていました。

資格取得のためにやったこととしては、下記の2点です

1. 本を買って読んだ

いわゆる「黒本」と呼ばれているこちらですね

徹底攻略 AWS認定 ソリューションアーキテクト – アソシエイト教科書

徹底攻略 AWS認定 ソリューションアーキテクト – アソシエイト教科書

 

模擬試験1回分の問題と回答がオンラインで得られるのでお得です。
こちらの本は熟読したというよりは、各章の練習問題を解き、間違っていたところを復習して、苦手な部分を強化する といったような使い方がメインでした。

2. 付録の模擬試験を解いてみた

上記黒本の模擬試験を解いてみて、間違っていたところを復習しました。
この時点で、おおむね8割程度の正答率は得られていたので、まぁ大丈夫だろうと思い、それ以上はあまり勉強してません。

 

全体を通しての勉強時間は10時間なかったかな、というくらいでした。

 

試験当日 

池袋のテストセンターで受験しました。
まず全部の問題を解いていって、少しでも回答に自信がない問題にはチェックを付けて、再度見返していくぜ!と思って解いたら、半分以上の問題を見返すハメになりました。GCPの時の流れと同じですね……。

40分くらい時間が余ったかな?1時間以上はずっと問題と向き合っているので、集中力が切れないようにするのが大変でした。

提出して、その場で結果が表示されます。合格でした。
まぁ流石に落ちないだろうと思ってはいましたが、合否の瞬間はやっぱり緊張しますね。

後日届いたメールによると、スコアは881点(スコア範囲は100〜1000点)とのことでした。まぁまぁですね。

 

最後に

AWSはまだ、いままで業務で触っている期間がそこそこあったので、比較的少なめの勉強時間でSAAを取得できました。

次はGCPのProfessionalを狙ってみるかなぁ どうしようかなぁ。
もうちょい調べて考えてみたいと思います。

読んでいただいてありがとうございました!

GCPで意図しない課金を絶対に発生させないためには

こんばんは、mkurokiです。今年もあとわずかですね。

今日はGCPの小ネタです。

 

うっかり課金発生事案

GCP上でなにか環境を構築した後、使い終わって色々削除して
ヨシ!全部消したしこれで来月からは料金発生しないぞ!という状態のはずだったのに
翌月の請求を見ると、あれっ!なんかちょびっと請求が来てる!
ってこと、ありませんか?僕はありました。

よくあるのは、使い終わったVMは削除したんだけど、IPアドレスを消し忘れた!ってケースですかね。月10ドルくらい持っていかれて、悲しい気持ちになります。

また、2020 年 1 月 1 日から、無料枠に該当しない公開アドレスの VM インスタンスについても、追加料金が導入されるようです。

cloud.google.com上記によると、

についても、2020年1月1日から追加料金の対象となるようです。

まぁこれらについてはVMIPアドレスの削除をきっちりやっておけば、大丈夫かとは思いますが。とはいえ消し忘れやそれによる意図しない課金は避けたいですよね。

というわけで、意図しない課金を発生させないために最も確実な方法がコレです

 

プロジェクトを削除する

そうです、プロジェクトごとまるごと消してしまえば、それ以降の課金は確実に避けられます。

利用終了したプロジェクトは、必要なバックアップなどを取得したら、削除してしまい、無駄な課金が発生しないようにしましょう。0円GCP生活!無料!やったぜ!

特に企業などで使っている場合は、予算や費用負担の話などもあり、終了したはずのプロジェクトで費用の発生は避けたいですよね……。

 

そんなに迷うこともないかとは思いますが、実際の手順としては

左メニュー→IAMと管理→設定 から

f:id:mkuroki24sp:20191227175438p:plain

GCPプロジェクトの削除

「シャットダウン」をクリックして、プロジェクトIDを入力すると、プロジェクトの削除が始まります。

30日以内であれば、プロジェクトのオーナーは、削除を取り消すことができるようです

f:id:mkuroki24sp:20191227175650p:plain

削除の注意書き

「一部のリソースはこれより早く削除されることがあります」とのことですので、そこは(どこ?)注意が必要ですね。

 

まとめ

というわけで、GCPの意図しない課金を発生させないためには、プロジェクトの削除だよ!という話でした。

それではまた!

Amazon Game Tech Night #18 で注目したポイント:RDS Proxy / ECS Cluster Auto Scaling

こんばんは mkurokiです。

昨日行われた、Amazon Game Tech Night #18 ~AWS re:Invent 2019 Gaming re:Cap~ に参加してきました。

gamingtechnight.connpass.com

先日までラスベガスで行われていた、re:Inventの情報共有会・ゲーム業界特化 という感じですね。

詳しい内容は、このあとスライドが上がってくるはずなのでそれを待ちたいと思いますが、先行して、気になった内容をいくつかピックアップして共有してみたいと思います。

 

RDS Proxy

aws.amazon.com

RDS Proxyは、そのまんまですが RDS用のプロキシで、アプリとRDSの間に挟むことで、

  • コネクションプーリング
  • フェイルオーバー時間の短縮(最大66%?)
  • Lambdaなどサーバーレスからの接続最適化

などが実現できるようです。Auroraと、RDS for MySQLで利用可能なようです。
どちらかというと今までコネクションに難があったLambdaなどからの接続用に使うと便利そうな雰囲気がありますが、通常のアプリからの接続に使っても恩恵はありそうな予感がします。

料金体系がまだ不明みたいですが、どこかでテストしてみたいですね

 

ECSのCluster Auto Scaling がGAに

aws.amazon.com

この機能は、スケールアウトを高速化し信頼性を向上させる、クラスター内の空きキャパシティ管理の提供と、スケールイン時に終了されるインスタンスの自動管理を提供し、クラスターの自動スケーリングをより使いやすいものにします。

https://aws.amazon.com/jp/blogs/news/aws-ecs-cluster-auto-scaling-is-now-generally-available/

ということで、ASG に Capacity Provider というものを関連付け、スケーリングポリシーを生成し、管理されたスケーリングを実現できるようになるみたいです。

注目すべきポイントは下記です

インスタンス保護機能により、スケールインに際してどのインスタンスを削除できるかをECSに知らせることができます。これにより稼働中のコンテナーの中断を最小限に抑えられるようになります。運用コストの最適化、またECSで稼働するコンテナーワークロードの可用性向上に役立つ機能です。

https://aws.amazon.com/jp/blogs/news/aws-ecs-cluster-auto-scaling-is-now-generally-available/

ということで、これまでEC2のオートスケールに任せていると、スケールインする時にEC2の上で動いていたタスクが死んでしまうというリスクがあったのですが
削除対象インスタンスをECS側で知ることができるようになるようです。
何らかの事情でFargateを採用しない場合は、このCluster Auto Scalingにスケールアウト・スケールインをお任せできると、とても運用が楽になりそうです。これもどこかでテストしてみたいところですね。

 

その他

他にもたくさんあったのですが、トピックだけピックアップすると下記みたいな感じ

クラスメソッドさんが爆速で上げられてたレポートが詳しいです

https://dev.classmethod.jp/cloud/aws/amazon-game-tech-night-18-1/
https://dev.classmethod.jp/cloud/aws/amazon-game-tech-night-18-2/

 

まとめ

毎度のことながら、re:Inventで発表される情報量はめちゃめちゃ多いです。

全部ちゃんと追っかけるのは正直難しいと思うので、とりあえずふわっとインプットしておく もしくは、今使ってる・使いたいところにフィットするようなものを掘り下げて見ていけばよいかなーと思います。

それではまた。

 

Google Cloud 認定資格のAssociate Cloud Engineerを取得した話

こんばんは mkurokiです。

f:id:mkuroki24sp:20190919211710p:plain

先日、Google Cloud 認定資格の Associate Cloud Engineer を取得しました!
ので、その時の話を書いてみたいと思います。 

 

どんな資格なのか

Google Cloud 認定資格の1つで、上位のProfessionalに比べて初歩的で、Google Cloud Platformの基礎を理解できていることの確認になる資格だと思います。

推奨される経験:GCPの実務経験が6か月以上 らしいです

受験料は$125(税別)でした。

詳しくはこちら

Associate Cloud Engineer 認定資格  |  Google Cloud 認定資格  |  Google Cloud

 

なぜ取得したか

仕事上、GCPを扱う事が増えてきそうだったので
自分がインフラエンジニアという立場上もあり、GCPについて相談を受けた際に、適切なプロダクトの選定、アーキテクチャの設計を提案できるようになっておこうと思ったわけです。

なので「自分、そこそこちゃんとできる人です」ということを証明したかった、という感じですかね。

 

どのように勉強したか

資格取得のための勉強を始める前の、GCPについての知識量としては、業務で少しかじった程度ですが、Google Cloud NEXTなどに参加してレポートをまとめていたり、他のAWSの知識も多少はありましたので、そのあたりはまぁ役には立ったかと思います。

もともとインフラエンジニアとしては8年くらいなんとなくやってますので、インフラ的な知識は持っていました。

資格取得のためにやったこととしては、下記の3点です

  1. Courseraで受講した
    Core Infrastructure のコースを一通り受けました。
    無料期間の間にどうにかしようと思ってたのですが、間に合わず
    1ヶ月分の料金をお支払いしました。

    ja.coursera.org

  2. 本を買って読んだ
    Google Cloud Platform エンタープライズ設計ガイド

    Google Cloud Platform エンタープライズ設計ガイド

     

     

    こちらの本を買って読んで勉強しました。一通りさらっと読んだくらい

  3. 模擬試験を受けた
    公式で提供されている模擬試験を受けることができましたので、これを受けて、わからなかったところをリストアップし、内容を調べて理解する
    というところまでをしっかり確認しました。

    cloud.google.com

空き時間にダラダラと進めて3ヶ月くらいで上記をやった感じですね。
もうちょい詰め込んでもよかったかもですね。

 

試験当日

田町のテストセンターで受験しました。
まず全部の問題を解いていって、少しでも回答に自信がない問題にはチェックを付けて、再度見返していくぜ!と思って解いたら、大半の問題にチェックが付いてしまう事態に。ありがちですね。

何度も見直しをしましたが最終的には20分くらい時間が余りました。

提出して、その場で結果が表示されます。合格でした。
正答率とかは開示されないので、どのくらい正解できていたのかは闇の中ですね。

 

合格おめでとうクッズは、パーカーとかあれば欲しかったんですが、選択の余地がなかったので、マグカップとラップトップケースを選びました。ぶっちゃけどっちも使わない気がすr(

 

最後に

なかなかこの歳になって、勉強をして試験を受けて合否を判定されて、というのを経験することがなかったので、久々に新鮮な気持ちになりました。

次はProfessional にチャレンジするのもいいんだけど、AWSのAssociateを取ってみようかなーという気持ちです。クラウドそこそこわかるおじさんとして活動したい。

以上です。

新しいブログです

こんばんは、mkurokiです(誰)

日本・東京のとあるゲーム会社で働くインフラエンジニアです。

仕事関連や技術系の記事をまとめていく場所が欲しかったので、ブログで書いていこうかと思います。

内容があるかないかはわかりませんが、できるだけ情報共有・発信ができたら良いなぁと思っています。