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

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

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

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

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

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

Q&A

解決済

1回答

1663閲覧

クラウドサービス運用における、新機能追加やバグFIX時の全サイトへの展開方法

qasev

総合スコア60

MySQL

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

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

PHP

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

0グッド

0クリップ

投稿2016/05/30 16:52

編集2016/05/30 17:02

背景

Symfony2を使い、ある予約システムのクラウドサービス展開を検討しています。

前提

・データは全て当方にて管理(顧客サイトからはリンクで飛んでくるイメージ)
・サブドメイン形式(https://userA.ドメイン名/)
・負荷分散させるため複数サーバーを使用する予定(レンタルサーバー)

上記を実現するため、ドメインはXREAで取得し、DNSレコードをサブドメイン毎に設定し、
複数サーバーに割り当てる方式を検討しています。

疑問

WEBサービスであるということで、サービス提供後に新機能を追加したい場合やバグフィックスしたい場合が必ず出てくると思っています。
しかし、サブドメイン形式であるとサブドメイン毎(1サイト)にサーバーデータ、DBをデプロイすることになるため、
例えば100サイト運用していく場合は100サイト分デプロイしなければならないのか・・?という点が正直全く分かっておりません。

この手のWEBサービスの開発経験は全く無いため、うまく運用する方法は存在するのではと思っています。
例えば、Backlogはサブドメイン形式でスペースを割り当てる形式だったかと思います。

・どこかにメインデータ、メインDB(言い方は合っていないと思います)を格納しておき、
スペース作成(サブドメイン作成)時にそこから引っ張る。
・メインデータ、メインDBをアップデートし、全サイトに適用する何らかの仕組み

少し考えてみて思い浮かぶ方法(実現できるかは別として)は上記です。
恐らく色々と見当違いなのではと思っています。

参考サイトやご助言をいただきたく、何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

現状の情報から私が設計するなら以下の様なかんじでしょうか。

選定するクラウドサービスはAWS
理由としては色々ありますが、

  • フルスタックで比較的安価にサポートしてくれるような業者が複数存在すること
  • Route53やRDS、ELB、S3などの機能がかなり安価に使い始められること(それ前提で新規に設計出来る場合)

あたりを考えると、エンタープライズ用途でのスモールスタートとしては現状、ほぼ一択だと思っています。

その上で構成としては
ELB(ロードバランサー)
の下にn台のwebサーバを設置し、負荷によってスケールアウトするようにする。(AWSならごく簡単に可能)
展開されるソースコードは1つとし、全てのリクエストはそこで受け付ける。
DBはRDS(MultiAZ)にして冗長性を確保した上で、スナップショットを日時でとる(これも簡単)
という感じにし、

DB内のデータベースは顧客毎に分ける(可能であれば一つのデータベースの方がメンテナンス性が高いが、設
計難易度、特にパフォーマンスの確保が大変になる)
顧客別の情報は原則としてDBに格納し、それが難しい場合は非公開のディレクトリに格納して、それを顧客のサブドメインごとに読み出せるような仕組みを作る。

アプリケーション的には
virtualhostで[https://userA.ドメイン名/]を全て一つのコントローラーで受けるようにして、userAをGET値としてsymfonyに渡す。
*symfony2でマルチドメイン対応の機能や定石/ライブラリがあるならそれを使う

symfonyでは「UserA」を受け取ったらそこからデータベース接続情報を取得し、顧客情報のデータベースを取得して、アプリケーションを動かす。

とすれば、割と色々な要件に柔軟に対応でき、かつ可用性を最大限に高められるかなと思います。

投稿2016/05/30 17:51

tanat

総合スコア18709

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

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

qasev

2016/05/30 18:34

まさに的確なご回答をいただきまして、誠にありがとうございます。 DBが特に難しそうですね。 共通DBと、個別DBと分けたほうがいいのかもしれませんね。 AWSは確かに、これなのかな、、とは薄々思っていましたが、月数万円はかかると勝手に思っていたため足踏みしてしまっていました。EC2やらS3、RDSなど、結局何があればいいのか?という所で思考がストップしていました。 サーバー周りはド素人ですが、無料期間が1年あるようなので試行錯誤も含め検討してみます。 しがない個人事業主のためAWS業者に依頼する金銭的な余裕がない(相場観が分かりませんが)ので、独学でやってみようと思います。
tanat

2016/05/30 19:21

本当にマイクロスタートだと、VPSを借りるのがコストパフォーマンス的にはいいですね。性能だけで見たら2000円/月くらいのプランでもかなりのトラフィックは捌けます。 AWS上記の形だと、同じくらいのトラフィックを捌くのに1-2万円はかかってしまいます。 が、これくらいの値段で殆ど何も考えずにかなり固い可用性を確保出来るというメリットは計り知れないので、出来れば最初からAWSで、コスト的に辛ければ最初はVPSでサービスインするが、AWSでの運用/移行を意識した設計をするといいかもしれませんね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問