VOYAGE GROUP エンジニアブログ

voyagegroup_techのブログ
VOYAGE GROUPエンジニアブログです。

2011年10月

Treasure2011終了&振り返り

こんにちは。VOYAGE GROUP内定者の宗岡です。
ついこの間まで残暑厳しい日々だったのに、急に寒くなってすっかり秋の気配を感じる季節になりました。
気づけばTreasureが終わって1ヶ月経っていました。時が経つのが早すぎてびっくりします。
僕は去年はこのTreasureに参加者として、今年はTAとして参加させていただきました。

両方を経験した上で、個人的に感じたTreasureの魅力を3つ書いてみようと思います。

【全員が本気の1ヶ月】
去年参加していたとき、これだけの人数がいて、なぜ誰1人として怠けたりせずに
全員が本気でこのインターンに取り組むことが出来ているのだろうかと不思議に感じていました。

今回、TAという立場で見てみると、答えは色々な人たちが本気だったからだと感じました。
1人1人の体調や進捗を考慮しながら全体感を調整したり
毎日快適に作業出来るシステムを用意してくれたり
皆が理解しやすいように噛み砕いて講義を行ったり、全員分の課題を毎日チェックしたり
士気を上げるためのアイスブレイクを用意してくれたり
個人のレベル感を運営側で共有し、それぞれにあった方針を考えたり
集中力が切れるくらいの絶妙なタイミングで美味しいお菓子を差し入れてくれたりと
参加者からは見えない部分で、多くの社員さんや、TA達が本気でこのインターンに
取り組んでいるからこそ、参加者の皆もひたすら目の前のプログラミングに集中できて、
驚くべき成長を実感出来るのだと思います。
P1080357


【素晴しい仲間に出会う】
実は、Treasureが終わるとちょうどマッシュアップアワードという
アプリコンテストの季節がやってきます。
去年もそうでしたが、今年も参加者の何人かでグループを作ってWEBアプリを作るそうです。

普段の学校での生活とかでも、こういった動きは生まれるかもしれませんが
情報系を専攻していない学生にとってはなかなか一緒にやる仲間と出会う機会はありませんし
仲間が集まったとしても、最高のチームになれるかは分かりません。
ただ、この1ヶ月を共有した仲間達なら、お互いの性格も熟知している上に
意見の衝突も恐れない関係が構築されているので、そんな仲間達とチームを組めば
面白いモノが作れると思います。

こんな風に、インターンが終わった後に自然と「コンテストに出よう!」「新しいサービスを作ろう!」
「勉強会を開こう」といった動きが出てくるような仲間に出会えるというのは
Treasureの大きな魅力の1つだと思います。
P1080190



【世界が広がる】
素晴しい人の周りには自然と魅力的な人が集まってくるものです。
Treasureで出会った仲間の周りにもそんな人達がゴロゴロいて
参加者はその人達とも繋がれるチャンスがある訳です。

実際に去年は、その出会いからサービスを立ち上げたり
一緒にWEBサイトを作ったりと大きく世界が広がりました。
また、参加者だけではなく、社員さんとも交流をもてるので
一緒にデブサミに出てハッカソンをした仲間なんかもいたりしました。
今年も、これからどんな動きが出てくるのか楽しみです。


最後になりましたが、参加してくれたみんな、Treasureの運営に関わった社員の方々、TAのみんな
本当にありがとうございました。
自分にとっても最高の1ヶ月が過ごせましたし、いい刺激をたくさん受ける事が出来ました。
参加者のみんなのこれからの成長も楽しみにしています。


また、もし少しでもWEBに興味があったり、仲間と何か成し遂げたい!と考えてる学生さんがいたら
このTreasureに参加してみることをオススメします。
きっと素敵な経験が出来ると思います。

P1080365

VOYAGE GROUPのロゴの配色イメージを変えてみた

こんにちは、VOYAGE GROUPの水越(@Akiyah)です。

来月、色彩検定を受けようとしてて、現在勉強中です。色彩検定はお仕事とは直接関係なくて、趣味なんです。私はエンジニアなんですが、社内にはデザイナーもたくさんいて、デザイナーの人に『なんでエンジニアなのに色彩検定受けるの?』といわれることもありますが、まあ、なんとなく、趣味なんですよ。

そこで勉強のついでに、2011年10月1日の社名変更を記念して、VOYAGE GROUPの新しいロゴを10個の代表的な配色イメージにしたがって変えてみました。
細かいことは考えずに、配色イメージのリストを見て、機械的に色を変えましたよ。

注意:会社の方針として、ロゴの色の配色を変える使い方はNGなので、以下はあくまでもここだけの配色の実験です。

VOYAGE-GROUP_black オリジナルのロゴ
VOYAGE-GROUP_1 エレガント(女性的な、気品のある、洗練された、優雅な)
VOYAGE-GROUP_2 カジュアル(明るい、活発な、親しみやすい)
VOYAGE-GROUP_3 クラシック(重厚な、円熟した、伝統的な)
VOYAGE-GROUP_4 クリア(明るい、さわやかな、透明感のある)
VOYAGE-GROUP_5 シック(渋い、洗練された、大人っぽい)
VOYAGE-GROUP_6 ダイナミック(強い、はっきりした、派手な)
VOYAGE-GROUP_7 ウォームナチュラル(穏やかな、素朴な、温もりのある)
VOYAGE-GROUP_8 フレッシュナチュラル(若々しい、新鮮な、さわやかな)
VOYAGE-GROUP_9 モダン(現代的、人工的)
VOYAGE-GROUP_10 ロマンティック(かわいい、可憐な、愛らしい)

どれが好きですか?あたりまえですが、オリジナルのロゴはやっぱりいいですね。その他だとクリアがいいでしょうか。ダイナミックもなかなかいいですね。
色だけ変えるとしっくりこないのは当然で、色を変えたらフォントや文字の色、大きさも変更しないと統一感がなくなっちゃうんですよね。ほかの配色イメージでもフォントや文字の大きさを調整すればもっと素敵なロゴを作れると思います。

ところで、色彩の教科書によると日本の企業のコーポレートカラーは赤系と青系が8割を越えて、続いて緑、黄となっています。
一方、VOYAGE GROUPのコーポレートカラーは黒です。他とはちがう色を選択するというのも、
VOYAGE GROUPの社風なのかもしれません。

FizzBuzz問題をデータ解析環境「R」で

こんにちは、VOYAGE GROUPの水越(@Akiyah)です。
いま話題のFizzBuzz問題をデータ解析環境「R」で書いてみました。

メインの参考ページはここです。
FizzBuzz問題を使って社内プログラミングコンテストを開催してみた - ITは芸術だ
仕様
・1から順番に数をコマンドプロンプト/ターミナルに表示する。
・その数が3で割り切れるなら"Fizz“
・5で割り切れるなら"Buzz“
・両方で割り切れるなら"FizzBuzz"と表示する。
まずは上記のページで紹介されているperl版をほぼそのままRに移植してみます。
args <- commandArgs()
endval <- args[6]

for (i in 1:endval) {
    fizz = i %% 3
    buzz = i %% 5

    if (fizz == 0 && buzz == 0) {
        cat("FizzBuzz")
    }
    else if (fizz == 0) {
        cat("Fizz")
    }
    else if (buzz == 0) {
        cat("Buzz")
    }
    else {
        cat(i)
    }
    cat("\n")
}
Rというなじみのない言語ですが、コードはいたって普通ですね。<-は代入で、catは画面表示する関数です。
このファイルをfizzbuzz.rというファイルに保存して、Rscriptコマンドで実行します。(この記事書くまでRファイルをコマンドラインから実行する方法を知りませんでした! Rでは環境に入って作業するのが普通なのです。)
$ Rscript fizzbuzz.r 20
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
もとのperl版からほとんど変えずに動きました。よかったよかった。
さて、Rらしく変更してみます。
args <- commandArgs()
endval <- args[6] i <- 1:endval x <- i x[i%%3==0] <- "Fizz" x[i%%5==0] <- "Buzz" x[i%%3==0 & i%%5==0] <- "FizzBuzz" cat(paste(x, collapse="\n")) cat("\n")
だいぶ短くなりましたね。実行結果はまったく同じです。
ちょっと解説しますね。Rのベクトル(配列みたいなものです)はまとめて演算したり、条件を判断して新しいベクトルを作ることができます。下記はRコマンドでRの実行環境に移動して試しています。
> i <- 1:20
> i
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> i%%3
 [1] 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2
> i%%3==0
 [1] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
[13] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
そしてベクトルの[ ](インデックス)にベクトルを入れたり、それをつかって<-でまとめて値を変更したりできるのです。
> x <- 1:20
> x[i%%3==0]
[1]  3  6  9 12 15 18
> x[i%%3==0] <- "Fizz"
> x
 [1] "1"    "2"    "Fizz" "4"    "5"    "Fizz" "7"    "8"    "Fizz" "10"  
[11] "11"   "Fizz" "13"   "14"   "Fizz" "16"   "17"   "Fizz" "19"   "20"  
このベクトル操作を利用して、ベクトルの3、5、15の倍数の時の値を変更したのです。実は『
FizzBuzz R』で検索するとたくさん見つかって、R業界ではFizzBuzz問題は有名みたいです。上に書いた例と同様のコードも見つかりました。考えてみると、FizzBuzz問題はRの得意分野なんですよね。

参考
The R Project for Statistical Computing
FizzBuzz問題を使って社内プログラミングコンテストを開催してみた - ITは芸術だ
FizzBuzz問題をJavaScriptで - jsdo.it - Share JavaScript, HTML5 and CSS
Fizz-Buzz問題 初級Q&A アーカイブ(7) - RjpWiki

やっぱりioDriveは優秀だった! MySQL編

こんにちは、DBAの三浦(@hironomiu)です。

ひょんなことからサービス利用前のioDrive(80G)で検証する機会を取れました。
(ioDrive自体は販売初期の頃からサービスで使っていたりします。)

fusion-powered-io
スペック情報等は下記のfusionioのサイトを参照頂ければと思います。
http://www.fusionio.com/platforms/iodrive/
 
今回は前々からMySQLのDiskとしてどのくらいのパフォーマンスが出るのか興味があったので軽く動かしてみました。
サービス利用前とあるように時間が相当限られていたのでioDrive
(80G)に最適なOS、FileSystemの選定
カーネル、my.cnf等の細かいチューニングは行っておらず、情報の採取についても代表的なものしか行っていません。

比較の対象としてioDrive
(80G)と同モデルのIAサーバでDiskをHDD(4玉 RAID1+0)のものと三浦の検証用のPCに挿したSSD(X25-E Extreme 64G)を用いてみました。
こちらも上記の通り、同一条件ではありませんので、改めて厳密な性能検証では無くioDriveスゲー的な記事である点をご了承下さい。

システムの主な設定
 ・OSは全てCentOS5.5(64bit)
 ・FileSystemはioDrive
(80G)SSD(X25-E Extreme 64G)はext3、HDD(4玉RAID1+0)はxfs
 ・ext3にはfstabで
noatime,data=writebackを設定
 ・I/Oスケジューラ(/sys/block/~/queue/schedulerはnoopで統一
 ・I/Oキュー(/sys/block/~/queue/nr_requests)は1000で統一

MySQLの主な設定(全て統一)
 ・バージョンは5.5.8
 ・レプリケーションは行わない(スタンドアロン)
 ・バイナリログの取得は行わない
 ・
innodb_buffer_pool_size=128M
 ・
skip_innodb_doublewrite
 ・
query_cache_size=0
 ・innodb_read_io_threads= 4
 ・innodb_write_io_threads= 4

読込み性能
まずは読込み性能 hdparmを各10回取得しました。
ioDrive(80G)
[1] Timing buffered disk reads: 2034 MB in 3.00 seconds = 677.49 MB/sec
[2] Timing buffered disk reads: 2034 MB in 3.00 seconds = 677.47 MB/sec
[3] Timing buffered disk reads: 2034 MB in 3.00 seconds = 677.53 MB/sec
[4] Timing buffered disk reads: 2034 MB in 3.00 seconds = 677.85 MB/sec
[5] Timing buffered disk reads: 2034 MB in 3.00 seconds = 677.90 MB/sec
[6] Timing buffered disk reads: 2034 MB in 3.00 seconds = 677.67 MB/sec
[7] Timing buffered disk reads: 1946 MB in 3.00 seconds = 648.60 MB/sec
[8] Timing buffered disk reads: 2036 MB in 3.00 seconds = 678.16 MB/sec
[9] Timing buffered disk reads: 2034 MB in 3.00 seconds = 677.72 MB/sec
[10] Timing buffered disk reads: 2034 MB in 3.00 seconds = 677.53 MB/sec
SSD(X25-E Extreme 64G
[1] Timing buffered disk reads: 100 MB in 0.51 seconds = 197.56 MB/sec
[2] Timing buffered disk reads: 100 MB in 0.50 seconds = 201.26 MB/sec
[3] Timing buffered disk reads: 100 MB in 0.50 seconds = 199.96 MB/sec
[4] Timing buffered disk reads: 100 MB in 0.50 seconds = 201.40 MB/sec
[5] Timing buffered disk reads: 100 MB in 0.50 seconds = 201.32 MB/sec
[6] Timing buffered disk reads: 100 MB in 0.50 seconds = 199.57 MB/sec
[7] Timing buffered disk reads: 100 MB in 0.50 seconds = 201.51 MB/sec
[8] Timing buffered disk reads: 100 MB in 0.50 seconds = 199.67 MB/sec
[9] Timing buffered disk reads: 100 MB in 0.50 seconds = 201.43 MB/sec
[10]Timing buffered disk reads: 100 MB in 0.50 seconds = 200.47 MB/sec
HDD(4玉RAID1+0)
[1] Timing buffered disk reads: 926 MB in 3.00 seconds = 308.63 MB/sec
[2] Timing buffered disk reads: 890 MB in 3.00 seconds = 296.49 MB/sec
[3] Timing buffered disk reads: 908 MB in 3.01 seconds = 301.95 MB/sec
[4] Timing buffered disk reads: 906 MB in 3.00 seconds = 301.70 MB/sec
[5] Timing buffered disk reads: 918 MB in 3.01 seconds = 305.21 MB/sec
[6] Timing buffered disk reads: 896 MB in 3.00 seconds = 298.20 MB/sec
[7] Timing buffered disk reads: 910 MB in 3.00 seconds = 302.98 MB/sec
[8] Timing buffered disk reads: 904 MB in 3.00 seconds = 300.97 MB/sec
[9] Timing buffered disk reads: 924 MB in 3.01 seconds = 307.06 MB/sec
[10] Timing buffered disk reads: 904 MB in 3.01 seconds = 300.75 MB/sec
平均(MB/sec)
ioDrive(80G)SSD(X25-E Extreme 64GHDD(4玉RAID1+0)
674.792 200.415 302.394

もうちょっとioDriveが行くかなと思いましたが、それでも十分早いですね。

書込み性能
次に書込み性能 ddを1Gbyteで各10回取得しました。
ioDrive(80G)
[1] 1073741824 bytes (1.1 GB) copied, 1.16875 seconds, 919 MB/s
[2] 1073741824 bytes (1.1 GB) copied, 1.19023 seconds, 902 MB/s
[3] 1073741824 bytes (1.1 GB) copied, 1.19167 seconds, 901 MB/s
[4] 1073741824 bytes (1.1 GB) copied, 1.49715 seconds, 717 MB/s
[5] 1073741824 bytes (1.1 GB) copied, 1.45808 seconds, 736 MB/s
[6] 1073741824 bytes (1.1 GB) copied, 1.4612 seconds, 735 MB/s
[7] 1073741824 bytes (1.1 GB) copied, 1.42681 seconds, 753 MB/s
[8] 1073741824 bytes (1.1 GB) copied, 1.46143 seconds, 735 MB/s
[9] 1073741824 bytes (1.1 GB) copied, 1.46766 seconds, 732 MB/s
[10] 1073741824 bytes (1.1 GB) copied, 1.46032 seconds, 735 MB/s
SSD(X25-E Extreme 64G
[1] 1073741824 bytes (1.1 GB) copied, 0.89152 seconds, 1.2 GB/s
[2] 1073741824 bytes (1.1 GB) copied, 1.64124 seconds, 654 MB/s
[3] 1073741824 bytes (1.1 GB) copied, 1.31282 seconds, 818 MB/s
[4] 1073741824 bytes (1.1 GB) copied, 1.39209 seconds, 771 MB/s
[5] 1073741824 bytes (1.1 GB) copied, 1.483 seconds, 724 MB/s
[6] 1073741824 bytes (1.1 GB) copied, 1.74863 seconds, 614 MB/s
[7] 1073741824 bytes (1.1 GB) copied, 2.06978 seconds, 519 MB/s
[8] 1073741824 bytes (1.1 GB) copied, 1.90353 seconds, 564 MB/s
[9] 1073741824 bytes (1.1 GB) copied, 1.41756 seconds, 757 MB/s
[10] 1073741824 bytes (1.1 GB) copied, 2.16436 seconds, 496 MB/s
HDD(4玉RAID1+0)
[1] 1073741824 bytes (1.1 GB) copied, 1.29015 seconds, 832 MB/s
[2] 1073741824 bytes (1.1 GB) copied, 1.31637 seconds, 816 MB/s
[3] 1073741824 bytes (1.1 GB) copied, 1.27612 seconds, 841 MB/s
[4] 1073741824 bytes (1.1 GB) copied, 1.42499 seconds, 754 MB/s
[5] 1073741824 bytes (1.1 GB) copied, 1.84404 seconds, 582 MB/s
[6] 1073741824 bytes (1.1 GB) copied, 1.92831 seconds, 557 MB/s
[7] 1073741824 bytes (1.1 GB) copied, 1.36545 seconds, 786 MB/s
[8] 1073741824 bytes (1.1 GB) copied, 1.28768 seconds, 834 MB/s
[9] 1073741824 bytes (1.1 GB) copied, 1.33781 seconds, 803 MB/s
[10] 1073741824 bytes (1.1 GB) copied, 1.29652 seconds, 828 MB/s
平均(MB/s)
ioDrive(80G)SSD(X25-E Extreme 64GHDD(4玉RAID1+0)
786.5 711.7 763.3

シーケンシャルな書込みでは差が見受けられませんでした。

ランダムI/0(bonnie++)についてはパスしました。

次にmysqlをインストールし、「JdbcRunner - 汎用データベース負荷テストツール」を使用させて頂いて性能を取得しました。
結果の見方については下記の製作者:Sadao Hiratsukaさんのサイトを参照頂ければと思います。
http://hp.vector.co.jp/authors/VA052413/jdbcrunner/

テストシナリオはtpccで下記設定で各4回の結果を採用しました。
Warmup time          : 10 sec
Measurement time : 60 sec
Number of tx types : 5
Number of agents : 200
Connection pool size : 200
Statement cache size : 40
Auto commit : false
Sleep time : 0,0,0,0,0 msec

今回結果はTotal tx countを抜粋しました。
ioDrive(80G)
[Total tx count] 3495,3614,358,331,328 tx
[Total tx count] 3594,3577,375,368,354 tx
[Total tx count] 3717,3665,401,393,358 tx
[Total tx count] 3509,3459,361,369,355 tx
SSD(X25-E Extreme 64G
[Total tx count] 1524,1472,137,146,152 tx
[Total tx count] 1591,1558,182,163,144 tx
[Total tx count] 1619,1461,147,175,133 tx
[Total tx count] 1532,1357,122,172,158 tx
HDD(4玉RAID1+0)
[Total tx count] 2889,2772,276,282,282 tx
[Total tx count] 2785,2822,283,284,282 tx
[Total tx count] 2866,2818,266,274,280 tx
[Total tx count] 2735,2700,283,300,249 tx

こう見るとHDD(4玉RAID1+0)も結構がんばってるな~と見えるんですが、下記はjdbcrunnerで検証中のmpstatの抜粋です。(文字数の都合でSSD(X25-E Extreme 64Gは省略しました。)

ioDrive(80G)
18時34分42秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
18時34分43秒 all 13.23 0.00 2.66 3.99 0.25 1.00 0.00 78.87 19248.51
18時34分43秒 0 7.92 0.00 0.99 2.97 0.00 0.00 0.00 88.12 992.08
18時34分43秒 1 19.80 0.00 2.97 4.95 0.00 0.99 0.00 71.29 740.59
18時34分43秒 2 14.00 0.00 2.00 5.00 0.00 1.00 0.00 78.00 704.95
18時34分43秒 3 17.82 0.00 1.98 5.94 0.00 1.98 0.00 72.28 786.14
18時34分43秒 4 17.00 0.00 7.00 3.00 2.00 3.00 0.00 68.00 11339.60
18時34分43秒 5 4.90 0.00 2.94 1.96 0.98 0.98 0.00 88.24 2635.64
18時34分43秒 6 4.00 0.00 0.00 1.00 0.00 0.00 0.00 95.00 0.00
18時34分43秒 7 16.16 0.00 2.02 4.04 0.00 1.01 0.00 76.77 626.73
18時34分43秒 8 10.89 0.00 2.97 3.96 0.00 0.99 0.00 81.19 350.50
18時34分43秒 9 15.15 0.00 1.01 4.04 0.00 0.00 0.00 79.80 0.99
18時34分43秒 10 28.71 0.00 4.95 8.91 0.00 1.98 0.00 55.45 1074.26
18時34分43秒 11 3.96 0.00 3.96 2.97 0.00 0.00 0.00 89.11 0.00

18時34分43秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
18時34分44秒 all 12.24 0.00 3.08 4.08 0.25 0.83 0.00 79.52 19355.00
18時34分44秒 0 4.00 0.00 1.00 2.00 0.00 0.00 0.00 93.00 1001.00
18時34分44秒 1 18.81 0.00 2.97 5.94 0.00 0.00 0.00 72.28 675.00
18時34分44秒 2 12.87 0.00 2.97 4.95 0.00 0.99 0.00 78.22 578.00
18時34分44秒 3 14.14 0.00 2.02 4.04 0.00 0.00 0.00 79.80 610.00
18時34分44秒 4 13.86 0.00 7.92 2.97 1.98 3.96 0.00 69.31 11852.00
18時34分44秒 5 4.00 0.00 5.00 3.00 0.00 0.00 0.00 88.00 2403.00
18時34分44秒 6 0.99 0.00 0.99 1.98 0.00 0.00 0.00 96.04 0.00
18時34分44秒 7 17.82 0.00 1.98 5.94 0.99 0.99 0.00 72.28 537.00
18時34分44秒 8 17.00 0.00 2.00 6.00 0.00 1.00 0.00 74.00 580.00
18時34分44秒 9 14.71 0.00 2.94 2.94 0.00 0.98 0.00 78.43 409.00
18時34分44秒 10 25.25 0.00 5.05 10.10 0.00 1.01 0.00 58.59 706.00
18時34分44秒 11 3.03 0.00 2.02 2.02 0.00 0.00 0.00 92.93 0.00

18時34分44秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
18時34分45秒 all 13.41 0.00 3.25 4.83 0.25 0.67 0.00 77.60 21473.00
18時34分45秒 0 2.00 0.00 0.00 4.00 0.00 0.00 0.00 94.00 1001.00
18時34分45秒 1 16.00 0.00 2.00 7.00 0.00 1.00 0.00 74.00 514.00
18時34分45秒 2 19.19 0.00 4.04 7.07 0.00 1.01 0.00 68.69 764.00
18時34分45秒 3 18.81 0.00 1.98 3.96 0.00 0.99 0.00 74.26 543.00
18時34分45秒 4 10.00 0.00 9.00 3.00 3.00 3.00 0.00 72.00 13967.00
18時34分45秒 5 3.00 0.00 5.00 1.00 0.00 0.00 0.00 91.00 2407.00
18時34分45秒 6 4.04 0.00 0.00 3.03 0.00 0.00 0.00 92.93 0.00
18時34分45秒 7 19.19 0.00 2.02 5.05 0.00 0.00 0.00 73.74 539.00
18時34分45秒 8 15.00 0.00 2.00 6.00 0.00 1.00 0.00 76.00 493.00
18時34分45秒 9 19.19 0.00 2.02 5.05 0.00 1.01 0.00 72.73 623.00
18時34分45秒 10 31.31 0.00 4.04 7.07 0.00 1.01 0.00 56.57 629.00
18時34分45秒 11 4.00 0.00 5.00 4.00 0.00 0.00 0.00 87.00 0.00

18時34分45秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
18時34分46秒 all 12.90 0.00 3.00 4.49 0.25 0.75 0.00 78.62 20980.81
18時34分46秒 0 11.11 0.00 0.00 0.00 0.00 0.00 0.00 88.89 1011.11
18時34分46秒 1 16.00 0.00 3.00 7.00 0.00 0.00 0.00 74.00 776.77
18時34分46秒 2 15.15 0.00 2.02 7.07 0.00 1.01 0.00 74.75 632.32
18時34分46秒 3 15.15 0.00 2.02 6.06 0.00 1.01 0.00 75.76 741.41
18時34分46秒 4 10.00 0.00 8.00 2.00 2.00 3.00 0.00 75.00 12580.81
18時34分46秒 5 4.00 0.00 2.00 1.00 0.00 1.00 0.00 92.00 2574.75
18時34分46秒 6 6.00 0.00 1.00 2.00 0.00 0.00 0.00 91.00 0.00
18時34分46秒 7 16.67 0.00 3.92 6.86 0.00 0.98 0.00 71.57 572.73
18時34分46秒 8 20.00 0.00 3.00 5.00 0.00 1.00 0.00 71.00 754.55
18時34分46秒 9 16.00 0.00 3.00 6.00 0.00 0.00 0.00 75.00 788.89
18時34分46秒 10 21.57 0.00 4.90 9.80 0.00 0.98 0.00 62.75 540.40
18時34分46秒 11 2.97 0.00 3.96 0.99 0.00 0.00 0.00 92.08 0.00
HDD(4玉RAID1+0)
16時34分27秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
16時34分28秒 all 4.58 0.00 1.00 30.62 0.08 1.16 0.00 62.56 7223.76
16時34分28秒 0 0.99 0.00 0.00 2.97 0.00 0.00 0.00 96.04 991.09
16時34分28秒 1 5.94 0.00 0.99 41.58 0.00 1.98 0.00 49.50 449.50
16時34分28秒 2 0.00 0.00 0.99 0.99 0.00 0.00 0.00 98.02 0.00
16時34分28秒 3 6.00 0.00 1.00 54.00 1.00 1.00 0.00 37.00 455.45
16時34分28秒 4 6.93 0.00 1.98 51.49 0.00 0.99 0.00 38.61 434.65
16時34分28秒 5 7.00 0.00 1.00 40.00 0.00 2.00 0.00 50.00 455.45
16時34分28秒 6 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 0.00
16時34分28秒 7 3.00 0.00 1.00 26.00 0.00 1.00 0.00 69.00 230.69
16時34分28秒 8 1.00 0.00 0.00 4.00 0.00 0.00 0.00 95.00 1657.43
16時34分28秒 9 6.06 0.00 1.01 36.36 0.00 1.01 0.00 55.56 377.23
16時34分28秒 10 12.00 0.00 4.00 72.00 0.00 4.00 0.00 8.00 1692.08
16時34分28秒 11 6.93 0.00 1.98 36.63 0.00 1.98 0.00 52.48 481.19

16時34分28秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
16時34分29秒 all 4.50 0.00 1.00 43.30 0.00 1.08 0.00 50.12 7258.00
16時34分29秒 0 0.00 0.00 0.00 1.00 0.00 0.00 0.00 99.00 1001.00
16時34分29秒 1 3.96 0.00 0.99 64.36 0.00 0.00 0.00 30.69 268.00
16時34分29秒 2 0.00 0.00 0.00 4.00 0.00 0.00 0.00 96.00 0.00
16時34分29秒 3 6.93 0.00 0.99 62.38 0.00 1.98 0.00 27.72 461.00
16時34分29秒 4 6.12 0.00 2.04 78.57 0.00 1.02 0.00 12.24 459.00
16時34分29秒 5 7.00 0.00 1.00 69.00 0.00 2.00 0.00 21.00 626.00
16時34分29秒 6 0.00 0.00 0.00 4.00 0.00 0.00 0.00 96.00 0.00
16時34分29秒 7 4.95 0.00 0.99 53.47 0.00 1.98 0.00 38.61 351.00
16時34分29秒 8 0.00 0.00 0.00 4.00 0.00 1.00 0.00 95.00 1740.00
16時34分29秒 9 4.95 0.00 0.99 39.60 0.00 0.99 0.00 53.47 216.00
16時34分29秒 10 11.11 0.00 3.03 77.78 0.00 4.04 0.00 4.04 1719.00
16時34分29秒 11 9.00 0.00 1.00 64.00 0.00 1.00 0.00 25.00 417.00

16時34分29秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
16時34分30秒 all 4.00 0.00 0.75 45.80 0.00 1.00 0.00 48.46 6368.00
16時34分30秒 0 0.00 0.00 0.00 6.00 0.00 0.00 0.00 94.00 1001.00
16時34分30秒 1 3.00 0.00 1.00 56.00 0.00 1.00 0.00 39.00 253.00
16時34分30秒 2 1.00 0.00 0.00 3.00 0.00 0.00 0.00 96.00 0.00
16時34分30秒 3 6.12 0.00 1.02 52.04 0.00 1.02 0.00 39.80 383.00
16時34分30秒 4 5.88 0.00 0.98 78.43 0.00 2.94 0.00 11.76 473.00
16時34分30秒 5 8.91 0.00 2.97 73.27 0.00 1.98 0.00 12.87 1030.00
16時34分30秒 6 0.00 0.00 0.00 6.00 0.00 0.00 0.00 94.00 0.00
16時34分30秒 7 5.05 0.00 0.00 50.51 0.00 1.01 0.00 43.43 301.00
16時34分30秒 8 0.00 0.00 0.00 8.91 0.00 0.00 0.00 91.09 1528.00
16時34分30秒 9 4.04 0.00 0.00 59.60 0.00 0.00 0.00 36.36 306.00
16時34分30秒 10 7.77 0.00 1.94 71.84 0.00 2.91 0.00 15.53 731.00
16時34分30秒 11 6.00 0.00 1.00 80.00 0.00 2.00 0.00 11.00 365.00

16時34分30秒 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
16時34分31秒 all 4.41 0.00 1.08 40.85 0.00 1.00 0.00 52.66 7587.00
16時34分31秒 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1001.00
16時34分31秒 1 4.95 0.00 0.99 60.40 0.00 0.99 0.00 32.67 317.00
16時34分31秒 2 0.00 0.00 0.00 9.00 0.00 0.00 0.00 91.00 0.00
16時34分31秒 3 5.94 0.00 0.99 50.50 0.00 0.99 0.00 41.58 452.00
16時34分31秒 4 6.06 0.00 2.02 55.56 0.00 2.02 0.00 34.34 564.00
16時34分31秒 5 14.14 0.00 4.04 69.70 0.00 3.03 0.00 9.09 1712.00
16時34分31秒 6 0.00 0.00 0.00 14.14 0.00 0.00 0.00 85.86 0.00
16時34分31秒 7 4.95 0.00 0.99 53.47 0.00 0.99 0.00 39.60 456.00
16時34分31秒 8 0.00 0.00 0.00 2.02 0.00 0.00 0.00 97.98 1818.00
16時34分31秒 9 5.00 0.00 1.00 60.00 0.00 2.00 0.00 32.00 386.00
16時34分31秒 10 6.19 0.00 0.00 53.61 0.00 0.00 0.00 40.21 487.00
16時34分31秒 11 6.00 0.00 2.00 63.00 0.00 0.00 0.00 29.00 390.00
iowait 値を見る限り明らかにioDrive(80G)には余裕があるように見受けられます。
今回は時間切れでここまでとなりますが、ioDrive(80G)に関してはまだまだ余力があり、
チューニング次第で更に性能向上が見込めれるだけの様相は伺い知れました。
また触れる機会がありましたら次回はチューニングを行ってみて結果をBlogにあげてみたいと思います。

VOYAGE WiMAXの半分はSalesforceでできています。

VOYAGE BBの野村と申します。

VOYAGE BBでは事業の中核として2011/08よりMVNO事業に取り組んでいます。
MVNO事業というのは、仮想移動体通信事業のことで携帯電話やPHSなどの物理的な移動体回線網を自社では持たないで、実際に保有する他の事業者から借りて、自社ブランドで通信サービスを行う事業のことです。

弊社では、回線網はUQコミュニケーションズのWiMAXネットワークを用いて、VOYAGE WiMAXという名称で、自社会員を抱える企業と提携することでサービスを展開しています。

VOYAGE WiMAXではサポート、物流、決済などの運用業務をすべて弊社が担当するので、提携企業はコンテンツのひとつとしてWiMAXを会員に向けて簡易に提供することが可能です。会員は端末購入金額が無料であったり、利用開始月が無料であったり、月々の利用ポイントを得ることができるなどプランに応じてメリットを享受できます。

現在、2つのサービスサイトと提携しております。サービスに登録している方がいらしたらご一考ください。

VOYAGE WiMAX + PeXポイントコース
PeXポイントが、ご入会時に10,000P&毎月(※2ヵ月目以降)1,000P貯まるコースです。

永久不滅ポイントが、ご入会時に200ポイント&毎月(※2ヵ月目以降)20ポイント貯まるコースです。


今回はこのVOYAGE WiMAXの業務を支えるバックエンドシステム開発の話を書きます。

VOYAGE WiMAXの提供のために会員管理システムを開発する必要があったのですが、
運用、サポートの要望によりSalesforceのSale Cloudを用いて、会員情報を管理する方針となりました。
回線登録・解約、端末の発送、利用料の請求などの業務のためにVisualforce,Apex,BulkAPIを使いカスタマイズしました。
その中で得た知見を2つほど紹介します。

「個人取引先」の設定について

VOYAGE WiMAXではweb-to-リード機能を使い申し込みフォームを作成しているので、「リード」に登録された申し込み情報を「取引先」に変換することで会員情報として管理することにしました。
初期状態では「取引先」は企業情報という扱いらしく、1つの「取引先」に複数人の情報が登録できたり、会社名の入力が必須であったりと違和感があるので、「個人取引先」の設定をセールスフォースに依頼して設定してもらう必要があります。
ちなみに、「個人取引先」の設定はEnterprise Editionからでないとできないそうです。

開発での失敗

Salesforceで利用できるウェブAPIにはコール上限があります。
Enterprise Editionでは運用環境とは別にsandbox環境が提供されますが、当初はリリース前ということで運用環境でForce.com IDEを用いて開発・テストしていました。そのため、Force.com IDEの設定で常に同期する設定になっていたこともあり、佳境に入り頻繁にテストするようになると上限を超えてしまい、しばらく開発できなくなる事態が頻発しました。
現在ではsandbox環境でコーディング・テストをしてから、運用環境にリリースといった流れにしました。
最初からその流れで開発しておけばよかったなとしみじみ思います。
ちなみに運用環境では24hで5000回、sandbox環境では5000000です。圧倒的な差です。


カスタマイズが必要な場合はSalesforceの世界観や制限を理解しておかないとかなり厳しいですが、UIはよくできていて操作性がよいし、更新履歴管理なども簡易に設定できたりするので、用途によってはかなり便利なサービスではないでしょうか。
記事検索
QRコード
QRコード