2023年11月4週目振り返り

今週やったこと

既存のAWS環境の整備を行うための技術選定

既存のAWS環境がコードで管理されていなかったので、IaCツールをするため技術選定を行いました。

TerraformかAWS CDKが選択肢になりましたが、元々個人的にTerraformの方が経験があったし、改めて調査してもTerraformの方が保守性が高そうということでTerraformで進めることでチームで合意できました。

MWAA環境の構築

バッチ処理のワークフローを管理するためにMWAAのdev環境を構築して開発を進めていく必要がありましたので、まずはTerraformでMWAAの環境を構築しました。
構築するにあたってこちらのリポジトリのコードがかなり参考になりました。

github.com

Terraform Registryで公開されているのでおそらくモジュールとしてこちらのリポジトリのコードを使うこともできそうですが、できるだけ一つ一つのリソースを定義しておきたかったのでモジュールとしては使わずMWAAをTerraformで構築する際の実装方法の学習用途で活用させてもらいました。

まずはシンプルなDAGはMWAAのdev環境で動かせるようになりました。

ESLintに!=を禁止するルールを追加

TypeScriptでフロントエンドの実装を行う際、厳格に比較するため!=ではなく!==を使おうという方針をチームで決めているのですが、時々プルリクエストのコードに!=が含まれてレビューで指摘をもらうことがあったので仕組みで解決する方法を調査しました。

おそらくLinterで警告を出して実装時点で気付けるのが一番生産性が上がるだろうと考えてESLintのルールを調べたら以下のeqeqeqというルールで!=などの等価演算子を禁止することができるというのがわかったので追加しました。

eslint.org

今週学んだこと

Lambda Labsについて

GPUインスタンスを動かす際、Lambda Labsという会社が提供しているLambda GPU Cloudというサービスが料金は安そう。

lambdalabs.com

zenn.dev

TerraformでLambda GPU Cloudを構築している記事などはまだ見たことがないですが、今後機械学習関連のプロダクトに携わる際に活用することもあり得るので調べておきたいと思います。

Amazon RDSの証明書をTerraformで指定する方法

TerraformのRDSの証明書はca_cert_identifierで指定できるということを知りました。

registry.terraform.io

選択肢としてはrds-ca-rsa4096-g1などがあるようで、有効期限などが証明書によって違ってくるみたいです。

aws.amazon.com

DjangoのMiddleware

チームメンバーのプルリクエストでDjangoのMiddlewareの機能があるのを知りました。

docs.djangoproject.com

クラスや関数としてMIddlewareを実装した後に、settings.pyのMIDDLEWARE=[]の中に追加するとviewの呼び出し時に実行されるようです。

Terraform Registryについて

Terraform RegistryというプラットフォームでTerraformのモジュールが共有されているということを知りました。

blog.grasys.io

registry.terraform.io

AWS Batchの料金

AWS Batchの料金について調査しました。

aws.amazon.com

AWS Batch に対する追加料金はありません。アプリケーションを保存および実行するために作成した AWS リソース (EC2 インスタンスAWS Lambda 関数、AWS Fargate など) に対してのみ料金が発生します。AWS Batch は、AWS Batch コンピューティング環境のセットアップ時にコンピューティングタイプ要件を指定して、リザーブインスタンス、Savings Plan、EC2 スポットインスタンスAWS Fargate と併用することができます。割引は請求時に適用されます

Infracontでコスト監視ができそう

これからTerraformでAWS環境を管理していくにあたってコストもしっかり把握するための仕組みを作っておきたいと考えて調査しました。

Infracostというツールではワークフローを設定しておけばプルリクエストの時点でAWSのコストを算出してくれるみたいです。

graff-it-i.com

既存環境をTerraformでコード化する方法

前任者がコンソールから構築したAWSリソースが複数あるので、それらも全てTerraformで管理したいと考えています。
ツールとしてはTerraformer、Terraformingなどがあるようなのでちょっとずつ触ってみたいと思います。

graff-it-i.com

qiita.com

www.beex-inc.com

FigmaとFigJamについて

チームでプロダクトについて議論する際にオンラインのホワイトボードに図を書いてもらっていて、それがFigmaを使っていると思っていたのですが正確にはFigJamというツールでした。

www.figma.com

zenn.dev

このあたりのツールの使い方にも慣れておいたほうがプロダクト立ち上げ時の要件定義や設計の議論を効率良く進められそうだと思いました。

面白そうな記事など

システムデザインの勉強用Gitリポジトリ

システムデザインについて勉強になりそうなリポジトリがあるのを知りました。 github.com

クックパッドFigma運用

speakerdeck.com

クックパッドFIgmaの運用方法が非常に参考になりました。
GitHubのイシューのリンクも貼っておいたり、完成したデザインとプロトタイプを分けておくなど使いやすいところは真似していきたいです。