🐸

データから2022年をふりかえる

2022/12/31に公開

LAPRAS株式会社でSREをしていますyktakaha4と申します🐧

同僚のryo-endoが今年やったことについてふりかえりの記事を書いていていいな〜と思ったため、自分もやってみることにしました

https://note.com/ryo_endo/n/n858dcfa279cd

個人的なことについての振り返りをするのがあまり得意でなく、記事も書いたことがなかったため、
極力具体的な数字を基にして思い出してみることにしました

ふりかえり

仕事と個人的にやったことでそれぞれ振り返っていきます

仕事

Issue

弊社では課題管理にGitHub Issuesを使っており、とあるリポジトリに全ての課題を集約して管理しています
また、個人的にあとから振り返りができるよう、対応したIssueのAssigneeやLabelについてはマメに設定するようにしています

OWNER/REPO リポジトリ配下で、 LOGIN-NAME がアサインされており今年更新があったIssueは、以下のワンライナーで抽出できます🦪

PAGE=1; rm -f issues.tsv; while [ $(curl -s -H "Accept: application/vnd.github+json" -H "Authorization: Bearer YOUR-GITHUB-TOKEN" -H "X-GitHub-Api-Version: 2022-11-28" "https://api.github.com/repos/OWNER/REPO/issues?per_page=100&state=all&assignee=LOGIN-NAME&since=2022-01-01T00:00:00Z&page=$PAGE" | jq -r '.[] | [.number, .state, .title, (.labels | map(.name) | sort | join(",")), (.assignees | map(.login) | sort | join(",")), .created_at, .closed_at, .html_url] | @tsv' | tee -a issues.tsv | wc -l) -gt 0 ]; do echo "page=$PAGE, count=$(cat issues.tsv | wc -l)";PAGE=$(($PAGE + 1)); done

実行するとこんな感じのtsvが出力されるので、スプシに貼り付けてガチャガチャします

$ head -2 issues.tsv
98765	open	hogehogeのtf管理	SR	yktakaha4	2022-12-26T06:36:19Z		https://github.com/owner/repo/issues/98765
43210	closed	fufafufaの削除	SR	yktakaha4	2022-12-26T06:19:28Z	2022-12-26T06:26:23Z	https://github.com/owner/repo/issues/43210

実際のデータをいくつか見てみたいと思います

月ごとにどのようなカテゴリのIssueをどのくらい完了したかは、以下になりました


Issueの完了件数

私は、離職した前任者の仕事を引き継ぐ形で2021年9月からSREとして働くようになったのですが、
この1年間、概ね一定のペースでSR関連のIssueを消化できていたようで安心しました
(10月の消化数が低いのは、ほぼ1ヶ月丸々お休みを頂いていたからになります)

12月のSRのIssue件数が多いのは、年末大掃除対応によるものです

開発者がいなくなり故障したまま打ち捨てられたbotや、クローズ後に放置されているプロダクトの残骸など1年を通じてメモっておいたものを、ペア作業で影響調査しつつ消していきました

仕事を引き継いで以来ずっと懸案していたことだったので、年末のプロダクトのコードフリーズのタイミングを利用して対応できてよかったです

また、普段と違って 無駄なものがないか という観点でソースコードやAWSコンソールを見ていると気づくことも多く、恒例行事にしていきたいと思います


大掃除Issueのイメージ

ペア作業(IssueのAssigneeに設定されていた人数)毎の件数は以下でした

今年は、4月よりSWEのktnyt 、7月よりSREのnappa のトレーナーをしていたため、毎月何かしらのペアプロや作業ができたのはとてもよかったと思います
12月の件数が多いのは大掃除の影響です

また、3人とか4人の内容があるのは、トラブル対応や、発見された既存不具合の修正対象がプロダクトの広範囲に渡るケース等を複数人で一気に対応した時のものです

SREチームは現状2人体制のため多人数で何かを進めることが少ないので、貴重な機会にはなります(バグを発生させないことが一番ですが…)


ペア作業件数

具体的な業務内容としては、以下のようなことがあったようです

抜本的な改修や新規機能の開発というよりは、既存の実装・運用上の不備を地道に改善していくということがほとんどだったように思います

  • 契約SaaSや支払情報の一覧化
  • アーキテクチャ図、ネットワーク図の作成
  • SLO低下時のプロダクションフリーズの運用構築
  • AWSのRI購入
  • 死活監視の強化
  • Kubernetesのクラスタアップデートおよび運用の手順改善
  • インフラ及びミドルウェアバージョンアップ運用の手順改善
  • READMEやCI/CDが未設定のリポジトリへの対処
  • 各種ログの取得強化
  • 脆弱性診断および指摘事項への対処
  • WAF外部サービス導入
  • Sorryページ表示機能の開発
  • テックブログのインフラ構築
  • 社内向けシステム・botの整備
  • インシデント対応
  • テクニカルサポートおよびバグ修正(ローテーションでたまに担当)
  • ロードマップの作成および振り返り(リードとして)
  • 採用応募者とのカジュアル面談・採用試験作成・技術面接(リードとして)
  • 新入社員へのオンボーディング(トレーナーとして)

コミット

会社のOrganizationに対するコミットとしては、約3,000程度だったようです


コミット数

リポジトリへの貢献行数を可視化するKunitoriというCLIを直近で作ったので、そちらも使って見てみます

https://zenn.dev/yktakaha4/articles/introducing_kunitori

以下は、弊社のとあるプロダクトに対して書かれたテストコードの行数です

まず、1月時点の状態になります


2022年1月時点

こちらが、12月時点の状態です


2022年12月時点

私は普段SREをしているため、エンドユーザーにとってわかりやすい機能修正はしておらず、基本的にバグやセキュリティリスクの修正が主になるのですが、
そうした改修でもこまめにテストを書くようにしていたのと、既存コードでテストが書かれていないものに対して地道にテスト追加をおこなった結果、この1年で全体に対して8%程度が私の書いたテストになったようでした

テストを書くと、自分が書いてないコードでもかなり具体的に仕様を把握できるようになりますし、
例えば、外部APIへのリクエストがあるものでも、テスト可能にするためにモックのAPIクライアントを注入できるようにするなどのリファクタリングをおこなうことで、可読性や実行容易性を高めることができるものと思います

私は元々SWEからSREに転向したのもあるので、TerraformやKubernetesといったインフラに関する技術ばかりでなく、プロダクト品質を高めるための活動を広くおこなっていけたらと思います

個人的な活動

公開アウトプット

弊社で運営しているエンジニア向けポートフォリオサービスのLAPRAS に最近試験的に実装された機能として、月ごとの技術系SNSへのアウトプット件数をグラフで出してくれるようになったので見てみます

https://lapras.com/public/yktakaha4


Activity Logのグラフ

今年は技術記事をたくさん書けたのがよかったと思います
Zenn 2022 Recap として統計情報をメールで教えてもらえたのがうれしかったです


2022年の振り返り

Zennへの投稿は2020年から細々とおこなっていのですが、今年初めて3桁のLikesをもらいました
記事を書くモチベーションは基本的に自分のためではありますが、他の人にとっても関心がある内容であることがわかってよかったです


よく読まれた投稿

https://zenn.dev/yktakaha4/articles/technology_for_sending_email

https://zenn.dev/yktakaha4/articles/documentation_inspired_by_http_cache

https://zenn.dev/yktakaha4/articles/study_csrf_attack

また、多くの人に読まれることのメリットとして、 有識者の方に間違いを指摘してもらえる ということもあるなと思いました
基本的によくわかっていない事柄について自身が理解するために情報をまとめているため、非常にありがたかったです

誤り自体を減らしていけるよう引き続きやっていきたいと思います

登壇

先程のActivity Logのグラフで、10月に1件SpeakerDeckへのアウトプットがあったのですが、これはPyCon JP 2022 に登壇したことによるものです

https://2022.pycon.jp/timetable?id=CRFBMR

Python Social Authで学ぶ、OAuth2.0認可コードフローにおける異常系への対処 というタイトルで、仕事でOAuthについて知ったことをまとめたものでした
初めて登壇したので相当緊張したのですが、会場では割と質問も多くもらえてありがたかったです

https://speakerdeck.com/yktakaha4/python-social-authdexue-bu-oauth2-dot-0ren-ke-kodohuroniokeruyi-chang-xi-henodui-chu

個人開発

CLIを2つと、Chrome拡張を1つ作りました

https://zenn.dev/yktakaha4/articles/introducing_kunitori

https://zenn.dev/yktakaha4/articles/kintone-form-model-generator

特に、Chrome拡張のDucktify は、仕事中にSpotify聴いてる方なら結構役立つのでないかと思います

https://zenn.dev/yktakaha4/articles/how_to_develop_ducktify

OSS活動

基本的に個人リポジトリへのコミットが主でしたが、Starの多いOSSについてもいくつかPRをマージしてもらえたのでよかったです

https://github.com/hashicorp/terraform-provider-aws/pull/26057

https://github.com/python-social-auth/social-core/pull/698

資格

SWEからSREに鞍替えしたことで急遽まとまった知識を得たいなと思ったため、1月にCKAD、6月にCKAを取得しました

対して、年初にAWS SAAを失効してしまったので、来年は気が向いたらSAPを勉強してみたいと思います

https://www.credly.com/users/yuuki-takahashi.6dec413f/badges

技術書

今年読んだ技術関連の書籍で、印象に残っているものを貼っておきます

その他

去年から業後にランニングをするようになったのですが、なんとなく目標にしていた年1,000キロ走るのを達成できました

大会に出るとか、よりペースを早めていく…というよりは、健康のために極力同じ感じで継続していきたいと思います

https://twitter.com/yktakaha4/status/1600837633772752898?s=20&t=1I2C5bgkEG_dYNZiGLnwCA

おわりに

振り返ってみて、エンジニアとしての活動内容では今までで一番色々なことをしていたような気がしますが、
SREとして何をすべきか、悩みながら進めることが多かった1年であったように思います

また、今年(の特に前半)は個人プレーで物事に対処する場面が多かったという反省があるので、
来年は、よりチームや組織で解決していけるよう、やっていきたいとおもいます🐂

Discussion