2018-07-13

Laravelアプリはお手軽にscale outしないので注意が必要

Laravel で Form を利用して、エラーだった場合にそれをどう返すかのサンプルコードは 4.2 でも 5.6 でも以下のように

redirect で返すようになっている。

そして Form を組み立てる View 側では Input::old() を使うとよいということになっている。さっき入力していたデータを復元してあげないと不親切だからだ。

しかしこの組み合わせはクセモノ。

何が起きるかというと Session データに Form の Input すべてを載せることになるので、実質 Session Driver に Cookie は利用できない1。つまり、アプリケーションサーバだけでカジュアルに scale out することはできないということになる。

Session Driver はすべてバックエンドのストレージ前提になり、DBMS や memcached, Redis などが必要になる2。これらの準備が簡単なよくできた PaaS を使っているならよいが、そうでないならインフラの知識も必要になってしまうので、注意しておいた方がよさそうだ。

しかし、この Form の error を redirect で返す方法って Laravel のこのコードで初めて見たんだけど、こういう設計って推奨されるんですかねえ…?

  1. Input がどんな大きさになるのかはよほど注意深く作らないとコントロールできないだろう 

  2. 当たり前だが file は scale out しない。てゆーか DBMS に Session データを置くのも scale out しないような? 

About

例によって個人のなんちゃらです