😑

Productivity Weekly (2023-05-31号, 2023-05-24号)

2023/06/06に公開

こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。

僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。
本記事はその時のネタをまとめたものです。

2023-01-25 号から、基本的に隔週で連載することとしました。たまに単独でも投稿するかもしれません。
今週は 2023-05-31, 2023-05-24 合併号です。

今回が第 114 回目です。過去の記事はこちら

news 📺

Terraform 1.5 で追加予定の import ブロック、-generate-config-out オプションの話

https://github.com/hashicorp/terraform/releases/tag/v1.5.0-rc2

Terraform 1.5(未リリース)で import ブロック、-generate-config-out オプションが追加予定です。
上記リンクは Terraform 1.5.0-rc2 のリリースノートになります。

import ブロックは、terraform import.tf ファイル内で宣言して実行できる機能です。
以前追加された moved ブロックと似たようなものになります。

-generate-config-out=<PATH> は、terraform plan 時に、import ブロックと併用して使う CLI のオプションになります。これを使うことで、import ブロックで宣言したリソースの記述を自動で書き込んでくれます。

さっそく、それぞれを使ってみた記事を出してくれている人がいます。実際に試さなくてもどんなものかわかってとても良いです。

以前、似たようなコマンドとして、terraform add がありました。
terraform add は Terraform で管理されていない既存リソースのリソース定義を標準出力してくれるというもので、大変便利な機能だったのですが、残念ながら正式リリース時は消えていました

terraform import はぶっつけ本番で失敗すると面倒なことになるコマンドなので、plan でインポート前に確認できるのはとても嬉しいです。
また、terraform import はあくまで Terraform state にリソースを持ってきてくれるだけなので、.tf ファイルに手動でリソースを書く必要があります。これまではインポート後に terraform plan で差分を確認して .tf ファイルにコピペしていくという作業をしており正直不毛でした。-generate-config-out=<PATH> が出たことで、手動でリソースを定義する必要がなくなりとても便利になりましたね[1]

まだ正式リリースはされていませんが、terraform add の時と違い、RC[2]に入ってるので、だいぶ期待できるかなと思います。
早くリリースされてほしいですね。

Terraform AWS provider 5.0 adds updates to default tags

https://www.hashicorp.com/blog/terraform-aws-provider-5-0-adds-updates-to-default-tags

Terraform Provider AWS の 5.x がリリースされました。
デフォルトタグに関する機能が強化されたり、多くの非推奨な attributes が削除されたりしています(これまでは警告が出てきていました)。特に機能的にはタグに関する改良がほとんどです。

変更に関するわかりやすい記事をクラメソさんがさっそく出していました。

5.x はメジャーアップデートに当たるため、破壊的変更が盛り沢山です。主に非推奨な attributes に関する破壊的変更が多いですが、4.x の時に話題になった S3 周りの非推奨な attributes に関しては、まだ警告を出すにとどめているようです(上記クラメソさんの記事が詳しい)。

アップデートの際は、ガイドを参考にしましょう。

アップデートは簡単ではないかもしれませんが、アップデートを放置するとどんどんアプデが億劫になるので、特に理由もなければ早めに新バージョンに上げましょう。

開発環境を丸ごとクラウドPC化する「Microsoft Dev Box」、7月に正式リリースと発表。Build 2023 - Publickey

https://www.publickey1.jp/blog/23/pcmicrosoft_dev_box7build_2023.html

クラウド上に開発環境作るやつが流行っていますね。

Azure では今までそのようなクラウド上の開発環境構築が無かったように思います。

今回の Dev Box では、環境を作成すると仮想マシンが作成され、リモートデスクトップで入って作業するという感じのようです。
あらかじめチーム用のツール、ソースコードなどを設定することで、個々のマシンで準備する必要が無い、というメリットがあります。

Windows の開発環境が欲しいチームには良い選択肢になるかもしれません。

本項の執筆者: @defaultcf

業界初 生成AIオブザーバビリティアシスタント「New Relic Grok」発表 リミテッドプレビュー申込受付を開始 | New Relic

https://newrelic.com/jp/press-release/20230523

オブザーバビリティ関連の情報です。

OpenAI の大規模言語モデルと、New Relic の統合テレメトリデータプラットフォームを統合して、計装・トラブルシューティング・レポート作成などを自動で行うそうです。

手動で分析する負荷を減らし、経験の有無に関わらずオブザーバビリティを活用できるようになる...まさに理想な姿のように思います。
どこまで軽減されるか、正確に出力されるか、期待ですね。

夏にリミテッドプレビューを提供するとのことですので、楽しみに待ちましょう。

本項の執筆者: @defaultcf

know-how 🎓

Amazon EKSベストプラクティスガイドにクラスターアップグレードの章が追加されました | DevelopersIO

https://dev.classmethod.jp/articles/eks-best-practice-guide-cluster-upgrade/

https://github.com/aws/aws-eks-best-practices/pull/321

EKS ベストプラクティスは 2020 年 5 月から公開されており、参考にされてた方も多いかと思いますが、今までクラスターアップグレードの章はありませんでした。今回それがようやく登場しました。

主体的にクラスターアップデートすべしという話や、アップグレード前に検証する話、実際にどうアップグレードするかという話が書かれており、ためになりそうです。

定期的にアップデートしましょう。
ちなみに EKS の新しいバージョンは、2 〜 4 ヶ月おきくらいにリリースされています。
https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-release-calendar

ところで今回のベストプラクティスは GitHub Pages で公開されコントリビュートも可能ですが、AWS の各種リソースのドキュメントを集約している AWS Document は現在 AWS が独自にホストしておりコントリビュートもできません。
https://docs.aws.amazon.com/

実は 2018 年頃、多くのドキュメントが GitHub でコントリビュート可能でした。
https://aws.amazon.com/jp/blogs/news/aws-documentation-is-now-open-source-and-on-github/

しかし 2023 年 5 月に GitHub 上のリポジトリをアーカイブし、こういった取り組みを終了する旨のブログを出しています。2023 年 6 月 5 日以降にアーカイブを開始するようです。
社内のドキュメントと同期するのが大変だったようですね...
https://aws.amazon.com/jp/blogs/aws/retiring-the-aws-documentation-on-github/

EKS ベストプラクティスガイドは長く続いてくれると嬉しいですね!

本項の執筆者: @defaultcf

サバンナ便り〜自動テストに関する連載で得られた知見のまとめ(2023年5月版)〜 / Automated Test Knowledge from Savanna 202305 edition - Speaker Deck

https://speakerdeck.com/twada/automated-test-knowledge-from-savanna-202305-edition

t_wada さんによるサバンナからのお便りです。自動テストにまつわる知見がまとめられています。
内容としては、学習用テスト、偽陰性と偽陽性、テストサイズ、テストダブル、テストピラミッド、自動テストのサイズダウン戦略に関する知見が載っています。

個人的には、テストサイズの考え方が、わかりやすい、シンプルに分類できる、便利な表がある、という理由で特に良かったです。
また、単体テストの考え方/使い方本が良書すぎるそうなので、読んでみたいと思いました。

ページ数もそんなに多くないため、気になる人はとりあえず読んでみましょう。WEB+DB PRESS で連載していたらしい内容も読みたいです。

全AWSエンジニアに捧ぐ、CloudWatch 設計・運用 虎の巻 / CloudWatch design and operation bible

https://speakerdeck.com/iselegant/cloudwatch-design-and-operation-bible

こちらもオブザーバビリティ関連の情報です。

CloudWatch の重要性から始まり、CloudWatch のサービススイートを使ったオブザーバビリティの実現について詳しく書かれています。

丁度社内勉強会でオブザーバビリティについて学んでいたので、AWS でオブザーバビリティのある構成が分かりやすく書かれているこのスライドは私にとってドンピシャでした。

X-Ray などはまだ理解できていないので、このスライドを参考に探求を進めていこうと思います。

ちゃんと各種スイートを使いこなしていきたいですね。

本項の執筆者: @defaultcf

CI/CD Test Night #6 - GitHub Actionsセルフホストランナーのインフラ運用

https://testnight.connpass.com/event/281681/

先日、GitHub Actions セルフホストランナーのインフラ運用についてのミートアップが開催されました。主催は DeNA さんで、渋谷でのオフラインとオンラインによるハイブリッド開催でした。

僕はオフラインでの参加でしたが、その道(セルフホストランナー)のプロがあらゆる工夫を凝らした運用を行なっており、とても勉強になりました。
また、DeNA さんの本社での開催でしたが、めちゃいい感じの場所でした。

資料がすでに公開されているので、気になる人はぜひ見てみてください。

https://www.youtube.com/watch?v=-XQWr_iTmEo

read more 🍘

Productivity Weekly で出たネタを全て紹介したいけど紹介する体力が持たなかったネタを一言程度で書くコーナーです。

  • news 📺
  • know-how 🎓
    • エンジニアのための刑事事件対策まとめ - Qiita
      • 例の Coinhive 事件で無罪を勝ち取ったモロさんによる、警察の取り調べで不利にならないように立ち回るための tips です
      • とにかく高い金払ってでも弁護士さんをつけようと思いました。日本ハッカー協会の存在も初めて知りましたが、こういうときに頼れる場所があるのはありがたいですね
      • こういうのは自分は関係ないと思ってたらいきなり巻き込まれるものだと思うので、誰もにおすすめしたい内容です
  • tool 🔨
    • datarootsio/tf-profile: CLI tool to profile Terraform runs, written in Go
      • terraform apply にかかる時間やリソースに対する操作をプロファイルするツールです
      • apply 時のログを渡すだけで解析してくれるのでシンプルに使えます
      • 個人的にはめちゃくちゃでかいモジュールの場合、plan/apply 時の Refreshing state に時間がかかるので、そこをプロファイルしてほしかったのですが、このツールはあくまで apply 時のリソースに対する操作をプロファイルするもののようです

あとがき

ここ数ヶ月締め切りのあるタスクが多くてバタバタしていたのですが、最近ちょっと落ち着いてひと段落です。
早くも 6 月ですね。時の流れは早いです。

サイボウズの生産性向上チームでは社内エンジニアの開発生産性を上げるための活動を行なっています。そんな生産性向上チームが気になる方は下のリンクをクリック!
https://note.com/cybozu_dev/n/n1c1b44bf72f6

脚注
  1. plan 時にファイルが生成されることはそれはそれで気持ち悪いという人も Weekly の会にはいました。 ↩︎

  2. Release Candidate のことです。正式リリース前にリリースされるバージョンのことです。 ↩︎

GitHubで編集を提案
サイボウズ 生産性向上チーム 💪

Discussion