質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

1939閲覧

Laravel5.8 マルチユーザー系のサービスでアクセスが集中しそうな場所での処理について

paranoaman1217

総合スコア24

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2020/02/10 11:38

いつもお世話になっております。
Laravelで会員制のWebサービスを構築中です。
挙動としてはメルカリそのものといった感じのサービスです。

マルチユーザー系のサービスを1から構築するのは初めてで、「ロック」に関して調べているのですが非常に難しいと感じております。
一例として、商品に対して別のユーザーがコメントしてきた場合、コメントを受けた相手はコメントが来たアラートを
自分の商品情報に表示させるという仕様があります。
このアラートは詳細ページを踏むと削除されるようなシンプルな仕様ですが、詳細ページはアクセスが集中する事が予想され、アラートを削除するようなメソッドを裸のまま配置してよいのかどうか懸念しております。

public function show($id) { // コメント用アラートが存在したら削除 Alert::where('item_id', $id) ->where('user_id', Auth::user()->id) ->delete(); $item = Item::findOrFail($id);

上記のようなシンプルなdeleteメソッドですがアクセスが集中するような場所の場合、占有ロックをかける必要がある、など知見が足りず、何か良いドキュメント、参考書、または自分ならこうする、などご教示いただけないでしょうか。

環境:
Amazon Linux
Apache2.4
Laravel5.8
php 7.3
mySql 8.0

何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/11 01:29

ロックをかける最低限の基準はスレッドセーフの保証
guest

回答1

0

ベストアンサー

(排他)ロックをかける→他の人が商品情報を閲覧する度にロックがかかる
(共有)ロックをかける→テーブルが1個しか絡まなければ大丈夫なはず

詳細ページはアクセスが集中する事が予想され、アラートを削除するようなメソッドを裸のまま配置してよいのかどうか懸念しております。

非同期で処理した方がいいのでは?
詳細ページ内にお知らせ削除APIを叩くとか。

あとそもそもMySQLだけでメルカリ規模のトラフィックを捌く事は難しいので
RedisやMaster/Slave構成、場合によってはNoSQL、マルチAPサーバなど
考える事は多いです。インフラができる人を登用するのが早そうです

投稿2020/02/11 04:43

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

paranoaman1217

2020/02/11 12:07

ご回答いただきありがとうございます! 本件の稼働はMaster/Slave構成を想定しております。 公開後すぐにアクセスが集中するようなサービスにはならないと思われますが将来的にMySQLだけだと厳しいという事であれば、アラートのようなシンプルな構成の部分はNoSQLに持たせるなど必要に応じて導入を検討したいです。 >インフラができる人を登用するのが早そうです 確かにそれが早いとは思いますが、今回一人でやらないといけないためインフラ部分の知見が足りない私でなんとかしないといけない状況です。なんとか乗り越えて自分の肥やしにしたいところです。 入門書などで全然構わないのですがこれ読んでおくといいなどの参考書などはありませんでしょうか?
mikkame

2020/02/11 12:37

> 今回一人でやらないといけないためインフラ部分の知見が足りない私でなんとかしないといけない状況です。なんとか乗り越えて自分の肥やしにしたいところです。 こう書いてあると、本来コストを支払うべきところを無料で済まそうとしているように感じて回答するのが憚られるのですが ぶっちゃけフリマシステム、後発、予算極小なら伸びる可能性が極端に低いので高負荷時の事なんて考えなくていいのでは?
mikkame

2020/02/11 12:38

本に関しては支える技術シリーズとかよめばいいんじゃないですかね?
mikkame

2020/02/11 13:36 編集

補足です。 フリマは特にemptyroom問題を発生しやすいのでキツいと思います 売りたいユーザーを集めるには 買ってくれるユーザーを集めなくてはならなくて 買ってくれるユーザーを集めるには商品を集める必要があり 商品を集めるには売ってくれるユーザーが必要的な悪循環があり それを打開にするには 初期投資で多くのさくら出品や クーポンのばらまきが必要で もちろん広告費も必要。 1人に全て開発を任せるような予算しかないのなら伸びる可能性が低い。 受託ならコア機能だけ使ってささっと納品してしまった方が良いと思います PS. 言い方がきつかった様に思います、申し訳ないです。 意図としては予算がないなら皮算用するよりリリースしましょうってことです
paranoaman1217

2020/02/11 15:13

ご回答いただきありがとうございます! サービスに関しましては社外秘でして、サービス内容の概要をお伝えすることはできないのですが、当然エンドさんはメルカリやヤフオクのようなフリマ系のサービスとはまた違う顧客層でして、マーケッターが2年かけた集客モデルがあり仕込みは事前に入れております。 私もターゲットやサービス内容を伺いこの案件に携わることになり、私のスケジュール感で構築させていただいている状況です。現在はAWSの無料相談を受けながらサーバー構築を行なっている状態でして来月リリース予定です。 現在はリリースに向けて懸念点をなるべく消していきたくて、事前に気づけたところは調べて潰していっている状態なのですが、調べても出てこなかったりした時に質問させていただきヒントを得ているため非常に助かっております。 いつもありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問