名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

2021/09あたりからの今日までの振り返り

生存報告がてら。振り返り毎週しようとか書いた記憶があるのですが、現実はそうもいかず…。

9月くらいからやったことをいくつか書いておきます。

振り返り

Y

  • ISUCON参加しました
  • テスコン参加しました
    • 参加記まだ書いてるところ
  • PHPCon参加しました
    • まだDay1分までしか聞けておらず、まとまっていない
    • 全部書くと長いので自分が興味ある話とかで終わりそう
  • データベーススペシャリスト受けました
    • ちょっとスケジュール的に無理がありすぎて勉強できてない
    • 午後より午前のほうが不安
    • 次回に向けて自分の戦略記事を書く
  • その他勉強会を聞いたり聞かなかったりしている
    • ようやく聞く元気が出てきた
    • 発表もそのうちしたいけど、最近大きめの企業のトークばかり聞いているので、コミュニティのものを知らない
      • なんかまずそれを探したほうがいいかもしれない
      • 色々話せると思うので何か話題があればぜひ誘ってください…
  • OBSで遊んだり
    • 枠作ってみたり、資料を作ってみたり
    • ラジオ的なモノとかLT的なモノをやるもいいかもしれない
    • そのうちやる

W

  • なんか疲れた
    • 土日休めない日が多すぎて疲れ切っている
    • 最近、平日は早く起きて何もしてないことが多いのだが、あんまり無理しすぎないほうがいい気がする
      • 1日30分くらいだけ頑張るスタイルにするというか
  • ISUCONの壁の高さ
    • アイディアに対する技術の選択手段の幅が少ないと自分自身に対して感じる
    • そういうのをもっと知っていきたいし、復習していきたい
  • インプットに対してアウトプットを出すのが難しい
    • 聞いて満足している? のかもしれない
    • 聞くときに絶対メモを取っているので、ブログ書くまでに行かないことが多いかも
      • 自分の経験とか、状況に合わせて取ってあるアイディアとかもあって公開するのが微妙
      • 気が向いたら一気に出すかも
  • 他社の様子は参考になる
    • ISUCONのところもそうだけど、選択手段というか考えうる選択肢の目線が狭くなりがち
    • ありがたいので活かしていきたい
  • 興味軸がプログラミングの詳細から離れている時期に感じる
    • 言語がどうとか、フレームワークでどうこうとか、新しいサービスを試すとかに対して興味が落ちている
      • じゃあ言語のカンファレンスはなぜ出てるのといわれると単に惰性なのかもしれない(一貫性がないと感じる)
    • 手を動かすよりも座学や読書から学ぶことを増やす時期かもしれない

T

  • しっかりと休む
    • これからも土日の片方に予定が入る日が多いのだが、片方は一人でいるなりして休む時間にする
    • 良く寝る、良く運動する、息抜きをする
    • まあ頃合いをみつつ、どこかに行きたいかも
      • 最近はハイキング気分で高尾山登ることに興味がある
  • バックエンドの技術を深ぼりする
    • MySQLとNginxをもう少し固めたい
      • ISUCONのスコア上げたいとかもある
    • 後はキャッシュサーバー立てたり、素早く使ったり
    • 後はメトリクスの取り方とか
    • 全文検索とかもうまく適用する方法知らないので知りたい
      • 去年のISUCONで雑実装してスコア落としたりもした
    • やることが結構あるので、技術的なところの学習はいったんここベースでもいいかもしれない
  • 発表をなんかしたい
    • 漠然と思ってるだけ
  • プログラミングをしたい
    • 漠然と思ってるだけ
  • 資格試験の勉強…
    • AWS系のものに興味がある
      • 問題を軽く見て思った以上に知らなかったので、一番初歩のところからとっていくかも
      • 12月末 or 1月くらいをターゲットにする?
    • IPAの春試験も何か受けたいので年始くらいからふわっと準備するかも
      • ただ受けれてネットワークくらいかなと思ってる
      • 情報セキュリティマネジメントもいいなーとは思っている
    • そのほかもほどほどに

その他

  • ぼーっとしてたり、変にモチベーションが低かったりすることが増えた
    • 2021年、年始あたりから全力で走りすぎた感じがする
    • 転職までと、8月から今週の試験までがハードスケジュールすぎた
    • いわゆるHPもMPもない状態なのかも
  • 今週はゆっくりすることにした
    • 思ったよりゆっくりできてないかも
    • 温泉旅行とか行きたい、近場にあればいいのだが…

まとめ

いろいろあって経験が増えたことはいいのですが、体力的な限界はやはり感じるところがあります。 勉強会のメモを最初に投稿したいので、平日と休日で1本ずつくらい出せるように頑張ろうと思います…。

2021年9月のアウトプットと参加イベントを振り返り(Laprasから出したやつ)

コピペです。気持ち的なものはまた別の記事書きます。

というか勉強会とかで学んだことをまとめ切れていないので、ちょっとなーと思ってます。

そして試験勉強… はだめみたいですね…。

2021年9月のアウトプットと参加イベントを振り返ると

アウトプットしたものや参加したイベントなどをまとめてみました。

connpass

Blog等

Github

LAPRASポートフォリオはこちらから

ISUCON11の本選に参加してきました

undefinedとしてISUCON本遷に挑みました。

結果だけ見ると17位、55,533と振るいませんでしたが、良い経験になりました(賞ほしかった~~~~)。

前日

  • ワクチンの副反応でこの世の終わりを感じた
  • 21時くらいにテスコンの発表練習をする
    • これに関してはテスコンの振り返りで
  • 寝れない…
    • ワクチン接種→木曜日の夜から一日寝るをした結果、金曜日の4時過ぎくらいまで寝れなかった

当日

9:00

  • 予定より遅く起床した
  • テスコンのリハーサルに入る

10:00

  • ISUCONの決勝がスタート
  • 制約などの読み込み
  • アーキテクチャのチェック
    • lscpu とかして回った記憶がある
    • これは過去のISUCONの経験からCPU、メモリが異なるマシンが与えられてたケースがあったので一応確認した
    • 全部同じだった
  • アプリケーションを立ち上げてみて、軽く触ってみる
  • とりあえずRustに変更して、ベンチを回す
  • mosさんがDBをsource, replica構成の2台構成に変更し始める
  • pxfncさんがRustのコードを読み始める
  • 僕、nginxのセッティングなどをする
  • テーブル構造を眺める。特に変な点はない。

11:00

  • 僕、予定があるため中抜け
    • 11:30過ぎに戻った
  • mosさんがDBの2台構成に苦戦していた
  • pxfncさんが環境構築周りをしていた
  • 僕、MySqlのログを眺めて、遅そうなクエリやN+1クエリを探す
    • 結構同じようなクエリが流れているので N+1 クエリやばそうパターンだと考える
  • mosさんみながら僕がいろいろ調査
  • pxfncさんがDB接続先をsource, replicaにする実装を進める

12:00

  • 引き続きDB周り
    • ある程度動きそうな感じなのを見る
  • ベンチ回してまずいもの流れてないかいろいろ試す
  • mosさんがnot equal を in 句に変更
  • 僕、indexを雑に足す
  • pxfncさんとmosさんが履修登録周りを直し始める

13:00

  • pxfncさんとmosさんは履修登録周りで苦戦しているのを見る
  • 僕がDB負荷を見て、source側のDBはCPU100%で頭打ちしてるのに対し、replica側が15%くらいしか使えていないことに言及
    • replicaが正しく使えているのかちょっと心配になる
  • 僕がざっくりソースコードを読んで、N+1クエリと重そうなjoinしてるクエリを含んでいるリソースの一覧を出す
  • 一旦、この辺りからはN+1のこまごましているクエリを直す作戦になる

15:00

  • 履修登録周りがどうにかなる
  • 雑多なものを一部改善
    • ユーザー情報の取得でクエリ実行を辞める(sessionにコードを持たせる形にした)
    • コース取得時のN+1クエリを削減
    • select for shareを消してみる
  • 誤差レベルの修正を繰り返していたため、スコアが伸びず厳しくなってきた
  • 僕、zip書利回りを見るもあまり改善案が思いつかず…
    • pigz に至ったが、コア数の問題と手元で試していい感じに同等のコマンドにできなかったのであきらめる
    • 日頃からのツールの練習不足が響いている…

16:00

  • pxfncさんがアナウンスメントのinsertをbulkに変更
  • graph周りに手を付けないとこれはどうにもならないと判断して、僕が着手始める
    • Rustの型推論がわからなさ過ぎて、pxfncさんに型周りを聞きまくる
  • ファイルアップロード周りを何とかしないといけないと判断して、mos氏が着手を始める

17:00

  • どれもうまくいかない
    • 僕の改善では cource の group by クエリが結局重く、微妙な感じだった
      • mosさんが条件しぼるために in 句書いてくれていたけど、ベンチ落ちてしまったので結局入れられなかった
      • 結局これはあきらめて本流にマージせず…
    • mos氏がpigzと戯れていたりしたけど、難しそうという結論に至る
  • いろいろあきらめてログを切っていく
    • nginx, mysql, journal log...
    • これだけで7000点くらい上がった
  • 15分前くらいから再起動してみて問題ないことを確認して終了

18:00 以降

  • ワクチン接種の影響で、pxfncさんと僕は意識がもうろうとしていたので、YouTubeの配信が終わってからすぐ解散しました
  • gradeとzip圧縮、announce周りをcacheにするみたいな戦略は思いついたもののできなかったな~とか、3台目DBすいてたし、一部のリクエストはそっち流せばよかったんじゃないかな?とか、そういう反省をしていた

翌日

  • 17:00くらいから振り返りをする
    • 上位チームなどの戦略を読んだり、githubリポジトリを見に行ったり
    • Goは書けはしないが、読めはするので勉強になる
    • nginx設定、もう少し上位チームを参考にしようと思った
  • 18:00くらいから配信を見る
    • 体力が回付記しきってなかったので結構、意識がぼんやりしていた
    • 17位で、点数があるチームの中では下から2番目ではあったが、failedしなくてよかった
    • Rust使ってるもう1チームは18位のあのチームであるはずなので、Rust使ったチームの中では最高順位ということに一応なるのかなと思います
  • 懇親会が開かれていたみたいですが、非常に体がしんどかったので、配信見終わった後、結構すぐ寝てしまいました

今日

  • 懇親会のログとか眺めてほーんってなった
  • この振り返りを書いている

感想戦を見ていた限りの学び

  • 注力しなければいけないポイントについては見極めできていた
    • しかし対応するタイミングが遅かったので、何もできず…
    • graphとかは明らかにやばかったので、もっと見えているN+1クエリよりも優先してやればよかった
  • pdfのzipまわりについて
    • lnコマンドは知っていたものの、出てこず…(こういう時、実践力不足を感じる)
    • zip周りはコマンドを変更するのではなく、オプションを変更したりするのも手だった
      • 圧縮レベルの調整など
      • 圧縮時間と転送時間のバランスを考えた時に、チューニングするくらいはできたはず
    • 一時フォルダ
      • はい
  • graphの改善
    • Goの実装見てると全体のgpa計算は非同期でやっていて、あとで結果を取得する形にしてるチームが多かったように思う
      • 読んでみて確かにな~と思った
    • あとはなるべく1回でデータを取るための工夫を頑張らないといけない
  • announceの改善
    • 未読管理はcacheにする、はい
    • Redisを立ててつないで、みたいな経験がほぼなかったので完全に素振り不足だし、知識不足だった
    • ここだけ別のAppサーバに分けるのもあとから聞いて、自分たちの3台目をうまく使えていなかったことを感じた
  • ほか
    • nginx設定は上位チームから学ぼうと思う
  • 他の参加者が公開しているコードたちを読もう(ハッシュタグから拾ってきた)

くらいですかね…。わかっていてもやれなかったことが多かったのが悔しい点です。

あと予選でやれなかったことは引き続きできていないことだらけなので、来年に向けてまた復習していこうと思います。

とりあえずキャッシュサーバーを実用レベルで使えるようになりたいですね。

感想

他チームの方も触れていますが、本選はスコアが伸びにくいこともあり結構大変でした。

特にやった改善が1000~2000点程度の改善だと、ベンチの誤差範囲に収まるような程度であるので、改善したのかの判断も難しかったように思います。

また力不足を強く感じたのと、もっとやれる点がたくさんあるんだなと思えたのは本選に参加できて良かった点だと思います。

来年も同じチームで出るかはわかりませんが、来年に向けてのモチベーションは大きく高まったので頑張っていきたいです。

※ワクチン接種の関係で体調がよくなかったことや個人の都合など、いろいろありましたが、それらを差し引いてももっとやれたことはあるし、結構悔しい気持ちです。来年はそれらも万全にしておきたい。