VOYAGE GROUP エンジニアブログ

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

2014年11月

Advent Calendar 2014

昨年一昨年に続き今年もAdvent Calendarやりますよ。

若手とベテランが入り交じっていて、良い感じでカオスになりそうで楽しみですね。(11/30記載)

VOYAGE GROUP エンジニアブログ Advent Calendar 2014
日付担当者エントリ
12/1@makoga挑戦し続けるために意識していること其の二:新しいことを学ぶときに最初のハードルを下げる2つの考え方 #vgadvent2014
12/2@tryal文系だけど、もっと勉強したいと思っている3つの理系メソッド #vgadvent2014
12/3@yuu_ito
PureDataに投げるSQLを書く上で気にしていること #vgadvent2014
12/4katzchang
エンジニアの評価観点について
12/5gaia

QuartzComposerでiOSプロトタイピングをする必要があるのか

12/6@hagino3000
BigQueryを使う処理のテストをどう書くか
12/7@brtriver
ミニ四駆よりも熱い ミニッツレーサーのススメ
12/8@chocopie116
LTでウケを狙って挑戦し続ける漢たちの背中を押すために考えたたった1つのこと
12/9@tana_ra
寒くてやる気が出ないそんなあなたに、熱いメッセージと共にやりたいことリストを通知しよう
12/10@at_grandpa
slackで将棋を指したい
12/11@sinamon129
TodoistとTodoistAPIで、毎朝のタスク報告をするヾ(‘ω’)ノ
12/12@gomachan46
ターミナルで遊べる音ゲー作ってみた
12/13@TachibanaKaoruバスボタンでビルドしてみました
12/14@a_macbee
社内Slackをテキスト解析してみた話
12/15@blackstar240
Ruby on Railsでcookie情報の変更を考慮したテストを書いてみた
12/16@akiyah
ジバニャン方程式の作り方 #vgadvent2014
12/17@co3k
Web セキュリティに関するインターンで伝えようとしたこと
12/18@suzu_v
年報
12/19@sayadroid
DjangoAdminをオシャレにしようとしたら失敗した
12/20@kenichikat
そろそろ MySQL の Performance Schema を使ってみる
12/21@_nishigori
#ajiting パーカ、できました
12/22@DayBySay
3Dプリンタ Afiniaで自社サービスのキャラを作ってみた
12/23@hironomiu
今年も振り返ってみる!!
12/24@jewel_x12おいお前ら、TAPL読むぞ!

100万人が使うWebサービスを創造せよ!!大規模サービス構築プログラム「Sunrise2014」

こんにちは。システム本部 三浦(@hironomiu)です。

今年も11/8,9,15,16の4日間で冬のエンジニアインターンSunrise2014が行われました。
本エントリーでは週末4日間と言う短い期間で全力で学びそして全力でアウトプットした様子をお伝えしたいと思います。


集合写真
PB090374

以下の日程で開催しました
- 日程
  - 前半
    - 11/8(土)
      - Webを支えるインフラ(事前課題)
        講師 CTO 小賀さん(@makoga)
      - サーバヘルスチェック
        講師 三浦(@hironomiu)
      - VOYAGE GROUP インフラ事例
        講師 かとけん(@kenichikat)
    - 11/9(日)
      - 大規模データベースサーバ(運用、拡張戦略)
        講師 三浦(@hironomiu)
  - 中間課題
    - 11/10 - 11/14
      - Sunriseチューニングバトル!
  - 後半
    - 11/15(土) 
      - グループワーク
    - 11/16(日)
      - グループワーク、発表 

Webを支えるインフラ(事前課題)
事前課題として弊社サービスECナビにアクセスしブラウザに表示されるまでに使われているインフラ技術について各自で調査を行ってもらいました。調査の結果をチームで改めてまとめ発表します。各チームの発表内容に対してCTO小賀さん(@makoga)からアドバイスを行い更に理解度を深めていきます。
PB080053PB080079
PB080065PB080070


サーバヘルスチェック
サーバリソースの利用状況を計測しながら処理性能を考察するグループワークです。まずは負荷ツール(siege)を用いて高負荷な状態を作り出します。次にその状況を各種ツール(top,dstat,psなど)で計測します。その際にWebサーバ、DBボトルネック、RDBvsオンメモリキャッシュ、リバースプロキシなどの切り口で考察していきます。
PB080124PB080130

PB080150PB080138


VOYAGE GROUP インフラ事例
インフラエンジニアかとけん(@kenichikat)よりVOYAGE GROUPの実際にあった大規模インフラ移行をテーマに、移行の際に気を付けること、移行の意思決定を行う上で普段からどんな観点でウォッチするか、どのように組織でウォッチするか、計測した情報からどのように将来について考察するのか、などを学んでいきます。
PB080157PB080156
PB080159PB080158

夜は?!
Sunrise生全員の親睦を深めより全員でSunriseを成功させるべくHさん(@339)から突如大規模カレー開発ミッションが発生しました!!
PB080177PB080178
PB080265PB080278
PB080283PB080285

大規模データベースサーバ(運用、拡張戦略)
2日目は一日かけVOYAGE GROUPで実際に培ってきたDB技術について広く学んでいきます。DBが載るH/Wのレイヤ(HA、RAID、etc)からRDBMSに絞った特徴(トランザクション、SQL、B+treeINDEX、Partitioning、etc)や拡張戦略(スケールアップ、スケールアウト)、分散方式(水平、垂直)、サービスの特性からDBで意識することなど多岐に渡ったテーマから学び、各テーマごとに学んだ 内容についてチーム毎に発表し理解度を深めていきます。
PB090316PB090294

PB090320PB090292

Sunriseチューニングバトル!
サーバヘルスチェックで利用したクラウド環境のサーバでサンプルアプリ群のスループットを競うチューニングを行います。アプリ、カーネル、ミドルウェアの全てが変更OKで、出題者側で意図した動作が確認されれば評価対象としました。出題者の三浦(@hironomiu)にて想定した及第点を遥かに超えた回答が続出しSunrise生のアプトプットする意欲の高さに驚かされました。

グループワーク
後半は主催側から提示されたサービス概要(つぶやきサービス)を実際に100万人のユーザが利用するサービスに成長したことを想定し、大規模インフラの設計を行います。今回は4チームにわかれ各チーム1位を目指し最高のアウトプットを行います!

チームカフェイン駆動開発 たけ、やす、もっさん、かぬー サポータ ガイア(@jet_mmm)
PB160475PB150399

チームIndexD さっさー、そと、ゆうた、わっきー  サポータ 三浦(@hironomiu)
PB160482PB150407

チームじゃがー みっさん、はしもと、うっちー、たけと  サポータ おおつ(@smileeeen)
PB160478PB150410

チームNULL PO たけし、あめみや、ゆうき サポータ あらた(@tana_ra)
PB160471PB150434

ラストスパートに向けて
PB150443PB150427


発表
あっという間の最終日です。これまでに振り絞って出したアウトプットを発表しました。
評価者はCTO小賀さん(@makoga)、かとけん(@kenichikat)、前田さん(@brtriver)、あわさん(@katz_arc)の4人です。評価もアウトプットを隅々まで見て本気で行います。
PB160490PB160494

チームカフェイン駆動開発  発表資料抜粋
su4

チームIndexD  発表資料抜粋
su1

チームじゃがー  発表資料抜粋su3

チームNULL PO
  発表資料抜粋
su2

各チームさまざまな検討をチームで行い全力でアウトプットしていました。

まとめ
初日から最終日まであっという間のインターンでした。短期間ながらSunrise生、サポータが一丸となり全力で最終発表に向けて進んだ結果、素晴らしいアウトプットにつながったと思います。
ここで得た仲間や経験を通じて、これからも「未知」なるサービスを「創造」し続け、価値のある素晴らしいモノ創りに挑戦し続けて欲しいです。

Node.js × Herokuで今日から始められる忘年会コンテンツ

こんにちは、ECナビでアプリケーションエンジニアとして働いている@chocopie116です。
いやーそろそろ年末ですね。
忘年会の時期も近いですね。

えっ!?ちょっと早いって!?
そう思う人は、ここでそっと画面を閉じてください。
あなたが呑気に生きてる間に、幹事様は年末どうしようと一生懸命悩んでいます!!w

さてここからは年末の忘年会ネタどうしようと悩む幹事の人だけ読み進めてください。

・はじめに
今回のエントリーでは、忘年会どうしようと頭を悩ませる人たち向けに、VOYAGE GROUP総会で開発したクイズシステムを紹介します。

弊社VOYAGE GROUPでは、半期を通じて活躍した人材・プロジェクトを表彰する総会が年2回あります。内容としては、2部構成になっており、1部は全社の振り返りや、表彰式が行われます。2部では所謂オモシロコンテンツが催されます。

ある日、今回の2部のおもしろコンテンツをどうしようか話していました。
VOYAGE GROUPは前身アクシブドットコム・ECナビも含めると創設15周年でおめでたいし、なんか面白いことやりたいよねーという話になり
やっぱりクイズは鉄板だよね!!という話になり、
全社員300名弱を巻き込んだクイズ大会というアイディアに決まりました。
サービスイメージ図
こういう感じのサービスならきっと世の中であるだろうと思い、google先生に、"クイズ 忘年会"、"クイズ 結婚式"、"スマホ クイズ システム"といった切り口で聞いても、既にクローズしているサービスが多く、利用できるサービスはありませんでした。

・なので、つくってみました
とりあえず構成はこんな感じで。
クイズコンテンツ概要
クイズの面白さを際立たせるため参加者を巻き込んだ出題VTR・解答VTR等は、WEBでやろうとするとリッチな表現の要求により爆死することが目に見えているので、DVDの映像を使います。
回答結果や、ランキング表示の部分のみスタッフ(管理者)のPCを使いウェブアプリをひらいたブラウザをスクリーンに映します。
つまりスクリーンではスイッチャーを用いて、シームレスにブラウザとDVDプレーヤーの映像を交互に映します(実はこのからくり、実際にあの場でいた人たちも気づかなかったはずです)。

またウェブアプリとして実装する機能もなるべくシンプルにしました。
・簡易ユーザー機能(ランキングの名前表示のため)
・回答機能
・問題の管理機能

・採用した手段
WebSocketや、イベントループ方式のほうがよさそうと思いNode.jsを採用。
インフラは手軽に使えるPaaSのHeroku採用しました。(といってもどちらも実戦投入初で使ってみたかったのが一番の理由w)

・実際の様子
こんな感じで出題(DVD)をして、制限時間内に会場の参加者にスマホで回答ボタンを押してもらいます。
出題

制限時間がきたら、こんな感じで回答結果(WEBアプリ)を表示します。 

回答集計結果
回答集計結果表示の後は、ユーザーの早押しランキングを表示しました。
・時間かけたこと・捨てたこと
新しいことにトライするのは楽しいですが、メインの業務ではないのもあり時間の制約があります。
以下のことを取捨選択しました。

■拾ったこと
ベンチマークテスト・回答受け付け処理の高速化
→制限時間内での回答がさばけるかどうか。想定リクエストが来てもアプリケーションに問題がないかどうか。
→回答受付処理で少し時間がかかる部分は、キャッシュじゃなく直接アプリのメモリに乗せたりして早くした。

■捨てたこと
お前は今まで食ったパンの枚数を覚えているのか?


ちなみにDynoは、一番高いPXのsizeを使いました。
ベンチマークテスト入れても24時間しかぐらいしか稼働させないので迷わずお金で解決にかかりました。
もろもろのサーバー利用料で2000円ぐらい支払いがきていたと思います。

・まとめ
やはり会場参加型のクイズコンテンツは盛り上がります。
また小規模の忘年会で映像つくれないよーという方は、DVDの代わりにパワーポイントのアニメーションを使うことで同等のサービスを提供することができるかと思います。
またスイッチャーがない場合でも、2台のプロジェクターを用意し、出題と回答を同時に表示するなどして対応出来ると思います。うまいことやりくりをしましょう。

さて、このエントリーでは、皆様の年末の幹事業の何かヒントになりましたでしょうか
最後になりますが今回実装したアプリのコードをgithubで公開しました。

node初めてだしーとか、オレオレprivateリポジトリだったしーとか
色々言い訳を挙げればキリはありませんが、もうえいやっと公開してしまいますw
enkai-quiz
それでは皆さんの忘年会 幹事業の成功をお祈りしております!
記事検索
QRコード
QRコード