FY2023 1Qの仕事を振り返った。
GitHub のGraphQLを使ってアウトプットを抽出して内容を振り返っていく。
使ったクエリ
query ($me: String!, $orgId: ID!, $from: DateTime!, $to: DateTime!, $count: Int!) {
user(login: $me) {
contributionsCollection(from: $from, to: $to, organizationID: $orgId) {
pullRequestContributions(last: $count, orderBy: {direction: ASC}) {
totalCount
pageInfo {
hasNextPage
hasPreviousPage
}
nodes {
pullRequest {
title
url
reviewDecision
latestReviews(last: 100) {
nodes {
author {
login
}
}
}
createdAt
closedAt
}
}
}
pullRequestReviewContributions(last: 100, orderBy: {direction: ASC}) {
totalCount
pageInfo {
hasNextPage
hasPreviousPage
}
nodes {
pullRequestReview {
url
pullRequest {
title
url
author {
login
}
}
submittedAt
}
}
}
}
}
}
variables
{
"me": "isanasan",
"orgId": "<会社のorgのID>",
"from": "2023-04-01T00:00:00+09:00",
"to": "2023-06-30T24:59:59+09:00",
"count": 100
}
使ったシェル
pbpaste | jq '.data.user.contributionsCollection | {"prs": {"data":[.pullRequestContributions.nodes[].pullRequest]}, "reviews": {"data": [.pullRequestReviewContributions.nodes[].pullRequestReview | select((.pullRequest.author.login != "mookjp") and .pullRequest.author.login != "github-actions") ]} } | {"prs": {"total": .prs.data | length, "data": [.prs.data] }, "reviews": {"total": .reviews.data | length, "data": [.reviews.data[] | {"title": .pullRequest.title, "url": .pullRequest.url, "author": .pullRequest.author.login, "submittedAt": .submittedAt} ]} }' > output.json
参考文献
GitHub の GraphQL API Explorer を使って自分の活動の振り返りをする - mookjp.io
Overview
- マージしたPR数は174
- 一日あたり平均マージ数 2.9 = 174 / 3(ヶ月) * 20(日)
主に作ったPR
- PHP-FPMコンテナのnginxコンテナの分離
- CakePHP4バージョンアップ対応
- PHPStanの導入と運用
- Datadog RUMの設定改善
- AWS WAFの設定改善
- 環境事に分離していたDockerfileを一つにまとめた
- [[nginx]] と AWS ALB の設定をチューニング
- 不要な社内システムの削除
- deadコードの削除
- AWS Providerのバージョンアップ
- スロークエリ対応
- 管理画面の認証認可の実装
PR以外にやった仕事
- [[Dependabot]] の導入と継続的な依存パッケージバージョンアップのための当番制ルールの運用
- [[Datadog]] 活用のためのイネーブリング活動
- 入門監視の読書会を企画
- アラート棚卸し会の設定
- SRE領域の負債返済デーの設定
振り返りメモ
- マージできる差分はどんどんmasterに入れていくスタイルで開発しているため見掛け上のPR数はかなり多い
- 本当にちょっとした内容のPRも多いので数字だけでこなした仕事量を評価することはできない
- 一個一個のタスクをdoneに出来るので仕事はしやすい
- 出戻りも少ないので仕事のペースとしてはこれくらいが良い
- 1コンテナ1プロセスの構成にする対応について
- dockerが提唱するベストプラクティスではあるものの必ずしも1コンテナ1プロセスでなければならないと思っている訳ではない
- 本番実績もあるし管理するコンテナの数が減るのでnginx と PHP-FPMを同一のコンテナでホストするのはメリットもある
- 今の現場ではログ管理まわりに課題が多い
- この課題を改善する上では一歩ずつ問題に取り組むためにnginx と PHP-FPMは分離している方が都合がよかった
- 最終的には1つのコンテナに戻す判断もありだと思っている
- この時にterraformやECSについてかなりキャッチアップすることが出来た
- Dockerfileの共通化について
- 環境ごとにDockerfileが分離しており、4つのDockerfileを管理する体制だった
- コンテナイメージに手を加える時にリスクが大きく、実際に障害が出たこともあった
- これはコンテナアプリケーションを運用するメリットがほとんど失われている状態だったと言える
- これを改善することが出来た
- 得た知見を元に、zennの記事も書いた
- そこそこいいねが付いてうれしかった
- nginx とALBのチューニングについて
- 詳しくは書けないがサーバーが不安定になることがちょくちょくあったので設定をチューニングした
- 今までPHPとバックエンドの開発を主体に仕事をしてきたのでかなりがんばってnginx のキャッチアップをした
- 前述のコンテナ周りの改善でも設定を触ることがあったので今Qではnginxに対する学びも沢山得ることができた
- [[Dependabot]] の導入について
- 継続的にPHPのバージョンを上げていくためには、まず継続的に依存パッケージのバージョンを上げていかなければならない
- デカいサービスを運用しているのパッケージ更新の作業コストもバカにならないので当番制にしてエンジニア組織全員に対応してもらう運用にした
- 良い感じの運用ルールを作ったり説明会を開いたり事前に根回ししたり色々やった
- 自分はこういう動きは全然苦じゃない
- 当番制にすれば運用コストを下げられそうなネタはまだあるので今年度は引き続きこういう動きをしていく予定
- 入門監視読書会について
- 監視とモニタリングについて組織的な課題を感じていたので企画した
- 自分自身もあまり詳しくない領域だった
- 書いてある内容は愚直に実践する、というコンセプトで企画した
- アラート棚卸し会を設定したのは本に書いてあったから
- チーム内に読書会文化があるとコンテキストを揃えられるのでそういう面でもメリットが大きい
- 読書会も継続したい
まとめ
terraform, Datadog, AWS, Docker, nginx等のSRE領域について沢山手を動かし学んだ1Qだった。 とても充実したQだったと思う。仕事を通して学び続けることが一番コスパが良いと思っているのでこれからも領域には拘らずに手を動かしていきたい。 課題としては、アウトカムに直結するような動きができておらず、人事評価という面だとかなり厳しいことが予想されるので、もう少し事業責任者にも分かりやすいアウトプットなりメトリクスの設定が必要だと思っている。例えばインフラコスト削減とか。
tags: #review #quarter