はじめに
2025年9月26日〜9月27日に開かれていたKaigi on Rails2025に参加してきました!
エンジニアになってから始めてこういった現地イベントに参加させていただいたので、せっかくなので記事を書かせていただきたいと思います!
day1
そのpreloadは必要?──見過ごされたpreloadが技術的負債として爆発した日
概要としては
- ある日突然500番台のエラーが急増し、サーバーが次々と落ち始めた
- 特定のAPIを呼び出す際にOOMが発生し、プロセスが落ちていた
- 各サーバーには1GBのメモリが割り当てられていたが、不要なpreloadが単独で400MB超のメモリを消費
- 過去の仕様では必要だったpreloadが設計方針の変更などにより、不要なデータを大量に読み込んで取得していた
- 複数のリクエストが同時実行されることで、サーバー全体がメモリ不足に陥った
といったお話でした。
私の知識ではとりあえず関連情報を取得する際にはpreloadをするといった考えがあったので、こういった問題があるのかと勉強になりました。
Railsによる人工的「設計」入門
初心者は何か開発をする時に実装をベースに考えてしまいがち
しかし、そうすると重要な課題があらい出せない状態で始まり本当に解決したい課題や重要な課題があらい出せず、手戻りが発生してしまう。そのため、設計というものは何か?どういった考え方をすればいいのか?といった内容でした。
私自身、業務で実装から考えており、確かにエンドユーザー目線で考えられず手戻りが発生することが多々あったので、こういった設計の考え方(設計を知っている人と知らない人の考え方の違い)がわかりました。
day2
ActiveRecord使いが知るべき世界
ORM:プログラム上のオブジェクトとRDBのレコード変換を簡略化するライブラリ
各言語のORMの挙動についてまとめてくださっていました。
業務では主にJavaとRubyを使用していて、よく考えると確かにRubyで書きやすいよな〜と思いました。今まで意識していなかったので、こういった比較とか新しいORMがでたら試してみたいと思います。
Sidekiq その前に:Webアプリケーションにおける非同期ジョブ設計原則
非同期ジョブはCPUやメモリリソースをすぐに解放でき、他のジョブが待たされにくいといった利点がありつつも、同期処理と比較して設計が複雑になったりデメリットもある。
一件につき1ジョブの設計を基本としたり、数秒以内で終わる処理を目指し、リトライ可能な設計にする。
私も業務で非同期処理を作成したのですが、数秒以内で終わる処理ではなかったのでそういった観点でも今度非同期処理を作成する際には、意識したいと思います。
全体の感想
始めて参加したイベントなのですが、Railsを使用している最前線の企業様たちのお話を濃い密度で聞くことができ、とても良い経験になりました。登壇者の方ともお話ができたので、こういった現地での体験というのも今後意識して行きたいです。