Slide 1

Slide 1 text

© Copyright 2021 Relic Inc. All rights reserved. -BSBWFMͷηογϣϯ؅ཧͰϑϨʔϜϫʔΫͷ ΦʔόʔϥΠυ͕ඞཁʹͳͬͨ࿩ גࣜձࣾ3FMJDՏଜ ଠथ

Slide 2

Slide 2 text

ࣗݾ঺հ • 河村 太樹(かわむら たいき) • 株式会社Relic テクノロジープラットフォームグループ マネージャー • 主としている開発業務 • バックエンド開発 • インフラ構築・SRE • まれにVuexの部分も書いたり • 趣味 • バイク・ドライブ • 酒 • マンガ • キャンプ・BBQ • 軽い登⼭←New!!

Slide 3

Slide 3 text

෺ޠͷ࢝·Γ • ある⽇河村くんは某社にジョインし、2,3カ⽉後にリリースされる案件のPJに配属され ました • ⾯談では「インフラ構築得意です」と⾔っていたので検証環境と本番環境の構築も頼ま れました • 検証環境を作ったのでいじってもらったのですが、なんかセッションが保持されない! と⾔われました。確かに河村くんはインフラ構築やってきた⼈ですが、久しぶりに1か らのサービスで作ったので、「あぁ、ローカルじゃない複数台構成のときにどうするか 抜けてたわ」となったのでした・・・

Slide 4

Slide 4 text

-BSBWFM ʹݶΒͣ ͷηογϣϯσʔλ؅ཧํ๏ • file • cookie • database • memcached/redis • array • (Laravelにあるだけでリクエスト間で保持されないため、除外)

Slide 5

Slide 5 text

ͲΕΛ࢖͍·͔͢ʁ • file • 本番等で複数台サーバがあるときに、特定のサーバに⾏かないといけない • スティッキーセッションを使えば解決するけれども、インフラエンジニアとして は、そもそもWebサーバがステートフルである状態に精神が耐えられない • cookie • ⼀⾒楽そうだが、サイズに上限がある&実際に簡単に到達したので本番⽤途では 不適 • ブラウザによって異なるらしいが、4096byteが上限なのもあり、あてにはで きない • database • 無難案ではある • インフラエンジニアとしてはリレーショナルでもないデータをRDBで管理したく ない • memcached/redis • 難が⼀番なく、個⼈的におすすめ。

Slide 6

Slide 6 text

͡Ό͋3FEJTΛ࢖͓͏ʂ • 使えれば問題なかったが、のっぴきならない?事情で使えなかった

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Τϥʔ͕ग़ͨ

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

ࢀߟɿ$BDIF#BTFE'JMF4FTTJPO)BOEMFS

Slide 11

Slide 11 text

ࢀߟɿݩͷ%BUBCBTF4FTTJPO)BOEMFS

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

DatabaseSessionHandlerをオーバーライド

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

configのprovidersに登録する

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

͓஌Βͤ ൪એ • Relicのテクノロジープラットフォームグループ絶賛募集中です!! • バックエンドアプリケーション開発の経験がある⽅ • ミドルウェアセットアップ、チューニングの経験がある⽅ • AWSの経験がある⽅ • フロントも触れます、な⽅ • SREの領域だけでなく共通基盤開発、開発⽀援システムを作ったり作ろうとしたり • ⾯⽩ポイント • Relicはまだまだ成⻑途中で課題がいっぱいいっぱい • 解決したらきっと⼤幅⼯数減、売上増が⾒込める! • どこか特定の領域だけでなく、全体最適を求めます • X: 全部の知識を詳しく知ってほしい、フルスタックエンジニア • O: 抽象的に必要なことを求める思考⼒ • O: 問題定義、解決能⼒ • 割とチームができたばかりで、どういうチームにしていきたいか、していく べきか、から議論可能

Slide 20

Slide 20 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠