SaaSã·ã¹ãã ãéçºãã¦ããã¿ãªãã¾ããå æ°ã§ããããã
SaaSã·ã¹ãã ã¨ããã¨ããããWebãµã¼ãã¹ãããããå°ãBtoBã®é°å²æ°ãæ¼ã£ã¦ã¾ããã¾ãã
SaaSã·ã¹ãã ã§ã¯å¥ç´è ï¼ããã§ã¯ããã³ãã¨å¼ã¶ï¼ãè¤æ°ãã¦ãããã³ãæ¯ã«è¤æ°ã®ãã°ã¤ã³ã¦ã¼ã¶ã¼ããã¼ã«ãåå¨ããã®ãä¸è¬çã§ããããã¦å½ç¶ãªããããã³ãæ¯ã®ãã¼ã¿ã¯æ¼æ´©ã»æ··æ¿ã許ãããªãé«ãã»ãã¥ãªãã£ãæ±ãããã¾ãã
SaaSã·ã¹ãã ã®æ§ç¯ã¯ã¹ã±ã¼ã©ããªãã£ã«ããã¦ã100ããã³ãç¨åº¦ããå§ã¾ãããããã¯æ°åãæ°ä¸ããã³ãã¾ã§å°ãªãã¨ãç·å½¢ã«ã¹ã±ã¼ã«ããã¢ã¼ããã¯ãã£ãéçºå½åããæ±ããããããã«çªçºçãªå¤§è¦æ¨¡ããã³ããåé¡ãªãå¸åãããã¨ããè¦æ±ãããã¾ãã
ãã®è¦æ±ãæºããè¨è¨ã»éçºã»ä¿å®ã»éç¨ããã£ã¦ããã®ã¯å½ç¶ãªããç°¡åã§ã¯ããã¾ããã
ã¨ããããã§ä»æ¥ã¯ãã«ãããã³ãã¢ã¼ããã¯ãã£ã®ã話ã§ãã
ä¸ã«åºãæ å ±ãã¨ã£ã¦ãå°ãªã
ãã«ãããã³ãã¢ã¼ããã¯ãã£ã¯BtoBé åã§å¿ è¦ã¨ããããã¨ãå¤ãæ§æã®ãããè¨è¨ã«é¢ããæ¦è¦ãããã®è©³ç´°ã«è³ãã¾ã§å社ãã¾ã表ã«åºããããã¾ããã æ å ±ãç©æ¥µçã«åºãã¦ããä¼æ¥ã¯æµ·å¤ã§ã¯SalesForceãå½å ã§ã¯ãµã¤ãã¦ãºã¨ãã£ãã¨ããã§ããããã
ããã£ã¨æ¤ç´¢ããã¨ä»¥ä¸ã®ãããªæ å ±ãã¦ã«ã¯ããã¾ãã
SalesForceã®ãã«ãããã³ãã¢ã¼ããã¯ãã£ãèèã®å®ç¸¾ããã¢ã¼ããã¯ãã£ã
ãµã¤ãã¦ãºã®ã¯ã©ã¦ãåºç¤ã®è§£èª¬ããµã¼ãã¹ã»ããã¨å¼ã°ããæ¦å¿µãå°å ¥ãã¦ããã
æåå³åã§ããç§ã®éå»è¨äºã§ããã¨ãããã«ãããã³ããµã¼ãã¹ã«ãããã¢ã¼ããã¯ãã£ã®ä¸ä¾ãããããç¥ããã¨ãã§ããã§ãããã
æ¥æ¬èªã§èªãããã«ãããã³ãã¢ã¼ããã¯ãã£ã®åé¡ããã®ä¸ã§èæ ®ãã¹ãé ç®ãæ´çããè¨äºã¨ãã¦ãIBM developerworks ã®ãã®è¨äºã¯å¤ããªãã§ãããã
Web アプリケーションをマルチテナント型 SaaS ソリューションに変換する
ç¹ã«ãã«ãããã³ãã¢ã¼ããã¯ãã£ã®åé¢ã¬ãã«ã¨ãã¦ä»¥ä¸ã®3ã¤ã«åé¡ã§ããã¨ããã®ã¯è¦ãã¦ããã¨ããã§ããï¼ä»¥ä¸å¼ç¨ï¼
- ã¯ã©ã¦ãå ã§ã®åç´ãªä»®æ³åã«ããããã¼ãã¦ã§ã¢ã®ã¿ãå ±æ
- 1ã¤ã®ã¢ããªã±ã¼ã·ã§ã³ã§ãããã³ããã¨ã«ç°ãªããã¼ã¿ãã¼ã¹ã使ç¨
- 1ã¤ã®ã¢ããªã±ã¼ã·ã§ã³ã§ãã¼ã¿ãã¼ã¹ãå ±æ (æãå¹ççãªçã®ãã«ãããã³ã·ã¼)
Salesforceã¯3ã®ã¿ã¤ããæ¡ç¨ãã¦ãã¾ãã
ç§ã®çµé¨ãããã«ãããã³ãã¢ã¼ããã¯ãã£
ç§èªèº«ãä»ã¾ã§æ°åº¦ã®ãã«ãããã³ãã¢ã¼ããã¯ãã£ã«ããã·ã¹ãã ã®æ§ç¯ãä»ä¼æ¥ã®ã¢ã¼ããã¯ãã£ã®å®è£ ã®èª¿æ»ããã¦ãã¾ãããã追æ±ãã¦ããã¨ãªããªãããããããã®ã§ãã
ç§ãçµé¨ãããã«ãããã³ãã¢ã¼ããã¯ãã£ã¯ãªã¼ã½ããã¯ã¹ãª2ã§ãã
顧客ãã¼ã¿ãå ¨ã¦ä¸ã¤ã®DBã«æ··ãã¦ãã¾ãã®ã¯ãã¼ã¿æ··æ¿ã®ãªã¹ã¯ãæãã®ã§DBã®æ©è½ã»ã¦ã¼ã¶ã¼ã§ãã¼ã¿ãåé¢ãã¦ãã¾ããã¿ã¼ã³ã§ãã
ã¾ããä¸ã®OSSã®Webãã¬ã¼ã ã¯ã¼ã¯ãDBãã¬ã¼ã ã¯ã¼ã¯(å«ãORããã)ã¯ããã¦ãã·ã³ã°ã«ããã³ãåæã«ä½ããã¦ãã¾ããããOSSã®æ©æµãåãã¤ã¤ãã«ãããã³ããå®ç¾ãããã¨ããã¨ã ããããã®é¸æã«ãªããã¨æãã¾ãã
Salesforceã®ãã«ãããã³ãã¢ã¼ããã¯ãã£
Salesforceãè¤æ°ããã³ãã1DBã«ã¹ãã¢ããã¢ã¼ããã¯ãã£ãé¸æããã¨ããã®ã¯ãã¢ããªã±ã¼ã·ã§ã³ã¬ã¤ã¤ã§ã®ããã³ãã®ãã¼ã¿åé¢ã«ã¤ãã¦é常ã«å¼·åãªãã¬ã¼ã ã¯ã¼ã¯ãèªç¤¾ã§æ§ç¯ãã¦ããããããé¸æã§ããã®ã§ã¯ãªãããªãã¨æãã¾ãã ã¾ããéçºææçã«Oracleã§å¤§éã®ã¹ãã¼ããä½ãã®ã¯ç¾å®çã§ã¯ãªãã£ãã¨ããæ代èæ¯ãããã®ããç¥ãã¾ããã
ã¢ããªã±ã¼ã·ã§ã³ã¬ã¤ã¤ã§ããã³ãã®ãã¼ã¿ãåé¢ããã¨ãå¤æ°ã®ããã³ãã«å°ãªããªã½ã¼ã¹ã§ãµã¼ãã¹æä¾ã§ããã¨ããè¨ããã¾ããã
IBMã®è¨äºã§ããæãå¹ççãªçã®ãã«ãããã³ã·ã¼ããªã©ã¨è¨ããã¡ãã£ã¦ã¾ãã
éçºæã®èæ ®ãã¹ãç¹
ãã¦ãç§ããã«ãããã³ãã·ã¹ãã ã®æ§ç¯ã«ããã£ã¦ããããã¹ãã ãªã¨æã£ã¦ãããã¨ã«ã¤ãã¦ã¤ãã¤ãã¨æ¸ãã¦ããã¾ãã ãã¼ã¹ã«ãã¦ãããã«ãããã³ãã¢ã¼ããã¯ãã£ã®å®ç¾ææ³ã¯2(ããã³ãæ¯ã«ãã¼ã¿ãã¼ã¹ãåé¢)ã§ãã
ããã³ãæ¯ã«ãã¡ã¤ã³ãåãããã°ã¤ã³ç»é¢ãåããã
URLã®ãã¡ã¤ã³ã¯ããã³ãæ¯ã«ã§ããéãåããããã«ãã¾ãããã
åä¸ãã¡ã¤ã³ã ã¨Cookieã«ä¿åããã»ãã·ã§ã³IDã®ãã¼åãåãã ã¨ä»ã®ããã³ãã¨æ··ãã£ã¦ã¯ããããã¾ããã ã客æ§ã¯è¤æ°å¥ç´ãã¦ãã ãã£ã¦ãããã³ãAã¨ããã³ãBã«åæã«ãã°ã¤ã³ãããã¨æãããããã¾ããã
ã¯ã¤ã«ãã«ã¼ã証ææ¸ã§ *.example.com ãåã£ã¦ãã㦠tennant1.example.com, tennant2.example.com ãªã©ã¨ããã®ãããã§ãããã
ç¹å®ããã³ãã ãå ¨ãå¥ã®ãã¡ã¤ã³ã«ããããã¨ããJavaScriptã®ã»ãã¥ãªãã£ã ã¨ããç¹å®ã¯ã©ã¤ã¢ã³ãã ãå¥åºç¤ã«æ¯ãã¨ããIPã¢ãã¬ã¹å¶éã¨ãããããã®ãããããããªãã¾ãã ä¸çªã¡ãªããã¨ãã¦å¤§ããã®ã¯DBãå¼ããã¨ãã©ã®ããã³ãããã®ã¢ã¯ã»ã¹ãåºå¥ã§ããã®ã§é害調æ»ãã¢ããªã¬ã¤ã¤ã®FWãä½ãããããªãäºã§ãããã
æ´å²ã®ããSaaSã·ã¹ãã ã ã¨ææçã«ãããããã¨ãèæ ®ãã¦æ§ç¯ã§ããªãã£ãå ´åãããã¾ãããä»ããæ§ç¯ãããªãåããã»ããè¦å´ãå°ãªãã§ãããã
DBã®æ¥ç¶å ã®åãæ¿ãã¯ã¦ã¼ã¶ã¼ã®ãªã¯ã¨ã¹ããå¦çããæåã®æ®µéã§ãã¬ã¼ã ã¯ã¼ã¯ã¬ãã«ã§è¡ã
ã¿ã¤ãã«ãå ¨ã¦ã§ããã
ã¢ããªã±ã¼ã·ã§ã³ã¬ã¤ã¤ã§éçºããã¨ãã«ãèªåãã©ã®ããã³ãã®ãã¼ã¿ãå¦çãã¦ããããã©ã®DBã«æ¥ç¶ãã¦ããããæèããªãã¨ãããªãã¨ãªãã¨éçºè ã®ãã£ãããã¹ã§ãã¼ã¿ã®æ··æ¿ãçºçããå¯è½æ§ãã¨ã£ã¦ãé«ããªãã¾ãã
ãã«ãããã³ãã¢ã¼ããã¯ãã£ã®æ¹å¼è¨è¨ãããéã¯ãæ éãªã¢ã¼ããã¯ãã§å± ãããå¿ããã¾ããããéçºè ãæèããªãã¦ããã¼ã¿ãæ··æ¿ããªããã¬ã¼ã ã¯ã¼ã¯ãä½ãããããã¨ãã¨ã¦ã大åã§ãã
ã¾ãããã¬ã¼ã ã¯ã¼ã¯è¨è¨æã«ã¯ãªã¯ã¨ã¹ãå®äºæã«ã¯ãã®ã³ãã¯ã·ã§ã³ãå¿ãã close ãã¦ããã®ãå®å¿ã§ãã ãªããã³ãã¯ã·ã§ã³åãæ¿ãããã¾ãè¡ãããååã®ãªã¯ã¨ã¹ãæã«å©ç¨ããã³ãã¯ã·ã§ã³ã使ãã¾ããããããã¨å°ã£ããã¨ã«ãªãã¾ãã
ã³ãã¯ã·ã§ã³ç¢ºç«ã³ã¹ãã®é«ãRDBMSã§ã¯ã³ãã¯ã·ã§ã³ãã¼ã«ãç¨æããã
PostgreSQLã®ãã¨ã§ããMySQLã§ã¯ãããããã¨ãèããã¨ãååã³ãã¯ã·ã§ã³ç¢ºç«ã³ã¹ããä½ãã§ãããPostgreSQLã¯ã³ãã¯ã·ã§ã³ç¢ºç«ã³ã¹ããé«ãããã³ãã¯ã·ã§ã³ãã¼ã«ãå°å ¥ããªãã¨ã¢ã¯ã»ã¹æ°ã®å¤ããµã¼ãã¹ã§ã¯èãããã¾ããã
ããããã«ãããã³ã対å¿ããã³ãã¯ã·ã§ã³ãã¼ã«ã¨ããã®ã¯ãã»ã©å¤ãããã¾ããããã«ãããã³ã対å¿ããã³ãã¯ã·ã§ã³ãã¼ã«ã¨ã¯ã1ããã³ã(ã¹ãã¼ã)ãããæ大30ã³ãã¯ã·ã§ã³ãã³ãã¯ã·ã§ã³ãã¼ã«å ¨ä½ã§500ã³ãã¯ã·ã§ã³ã¨ãã£ãå¶éã®ãããããã³ãã¯ã·ã§ã³ãã¼ã«ã®äºã§ãã
Javaã§ã¯ãã®ãããªè¦ä»¶ã«å¯¾ãã¦ãããããã³ãã¯ã·ã§ã³ãã¼ã«è£½åã¯æ®å¿µãªããããã¾ããã Javaã®ã³ãã¯ã·ã§ã³ãã¼ãªã³ã°è£½åã¨ã¯ CommonsDBCP, HikariCP, TomcatCP, C3CP çã®äºã§ãã ç§ã®èª¿æ»ã§ã¯å¤é¨ã³ãã¯ã·ã§ã³ãã¼ã«è£½åã® pgPool2 ãªã©ã¯ãã®è¦ä»¶ãæºããããæçµçã« pgbouncer ãããã ããã¨ããçµè«ã«ãªãã¾ããã
è¤éãªã¯ã¨ãªãçºè¡ãã BtoB ã·ã¹ãã ãä½ããªã PostgreSQL ã使ãããã¨ããã§ãããã³ãã¯ã·ã§ã³ãã¼ã«å¨ãã¯æ©ã¾ãããªãäºãå¢ããã®ã§ããèãã¾ãããã
ããã³ãã®ãã¼ã¿ãå¦çãã¦ãããã°ã«ã¯ããã³ããç¹å®ã§ãããã¼ãåºãããã«ããã
ããã¯ãã¾ã¨ãã«éç¨ãããã¨ããæå¿ãããã°å½ç¶æãã¤ããã¨ã§ããã
ããã³ãæ¯ã®ã³ãã¯ã·ã§ã³ã確ç«ããã®ã¨åãã¿ã¤ãã³ã°ã§ãªã¯ã¨ã¹ãã¹ã³ã¼ãã®å¤æ°ã«å ¥ãã¦ãã°åºåæã«å¿ ãåºåãããããã«ãã¾ãããã Javaã®Loggerã§ããã°MDCãªã©ãç¨ãã¦å®ç¾ããã®ãããã§ãããã
ãã°ã¤ã³ã«ã¤ãã¦ã¯SSOã®ä»çµã¿ããªãã¹ãåãã¦ããã
èªç¤¾ãµã¼ãã¹ã¨ãã¦ãã«ãããã³ããµã¼ãã¹ãéçºããéãä½åãããã®ã§ããã°SSOã®ä»çµã¿ã¯æåããèæ ®ãã¦æ§ç¯ãããã¨ã«ãã¾ãããã
ç¹ã«ããªãã®ä¼ç¤¾ããã«ãããã³ããµã¼ãã¹ãè¤æ°æä¾ããäºå®ãããã®ã§ããã°ããã¯ãã£ã¦ãããã»ããè¯ããã¨ã§ãã
ããä¼ç¤¾ãããªãã®ãµã¼ãã¹Aã¨ãµã¼ãã¹Bãå¥ç´ãããã¨èããæãããããã®ãã°ã¤ã³IDããã¹ã¯ã¼ããçºè¡ããå©ç¨ã¦ã¼ã¶ã¼æ å ±ãç»é²ããæéãèãã¦ã¿ã¾ããããã²ã³ããªã§ããã
ä¸ã«ããæ§ã 㪠ActiveDirectory, LDAP, OpenID Connect, SAML ãªã©ãªã©ã¸ã®å¯¾å¿ã¯ãµã¼ãã¹ãæåãã¦ããã§ãæ§ããªãã¨æãã¾ãããã¨ã«ããã¢ã«ã¦ã³ãæ å ±ã¯ä¸ç®æã«ã¾ã¨ããã®ãããããã§ãã
ãã®ãããããã¼ã©ãããããµã¼ãã¹ãè¤æ°ã®è£½å群ãæ®åå¾ã«SSOã®ãã¼ã³ãã«æåããã¾ããããè¯ãç¥è¦ã»è¦è§£ãªã©ãããããã§ãä¸åº¦ãã®ãããã®ã話ã詳ãããèããã¦ã¿ãããã®ã§ãã
ã¯ã©ã¼ã¿ã»ã¹ããããªã³ã°
ãã¦ããã«ãããã³ãã®éç¨ã§èµ·ããè¾ããã¨ã¯ãããç¹å®ã®ããã³ããå¤ãã®ãªã½ã¼ã¹ãå©ç¨ããããã«ãä»ã®ããã³ããå²ãé£ããã¨ãããã¨ã§ãã
ã§ãå ¬å¹³æ§ããªãã¹ãé«ãããã¨ããã¨ã¯ã©ã¼ã¿ã»ã¹ããããªã³ã°ãªã©ã®ä»çµã¿ããã«ãããã³ãã·ã¹ãã ã«çµã¿è¾¼ã¿ããã¨ãã解決çã«æ¹ããããã¨ã«ãªãã¾ãã
ããããå®éã®ã¨ãã IaaS ãªã©ã®ãããªè¨ç®è³æºãç´æ¥æä¾ãããªãããç¥ãããSaaSã§ãã®ãããªå¶éãå ããã®ã¯å®éãã©ããå¤ãï¼ç¥è¦å°ãªãã®ã§ãããã³ãæ¯ã®ãªã½ã¼ã¹ä½¿ç¨ãè¨æ¸¬ã ãã§ããããã«ãã¦æåã¯éç¨ãµãã¼ãã§ãããããããªããã¨æã£ã¦ãã¾ãã
SalesForce ã¯ããã®ã¨ããã¯ã¡ããã¨ã¬ããå¶éã¨ããå½¢ã§ç¨æããã¦ããããããã¯èèã ãªãã¨ããæã¯ããã¾ããã
ç²ãã¦ããã®ã§ä»æ¥ã¯ããã¾ã§
ãã®è¨äºã¯æ¬æ¥GWã«æãä¸ããäºå®ã ã£ãã®ã§ãããæ¸ãçµãããªãã£ãã®ã§æ¾ç½®ããã¦ãããã®ã§ãã
å æ¥ã®åå¼·ä¼ã§ããã«ãããã³ãã¢ã¼ããã¯ãã£ãæé«ã«é¢ç½ãã®ã§ã¿ããªã¨è©±ããããã¨è¨ã£ãã®ãã®ã®ãé¢ç½ããä¼ãã£ã¦ãªãã¨ã¤ã¾ããªãã®ã§åãæ¥ãã§ãå ¬éãã¦ãã¾ããã¨ãããã¨ã§å ¬éãããã¨ã«ãã¾ããã
ä»ã«ã以ä¸ã®ãããªäºãç´¹ä»ãããã¨æã£ã¦ãã¾ããããããã¯ä»å¾ããã«ãããã³ãã¢ã¼ããã¯ãã£å¤§å¥½ãããªä»²éãã§ãã¦ããã¨ãããã¨ã«ãããã¨æãã¾ãã
- éè² è·æã®æã«ç¹å®ãã¡ã¤ã³ã®ãªã¯ã¨ã¹ãã ãå¥ãµã¼ãã¼ã«ãµããããã«ãã¦ããã
- DBã®ãã¤ã°ã¬ã¼ã·ã§ã³ã¯ããã³ãæ°ã ããããã®ã§ä½æ¥æéã®è¦ç©ããå°é£ãç¡åæ¢ã§ãªãªã¼ã¹ãããªããªãã¹ãä»ãããã¼ãã«ã«å½±é¿ãåã¼ããªãããå¥ãã¼ãã«ã«ãããã
- ããã³ãã®ãã¼ã¿ã¯DBã¤ã³ã¹ã¿ã³ã¹ã¸ã®ä¾åãæ¸ãããç¹å®ããã³ãã ãå¥DBã¤ã³ã¹ã¿ã³ã¹ã«ç§»åãããã¨ãå¯è½ã«ãã¦ããã(大è¦æ¨¡é¡§å®¢å¯¾å¿)
- 課é対象é ç®ã®è¨æ¸¬ã®ä»çµã¿ãèãã¦ãã
- ä¼æ¢ã解ç´ãã¡ã³ããã³ã¹ã縮éãªã©æ£å¸¸ç¨¼åæ以å¤ã®ç¶æ ãè¨è¨ãã
ã¿ããªã§æé«ã®ãã«ãããã³ãã¢ã¼ããã¯ãã£ã®ç¥è¦ãå ±æããé害ã®ãªãSaaSåæ¥åã·ã¹ãã ãä¸ãå¸å·»ããä¸çãç®æããï¼