振り返る。
仕事
とある機能のリリース対応
すでに開発完了されていたとある機能の暫定対応版のリリースを行いました。
プロジェクトでは複数の機能が同時並行で開発されており、開発完了したものがお客様都合でリリーススケジュールをずらしたりすることが多々あります。
今回そのうちの一つで、この暫定対応をリリースしないとAPIのクライアントであるモバイルアプリのリリースにも影響があるリリースでした。
ただ、リリース直後エラーが発生し、一旦切り戻すことになりました。
原因としては、暫定対応時に設定していた値が固定値になっており、それが原因でとある計算ロジックで落ちるというものでした。
テストパターンが少なくCIでもテストでエラーにならないために気づけず、本番環境にリリースしていくつかのパターンのリクエストが来て判明しました。
リリース直後にエラーレートが徐々に上昇したため、ログを調査するとそのような原因だったためすぐに前のアプリケーションバージョンに切り戻すことになりました。
サーバサイドチームは何人か夏休みを取得しており人が少なかったため、積極的に調査・バグの修正、再リリースの調整等を行い、無事スプリント最後の日にリリースを完了できました。
検証環境もありCI/CD環境もあるにも関わらず、このバグを見逃したのはテストデータの網羅性が足りなかったのと適切なクラスにテストケースを追加できていなかったからです。
また、クラス設計等に問題がある可能性もあります。とある修正をしたときに正しく計算ロジックがテストで実行されていればバグに気づけた可能性があります。
今後、システムの安定稼働、開発・運用の容易性を高めるためにリファクタリングは行っていきたいと思います。
Lambdaにリソースタグを付与する
プロジェクトでは開発したリソースにタグを付与して、CloudWatchやDatadogで監視しやすいようにしています。
Serverless Frameworkでリソース作成、デプロイをしているLambdaにはこのリソースタグが付与されていなかったため付与する対応を行いました。
以下のようにStackTagsを設定すればLambdaに付与されます。
stackTags: key: value iam: # Overwrite the default IAM role which is used for all functions role: arn:aws:iam::XXXXXX:role/role
プライベート
読書
- ドメイン駆動設計入門 - ボトムアップでわかる!ドメイン駆動設計の基本
その他
UdemyでAkka Persistenceの動画を見終わりました。
内容も分かりやすく面白いのでおすすめです!