Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Laravelのセッション管理でフレームワークの オーバーライドが必要になった話

Laravelのセッション管理でフレームワークの オーバーライドが必要になった話

3c1e5dafee78fafd7c8d780d2a0830c3?s=128

TaikiKawamura

October 11, 2021
Tweet

Other Decks in Programming

Transcript

  1. © Copyright 2021 Relic Inc. All rights reserved. -BSBWFMͷηογϣϯ؅ཧͰϑϨʔϜϫʔΫͷ ΦʔόʔϥΠυ͕ඞཁʹͳͬͨ࿩

    גࣜձࣾ3FMJDՏଜ ଠथ
  2. ࣗݾ঺հ  • 河村 太樹(かわむら たいき) • 株式会社Relic テクノロジープラットフォームグループ マネージャー

    • 主としている開発業務 • バックエンド開発 • インフラ構築・SRE • まれにVuexの部分も書いたり • 趣味 • バイク・ドライブ • 酒 • マンガ • キャンプ・BBQ • 軽い登⼭←New!!
  3.  ෺ޠͷ࢝·Γ • ある⽇河村くんは某社にジョインし、2,3カ⽉後にリリースされる案件のPJに配属され ました • ⾯談では「インフラ構築得意です」と⾔っていたので検証環境と本番環境の構築も頼ま れました • 検証環境を作ったのでいじってもらったのですが、なんかセッションが保持されない!

    と⾔われました。確かに河村くんはインフラ構築やってきた⼈ですが、久しぶりに1か らのサービスで作ったので、「あぁ、ローカルじゃない複数台構成のときにどうするか 抜けてたわ」となったのでした・・・
  4.  -BSBWFM ʹݶΒͣ ͷηογϣϯσʔλ؅ཧํ๏ • file • cookie • database

    • memcached/redis • array • (Laravelにあるだけでリクエスト間で保持されないため、除外)
  5. ͲΕΛ࢖͍·͔͢ʁ  • file • 本番等で複数台サーバがあるときに、特定のサーバに⾏かないといけない • スティッキーセッションを使えば解決するけれども、インフラエンジニアとして は、そもそもWebサーバがステートフルである状態に精神が耐えられない •

    cookie • ⼀⾒楽そうだが、サイズに上限がある&実際に簡単に到達したので本番⽤途では 不適 • ブラウザによって異なるらしいが、4096byteが上限なのもあり、あてにはで きない • database • 無難案ではある • インフラエンジニアとしてはリレーショナルでもないデータをRDBで管理したく ない • memcached/redis • 難が⼀番なく、個⼈的におすすめ。
  6. ͡Ό͋3FEJTΛ࢖͓͏ʂ  • 使えれば問題なかったが、のっぴきならない?事情で使えなかった

  7. ͡Ό͋EBUBCBTFΛ࢖͓͏  • 苦悩の始まりだった

  8. Τϥʔ͕ग़ͨ 

  9. Կ͕ىͬͨ͜ʁ  • Databaseでセッションを管理するときだけ、なぜか頑張ってセッションには必要な さそうなデータを取得しようとする • このサービスではユーザと管理者のセッションを両⽅管理していた • 取りたいデータがとれなかった •

    どちらかがなければ・・・
  10. ࢀߟɿ$BDIF#BTFE'JMF4FTTJPO)BOEMFS 

  11. ࢀߟɿݩͷ%BUBCBTF4FTTJPO)BOEMFS 

  12. Ͳ͏΍ͬͯղܾͨ͠ʁ  • DatabaseSessionHandlerをオーバーライド • SessionServiceProvidorを作り、オーバーライドしたSessionHandlerを使うように指 定する • configのprovidersに登録する •

    sessionのドライバーにオーバーライドしたドライバーを指定する
  13. DatabaseSessionHandlerをオーバーライド 

  14. DatabaseSessionHandlerをオーバーライド(元) 

  15. SessionServiceProvidorを作り、オーバーライ ドしたSessionHandlerを使うように指定する 

  16. configのprovidersに登録する 

  17. sessionのドライバーにオーバーライドしたドラ イバーを指定する 

  18. ·ͱΊ  • セッションデータ管理はRedisとかを使いましょう(笑) • のっぴきならない事情があったらオーバーライドしたドライバを依存性注⼊しま しょう!

  19. ͓஌Βͤ ൪એ  • Relicのテクノロジープラットフォームグループ絶賛募集中です!! • バックエンドアプリケーション開発の経験がある⽅ • ミドルウェアセットアップ、チューニングの経験がある⽅ •

    AWSの経験がある⽅ • フロントも触れます、な⽅ • SREの領域だけでなく共通基盤開発、開発⽀援システムを作ったり作ろうとしたり • ⾯⽩ポイント • Relicはまだまだ成⻑途中で課題がいっぱいいっぱい • 解決したらきっと⼤幅⼯数減、売上増が⾒込める! • どこか特定の領域だけでなく、全体最適を求めます • X: 全部の知識を詳しく知ってほしい、フルスタックエンジニア • O: 抽象的に必要なことを求める思考⼒ • O: 問題定義、解決能⼒ • 割とチームができたばかりで、どういうチームにしていきたいか、していく べきか、から議論可能
  20. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠