生涯未熟

生涯未熟

プログラミングをちょこちょこと。

2023の振り返り

今年ももう年の瀬ですね。30歳を越えてからというもの、年々時間の経つのが早く感じられて恐ろしくある今日此の頃でございます。

というわけで今年も一ヶ月毎に振り返ってみましょう。

1月

いきなり病気からスタートだったのですが、年末年始コロナにかかってダウンしておりました。いやー、コロナに初めて罹ったのですが辛いながらも 扁桃腺炎 > コロナ という感じでした。あえて分類するとすれば瞬発的な辛さは扁桃腺炎がダントツで、持続的な辛さはコロナで喉の痛みといった症状は一緒だけれども痛みの度合いは扁桃腺炎が段違いでしたね・・・コロナはコロナで、1月中は咳が止まらなくて生活のしづらさが目立ちました。

何はともあれいい年齢の人間になったので、病気には気を付けたいものです。

さて、1月の大きなトピックといえば年始早々のCircleCIのセキュリティインシデントですね。

circleci.com

弊チームでもご多分に漏れずCircleCIを利用してまして、シークレットの総取っ替えをする必要がありました。 病床についてる最中だったので、大丈夫かしら?と心配でSlackをチラチラ覗いていましたがチームメンバーがササッと対応してくれました。本当に頼りになるチーム・・・!

また、嬉しいことに新しいメンバーを迎えることができ、更にワイワイと楽しく・開発をより進めることのできるチームになったのもの1月のトピックでした。

この頃、自分はというとちまちまとフロントエンドのFragment Colocationの対応をしておりました。この背景としてはover-fetchingが目立つようになり、そこが原因でSSR時にLarge Page Dataで怒られることが増えたことが対応することになった起因です。
この対応についてはマネーフォワードさんのFragment Colocationの記事を大いに参考にさせてもらいました!先人の方々の残してくれている知識には感謝しかないですね🙏

zenn.dev

あとは新婚旅行として人生で初めて沖縄に行ってきました。あまりアウトドア・アクティビティが得意な夫婦ではないので、オフシーズンの安い時期な沖縄をチョイスしてのんびり色んなところを巡ってきました。
中でも由布島に行ってきたのですが、沖縄の中でも特に自然が満載で良いリフレッシュになりました。関東ではなかなか自然に囲まれる経験もできないですしね。あとは牛車で島間を往来するのも良い経験になりました。

※いませんでした・・・

2月

2月からはチームメンバーの発案でエンジニア会と呼ばれる2週間に一回のダッシュボードの観測や気になるエラーログの振り返り、エンジニアリング課題の共有などを行う定期会を開催するようになりました。今でも続いているのですが、作成したダッシュボードを活用する良い機会となり、もっと早くやっておけばよかったなぁと反省です。

インフラ関連で言うとGKEの負荷分散をコンテナネイティブの負荷分散に切り替えることをしました。切り替えの理由としてはサービスで少数ながら502が出ていて、調査したところInstance Groupを通したHealth Checkが70s間隔で、削除予定のnodeが存在した場合に最大70sは疎通ができていなくてもリクエストを送り続けていたため502が出ていました。
Instance Groupを通している場合でもHealth Checkの間隔自体は少なくするで対応できるものの、コンテナネイティブ負荷分散にすることでNGINXのgraceful shutdownも効くようになり、より502が出る可能性を低くすることが狙いでした。
結果、502が出ないようになり切り替えは成功でした✌

あとはMIXI Tech Conferenceに登壇することとなり、登壇資料を作成するのにめちゃくちゃ頑張ってました。

techcon.mixi.co.jp

大きな場での登壇というのが初でもあったので、ネタ出しに非常に苦労しました・・・

speakerdeck.com

結果として大きな場でも小さな場でもちゃんと準備さえしていれば何も変わらないなぁということが分かったので、何事も経験かなと登壇依頼を受けましたが良かったです😊

3月

この辺でめちゃくちゃbotからのアクセスが増えてきました。オートスケールが走るレベルで定期的にやってくるようになってきたので、こりゃどうにかせんといかんとCloud Armorを導入しました。
Cloud Armorでは事前構成WAFルールというものがあり、これを利用することで簡単にSQLインジェクションクロスサイトスクリプティングなどを防ぐことができます。感度などのレベルを調整する必要があるものの、これ幸いと利用しております。このおかげで今ではbotからの悪意のあるアクセスはほぼ防ぐことができました。

syossan.hateblo.jp

※こういうこともありました

GKEアップグレードやArgoCDのアップグレードなど定常的なアップグレードをこなしつつ、GCのイメージ管理をContainer RegistryからArtifact Registryへ移行しながらgcr-cleanerを使ったStorageの古いイメージの削除をやるなどコスト面に関する作業もちらほらとやっていました。

syossan.hateblo.jp

4月

またまた旅行の話なのですが、これまた人生で初めて金沢に行きました。今回は兼六園がメインターゲットで、これで日本三大庭園を全て回ることができました!

それともう一つのお目当てがナガノ展でして、夫婦揃ってちいかわが大好きで以前東京開催を申し込んで落選してしまったナガノ展の金沢開催が当選したので行ってきた次第です。これまた最高のコンテンツでした・・・!

仕事ではk8sのDeschedulerを試して引き続きコスト面を気にした対応をしたり、レイテンシーやエラー率をまとめたちゃんとしたダッシュボードをLooker Studioで作成したりしてました。
あとはGitHub Actionsを workflow_call を使って、一つのリポジトリで管理するようにしました。これは再利用のためなどの理由もありつつ、本番環境へのデプロイ時にGitHub Actionsなどのコミットがあると開発チームから「デプロイしても大丈夫ですか?」と確認の連絡が飛んできてしまうので、それを防ぐ意味合いもあります。

また仕組み作りではステージング環境のデータを本番環境と同期させたいよねという提案があり、これを実現させるためにゴニョゴニョ動いていたりしました。

syossan.hateblo.jp

5月

2023年6月に改正電気通信事業法が施行されるということで、ユーザー情報を外部に送信しているサービスは何か?などをまとめたりしていました。こういったオーダーが飛んできた時に優先度組み換えて対応しやすくする"遊撃部隊"というポジションを立ち上げておいて良かったと思いますね。

また、ありがたいことにFindyさんのこちらのイベントにも登壇させていただきました。

findy.connpass.com

speakerdeck.com

会社でのグレードが上がったこともあって、こういった外部登壇を増やしていこうと今年は登壇頑張りました。来年も機会を見つけてどこかで登壇したいなぁ・・・

プライベートではマハラージャンのライブで初めて野音に行ってきました!来年の10月に建て替えが始まるということでその前に行くことができて嬉しかったです。やっぱり野外でのライブはいいですねぇ。

6月

GDPR対応が突然降ってきたので対応しておりました。ちょうどCloud Armorを適用していたのでこれを使って解決することに。

syossan.hateblo.jp

あとはSlackのTwitter共有仕様変更に伴って、自前で動かしていたTwitterエゴサ結果のSlack通知が上手く動かなくなってしまったのでIFTTT Proを契約してTwitter AppletからSlackへ通知を飛ばすようにしました。こういうビジネス側の要求も後回しにせずに優先して対応することは心がけております。

インフラ面だとk8sの特定のPodのリソース状況によってevictさせる君を作ったりしました。

syossan.hateblo.jp

「実践入門 Kubernetesカスタムコントローラーへの道」も有り難く読ませていただいたのですが、本当にk8sは学べることが満載で沼ですね。もっとガッツリ触ってみたい・・・

7月

このあたりで恥ずかしながらOpenTelemetry(以下OTel)について初めて触れました。まだサービスには導入できていないのですが、OTel自体はめちゃくちゃ気になる技術領域なので遅々ながらも追いかけていきたいなという所存です。(日本語のOTel本とか出ないかな・・・

それとフロントエンドの依存ライブラリアップデートもやっていました。定期的にやってくる作業ではあるのですが、本当に影響範囲ややることが多いので一人でやるのはしんどいですね・・・
とはいえ泣き言も言ってられないので、やるしかないのですがある意味ついでによろしくないところも直すことが出来る良い機会と思ってモチベーションを無理やり上げてやっていました。

syossan.hateblo.jp

あと、かたいなかさんが呟いていたこちらに反応した結果、後のゆるSRE勉強会を開くきっかけになったのも7月のトピックでした。

ちょうどSREについての勉強会ってもっと初心者向けというかゆるっとしたものはないかな〜?と考えていたりしたので、喜んで一緒にやることにしました。声をかけていただいたかたいなかさんには感謝です🙏
以前のコミュニティ活動で色々とあり、運営に関わるかどうか悩んだのですがやることにした心境についてはまたどこかで一筆書こうかと思います。(しずかなインターネットあたりで・・・

SRE NEXT 2023のプロポーザル受付が始まったのもこの時期ですね。今年はMIXI Tech Conferenceにも出たことですし、カンファレンスに登壇したいな〜という気持ちがちょうど高まっていた時でしたので練りに練ってプロポーザルを送りました。LTとかだと何かしらのTipsを持って帰って頂こうという気軽な感じで登壇できますが、カンファレンスの場合はもっと体系的な何かを持って帰ってもらうことを考えなければいけないので難しさが段違いでした。

8月

こちらの勉強会に参加したりしました。

offers.connpass.com

syossan.hateblo.jp

個人的に職種というものはあまり意味がないと思っていて、ワンチームで何かしらの問題に立ち向かうべきではあると思うんですよね。ただ、便宜上それでは得手不得手によって特定の人に負担がかかったり、専属チームを作ることにより相乗効果を生むために職種というものを作るというのは納得しているような側面があります。
そういった自分の考えとしてもこの勉強会が言わんとしていることは非常に納得感があり、満足感のある勉強会でありました🙏

他にも

findy.connpass.com

kinto-technologies.connpass.com

などにも参加させていただきました!

あとはFour Keysの取得に向けてアレコレやりだしたのもこの時期ですね。7月にGitHubがメトリクス取得のGitHub Actionsを出したことで、かなりFour Keysが取りやすくなったのでは?と思い、長らくTODOリストに積んでいたのを進めることに。
タスク優先度が常にガチャガチャ変わっていく中で、まだダッシュボードに反映するところまではいけてないのですが来年こそはやり切りたいですね・・・!

そして待望のゆるSRE勉強会の第一回目が開催できました!

yuru-sre.connpass.com

ありがたいことに多くの人にご参加いただけました。今までにも技術コミュニティを運営していたことがあったのですが、その中でも第一回目からここまで盛り上がるのは初めてのことだったので、SREの皆様の注目度が改めて感じられました。

9月

社内でGitHub Copilot導入に向けての機運が高まり、どのようにやっていくべきか?の取りまとめをやったりしておりました。最終的に年の瀬である今週に導入することができたので、来年からはチームの生産性が3000倍くらいになることを期待しております。

またTerraformを使ったIaCをやっていかないとなぁというお気持ちを長らく持っていましたが、ようやく動き出すことができました。まだ全てのIaC化は完了してはいないのですが、来年こそは・・・!こういう時にせめてあと一人SREポジションの人がいればなぁと思ったりします。

あとはGraphQLの一部クエリの速度改善にも着手しておりました。graphql-rubyを使っているのですが、レスポンスサイズが大きいクエリについてはサッパリ性能がでません。以前から認識していた問題ではあったのですが、結果としてはgraphql-ruby自体に手を入れないと何ともならんなぁというあまり喜ばしくない結果となりました。graphql-rubyにPR送るモチベーションも特に無いので、こういう時に代替ライブラリがない言語はめちゃくちゃ困りますね。(Goだとどれだけレスポンスサイズが大きくなってもレイテンシ増大しないのに、なんでこのライブラリはこうなの?ってissue読んで何かがポッキリ折れた

末にはSRE NEXT 2023の登壇がありました。SRE NEXTについての想いは以下に書いたのですが、そんな場に立てることができて光栄でした。

syossan.hateblo.jp

syossan.hateblo.jp

今年の登壇で持てるネタは割りと放出した感があるので、来年またプロポーザル送るかどうかは悩ましいですが是非ともトライはしてみたいです。

10月

GKEのPodから外へのアクセスに対して出口IPを固定したいというリクエストが来たので、その対応にSquidを使ったプロキシサーバーを建てることで対応したりしていました。

syossan.hateblo.jp

あとびっくりした事態といえば、Bitriseのワークフローが一つ謎にスタックして数十時間動いているという事態がありました。カスタマーサポートに連絡することで請求自体は事なきを得ましたが、いやはや心臓がキュッとなりました。

syossan.hateblo.jp

10月といえばゆるSRE勉強会の第二回を開催しました。

yuru-sre.connpass.com

第二回も変わらず多くの方にご参加頂いて感謝しかないです。第一回から引き続いて参加された方も多く、満足度の高い勉強会になって良かったと運営視点では安堵したりしていました。

また、プライベートではオクトーバーフェストに行ったりしました。ドイツの地ビールは苦味がキリッと効いていて良いですね!また来年も行きたい🍺

11月

以前に少し進めていたGitHub Copilotの導入について、もっと急いで!という上からの圧力を感じられたので進めることに。他部署でいち早く進めている部署がありましたので、残していただいていた資料を元に円滑に導入を進めることができました🙏
GitHub Enterprise Cloudへの移行という珍しいタスクをこなすことができて貴重な経験となりました。

syossan.hateblo.jp

弊チームではE2EテストにMagicPodを利用しているのですが、Flutter対応されたということでそちらの対応を進めていました。とはいえ、やったことはBitriseのワークフローを少し弄ってMagicPod向けのアプリをビルドしてQAチームに配信するといったことですね。

あとはコストについて見直す必要があり、GCを中心としたコスト見直しをすることになりました。開発を優先してこういったところはかなりおざなりになっていたので、無駄なところを是正する良い機会でした。今では30%ほどコスト最適化することができ、色々と知見を貯めることができました。

syossan.hateblo.jp

12月

ついに今月まで来ましたが、GitHub Copilotの導入について引き続き進めていたり、GMailのメール送信者ガイドラインに則ってDMARC対応を進めたりしておりました。

www.nri-secure.co.jp

正直メール周りは門外漢だったので、キャッチアップにかなり苦労しました・・・メール周りムズカシイ・・・

CloudNative Days Tokyo 2023に参加させていただいたのも記憶に新しいです。ゆるSRE勉強会にも参加されていた方が何人か登壇されていたりしたので、すごいな〜と思いながら拝聴させていただきました。

event.cloudnativedays.jp

ゆるSRE勉強会の第三回目も今月開催しました!

yuru-sre.connpass.com

インフルエンザも流行っていたのでキャンセルされる方が多くいらっしゃいましたが、それでも多くの方に参加いただき盛り上がりました!毎回、会の終わりに次回の開催予定を公開していましたが、今回はそれをせずに次回の開催はお楽しみに・・・という感じにしております。裏で色々と企画はしておりますのでお楽しみに!

まとめ

今年も振り返ってみると色々やったような、まだ足りないような・・・一人でやっているということを言い訳にせず、もっと1日1日の密度を濃くしてガンガン進めていかないとなぁと周りの皆さんの活動を見ていたら気が引き締まる思いです。

何はともあれ、自分ももういい歳ではあるので体調には気を付けて来年も更に頑張っていきたいです🙏