Paas使って楽したい！
Paas上でのアンケートシステムの検証

有限会社ディアイピィ
代表取締役
野元 恒志

ディアイピィ会社概要

ディアイピィのミッション

企業プロフィール

オープンソースを組み合わせたシステム構築による短納期・低コストによる企業のIT活用の支援

有限会社ディアイピィ

1990年代後半からオープンソースを用いたシステム構築が行われる様になり、現在、インターネット上の7割にも及ぶサーバ（Webアプリケーションサーバ、DNSサーバ、メールサーバなど）がオープンソースで構築されております。
しかしながら、同時に、ご担当者の交代、取引ベンダーの変更などにより旧来システムを維持できなくなるケースが発生しております。
一方で、WindowsServerシステムとの親和性を考慮せず、目的と関係なく、Linux・UNIXなどで構築されてしまっているシステムも多数見受けられます。
こうした状況下で豊富なオープンソースでの経験とWindowsソリューションの適切な利用により、お客様の現状、ご予算に合わせたご提案を行って参ります。
ディアイピィでは、お客様の状況に合わせて的確なご提案を行い、既存ソースの解析・改修（既存資産の活用）から、大手メーカーや、大手Sierでは、算出できない数分の一の低コストにて最適な解をご提案して参ります

東京都文京区小石川1-3-17
Web Site http://www.d-ip.jp/TEL/FAX 03-3868-2260 / 03-3868-2065

設立
2003年7月25日
資本金 300万円
代表
野元 恒志
主要取引先
日本ハム株式会社
日本電気株式会社
日立情報通信エンジニアリング株式会社
ITエージェント株式会社
株式会社富士通マーケティング
株式会社J.D.Power Asia Pacific
株式会社ガリバー共同利用機関法人 高エネルギー加速器研究機構
長岡技術科学大学

メールを中心としたCRM活動を支援するオープンソースソリューション

メールを軸とした企業活動支援ソリューションをご提供致します。
○メールマガジン、お知らせなどのメール一斉配信○オンラインアンケート管理○メールによるお問合せ管理

オープンソースを用いることで最小限のコストからスタートさせることを可能と致します。

サービス始めました！

‫ ﻪ‬Chefによるデプロイ管理‫ ﻪ‬Nagiosでの監視‫ ﻪ‬OTRSでのサポートサイト構築

アンケートでもサービス始めたい！
アプリケーションによって求めるものが違う‫ ﻪ‬DIPの主力製品は、LimeSurveyとMailArchiva‫ ﻪ‬これらのサービス提供を検討してきた。
‫ ﻪ‬MailArchivaは、DB不要でディスクサイズが必要なため、Iaasベースが良いと判断。
問題は。。。。

悩み‫ﻪ‬

LimeSurveyは、LAMP（Apache、MySQL、PHP）製品で、サービス提供する際のサービス継続性、冗長化、これらに伴う運用コスト‫ﻪ‬‫ﻪ‬

既存の市場に対して、低価格で勝負したい少ない人数で、効率良く運用したい、ソフトのマルチテナント化？

‫ﻪ‬

何！NTTコミュニケーションズさんがやっぱ、Paasでしょう！

‫ﻪ‬

検証環境貸してくれると。

CloudFoundryベースのサービスが、既に登場している。 dotcloud、appfog、等など
OpenShiftはまだ過渡期にありそうだし、お願いします。m(__)m

‫ﻪ‬
‫ﻪ‬
‫ﻪ‬

それぞれそれなりに動かせたが、みんなAWSのEastやせいぜいシンガポール、、、、遅い
日本向けには厳しい、、、、

α検証環境、早速テスト主にやったこと・vmcコマンドのインストール
・ソースコード上の各パラメータ取得改変（DB接続情報）

・セッション情報をMySQLに格納
サポートが嬉しかった、αの検証環境なのに速攻答えが返ってきた

オブジェクトストレージはまだ。。。だった残念ソースコードpush###manifest.yml#### gem uninstall vmc

applications:# gem install vmc -v 0.3.18.:
framework:# yum install openssl-devel

name: php

# gem install caldecottinfo:# gem install eventmachine

exec:
description: PHP Application
mem: 128M$ vmc target api.tamac.io

instances: 1$ vmc login

name: dipsurvey$ vmc push

mem: 128M
url: ${name}.${target-base}services:・はやい

mysql-dipsurvey:

・やすい（安くなって欲しい）

type: mysql・うまいDB接続情報の反映///Cloud Foundry parameter///$dbinfo = json_decode($_SERVER["VCAP_SERVICES"],TRUE);$key = $dbinfo["mysql-5.1"][0]["credentials"];$databaselocation = $key["host"];$databasename= $key["name"];$databaseuser= $key["username"];$databasepass= $key["password"];セッションをMySQLへ。
<?php

if ($_sess_db = mysql_connect($db_host, $db_user, $db_pass))///Cloud Foundry parameter///{ return mysql_select_db($db_db, $_sess_db);}$dbinfo = json_decode($_SERVER["VCAP_SERVICES"],TRUE);

return FALSE;$key = $dbinfo["mysql-5.1"][0]["credentials"];$databaselocation= $key["host"];$databaseport= $key["port"];function _destroy($id){
global $_sess_db;}$id = mysql_real_escape_string($id);

function _close()$sql = "DELETE FROM sessions WHERE id = '$id'";{

return mysql_query($sql, $_sess_db);
global $_sess_db;}

return mysql_close($_sess_db);function _clean($max)$databasename= $key["name"];$databaseuser= $key["username"];}$databasepass= $key["password"];function _read($id)

global $_sess_db;{$old = time() - $max;{

define("SESSION_DB_HOST", "$databaselocation:$databaseport");global $_sess_db;$old = mysql_real_escape_string($old);

define("SESSION_DB_USER", "$databaseuser");$id = mysql_real_escape_string($id);$sql = "DELETE FROM sessions WHERE access < '$old'";

define("SESSION_DB_PASS", "$databasepass");$sql = "SELECT data FROM sessions WHERE id = '$id'";define("SESSION_DB_DB", "$databasename");if ($result = mysql_query($sql, $_sess_db))

}

{

?>

// ユーザ定義のセッションハンドラを使用

if (mysql_num_rows($result))

ini_set("session.save_handler", "user") or die("ini_set(session.save_handler) failed.");{$record = mysql_fetch_assoc($result);
return $record['data']; }}// セッションハンドラ関数を設定

return '';session_set_save_handler('_open', '_close', '_read', '_write', '_destroy', '_clean');// PHP5.0.5 以降は session_start() を呼ぶ前に必ずこれを実行//register_shutdown_function('session_write_close');}function _write($id, $data){
global $_sess_db;function _open()$access = time();{$id = mysql_real_escape_string($id);$access = mysql_real_escape_string($access);

global $_sess_db;$data = mysql_real_escape_string($data);$db_host = SESSION_DB_HOST;$sql = "REPLACE INTO sessions VALUES ('$id', '$access', '$data')";$db_user = SESSION_DB_USER;$db_pass = SESSION_DB_PASS;$db_db = SESSION_DB_DB;

return mysql_query($sql, $_sess_db);}

return mysql_query($sql, $_sess_db);期待・オブジェクトストレージ（s3fsなど使いたい）
・SMTP（ドメインの送信元としてSPF等設定したい）
・SSL

・課金代行
・管理画面の充実（VMCコマンド周りやインスタンスの拡張機能）

Paasの世界
オンライン販売

Paas・ソースコードのアップ
・販売情報管理
メールサーバ・ユーザーサポート

アプリケーションサーバ（LimeSurvey）

顧客ごとにプロジェクト分けてしまえば、マルチテナント用のコードいらないんじゃな
いか開発環境サムライクラウドにとってIDPの冗長化が楽クラウドサービサーをまたがる
DSの配置場所として最適
ガジェット作成者がサーバーを気にしなくて良いPaas・ソースコードのアップ
・販売情報管理
メールサーバ・ユーザーサポート

アプリケーションサーバ（LimeSurvey）

開発環境

ご清聴ありがとうございました。