「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>FrontPage]] *目次 [#u07bf137] #contents *概要 [#g80e952d] SaaS設計のポイントを纏めている。 *[[企画]] [#mf191810] *マルチテナント対応 [#i82ccf3b] **データ [#o96490c2] ***分割キー [#m54dd84b] 店舗やユーザなどのIDでデータを水平分割する。 ***マスタ・テーブル [#s152a9c9] -各種設定情報 -分割キーにより店舗やユーザを識別。 -非構造化データが多くなる場合、JSONなどを使用する。 ***トランザクション・テーブル [#lbe30b37] -各種エントリ情報 -登録データ、分割キーにより店舗やユーザを識別。 -非構造化データが多くなる場合、JSONなどを使用する。 -集計対象のデータは予めスキーマを定義しておく。 **カスタマイズ [#xf865e8c] ***定義 [#sabc29ae] -システム共通 --定義ファイル ---*.config ---XML ---,etc. -ユーザ個別 --マスタ・テーブルに持たせる。 --スキーマ・レスの非構造化データを使用 ***プログラム [#zb7390ac] -カスタマイズはすべて定義で行うようにする。 -EUCでプログラムの追加は可能とする。 -マルチテナント時のプログラム追加をどうするか? --画面IDなどをGUIDにするなどして自由に追加可能にする。 --マスタ・データやトランザクション・データなどの付帯情報も増える。 ---分割キーで対応。 ---スキーマ・レスの非構造化データを使用。 **参考 [#ub7fcbe8] -マルチテナント データ アーキテクチャ~ https://msdn.microsoft.com/ja-jp/library/aa479086.aspx -知られざる「マルチテナントアーキテクチャ」 --(1)~SaaSはみんな同じではない? - Publickey~ http://www.publickey1.jp/blog/09/1saas.html --(2)~スケーラビリティのカギは組織ID - Publickey~ http://www.publickey1.jp/blog/09/2id.html --(3)~スキーマとメタデータの謎 - Publickey~ http://www.publickey1.jp/blog/09/3_2.html *UIサブシステムの選定 [#v92a5a26] **業務系 [#yddb9d8a] -エントリ画面やグラフ表示画面はASP.NET Web Forms **デザイン重視 [#yc4ab126] -デザイン重視のコンテンツ部分はASP.NET MVC **[[スマホ]] [#bdcc17e8] ***[[スマホネイティブ]] [#bdfe0b59] -[[HTML/CSS/JavaScript>#a4bb8288]]の操作性やグラフィックを上回る。 -フロントエンド多様化の中、サービスのデリバリーのために無視できなくなってきている。 ***[[レスポンシブデザイン>Bootstrap#l5082446]] [#a4bb8288] [[スマホネイティブ>#bdfe0b59]]を覚えるのが大変なので、~ [[HTML/CSS/JavaScript]]の[[レスポンシブデザイン>Bootstrap#l5082446]]で開発したいケースも多い。 ***[[ハイブリッドアプリ]] [#s8e096de] -マルチプラットフォームをターゲットとしたアプリケーション。 -[[HTML/CSS/JavaScript>#a4bb8288]]と[[スマホネイティブ>#bdfe0b59]]を組み合せて開発する。 -皮(側?)ネイティブと呼ばれる[[スマホネイティブ>#bdfe0b59]]の中に、~ [[WebView]]を使用して[[HTML/CSS/JavaScript>#a4bb8288]]をロードして機能する。 -自作の皮(側?)ネイティブだけではなく --[[Cordova (PhoneGap)>ハイブリッドアプリ#q74ad5ff]] --[[Monaca>ハイブリッドアプリ#e119c229]] >などのプロダクトも使用できる。 **[[チャット]] [#xacff86e] *[[要素技術]] [#t0e76655] **[[画像処理とコンピュータビジョン]] [#o0e2e1fd] **[[音声処理]] [#w614cfb6] *DBMSの選定 [#d05b3825] **PaaS [#t74cdb03] [[Google Cloud Platform]]のDB PaaSはMySQL **OSS-DB [#n72b9cf3] PostgreSQLに追い風。 ***MySQL [#n8a84726] -商標権・著作権はOracleが保有。 -グローバルでのシェアが大きい。 -マルチストレージエンジン --MyISAMストレージエンジン ---トランザクション機能なし。 ---検索性能を重視する。 ---全文検索が利用できる。 --InnoDBストレージエンジン ---高い堅牢性とMVCCによる高い並列性を兼ね備えている。 ---メディア障害時の更新ログによるリカバリが可能。 ---あらゆるアプリケーションに対応出来るストレージエンジンとなった。 -MySQLのデータプロバイダについては[[コチラ>https://techinfoofmicrosofttech.osscons.jp/index.php?ADO.NET%E3%83%87%E3%83%BC%E3%82%BF%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80#k23406ba]]。 ***PostgreSQL [#ybefde21] -日本でのシェアが大きい。 -ACID重視(日本の市場でトランザクション機能が重視されていたため) -PostgreSQLのデータプロバイダについては[[コチラ>https://techinfoofmicrosofttech.osscons.jp/index.php?ADO.NET%E3%83%87%E3%83%BC%E3%82%BF%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80#dad19e08]]。 ***参考 [#eed17fa0] -MySQLとPostgreSQLの違いを学んでみる。 - 青い空~ http://blog.goo.ne.jp/bluesky0077/e/70b851e84276f5958149630ca13efb17 -「PostgreSQL」が好調--Oracle DBの牙城に迫る? - ZDNet Japan~ http://japan.zdnet.com/article/35066741/ -DB-Engines Ranking - popularity ranking of database management systems~ http://db-engines.com/en/ranking -[[ADO.NETデータプロバイダ - マイクロソフト系技術情報 Wiki>https://techinfoofmicrosofttech.osscons.jp/index.php?ADO.NET%E3%83%87%E3%83%BC%E3%82%BF%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80]] *インフラ [#a4656209] **VM [#uf233794] ***Cloud [#k896abe7] -[[Google Cloud Platform]] -[[Microsoft Azure]] ***VPS [#s24f6aa5] 実はVPSも良いのではないかと思っている。 -Windows Serverが使えるVPSサービスを比較 | VPS-FAN~ http://vps-fan.com/windows_server/ --VPSサービス仕様 WindowsServerオプション:レンタルサーバー ABLENETのVPS~ エイブルネット・ホスティングの仮想専用サーバー 転送量無制限~ https://www.ablenet.jp/vps/spec/op_win.html --さくらのVPS for Windows Server~ http://solution.sakura.ad.jp/windows_vps/ **Web [#ldbc1e31] ***SSL [#f504ba7f] -[[Lets’s Encrypt]] -SSLサーバ証明書の料金比較と選び方総まとめ | ServerKurabe~ http://serverkurabe.com/ssl-matome/ *[[QandAAnalysisEngineの開発で検討したこと。]] [#y48dadaf]