by shigemk2

当面は技術的なことしか書かない

LT1 GREE ADS データプラットフォーム

GREE開発本部 広告統括部
Python java(hadoop) PHPをよく書く

ネット広告の課金方法
ネット広告は期限付きのものが多い
Imp, click, conv(コンバージョン)のログを取る
GREEのトップ以外(インプレッション)
アドワーズ(クリック)
ニコニコ市場(コンバージョン)

広告ログシステムの全体像

ADサーバー→インプレッションログ
AD掲載ページ
Redirectサーバー→click log
リダイレクト
ランディングページ
コンバージョンサーバー→ conv log

fluentd と Hadoopを利用して、ログを集計してサーバーに送り、レポートを作る

Fluentd(リアルタイムのログ収集ツール JSON形式で収集する)
フォーマット化することでパーサーの負担も少ない

似たようなのに、ScribeやFlumeがある。
が、Docsとプラグインが豊富なので採用した

利点

  • インストールが簡単
  • プラグイン豊富
  • 受け手の冗長構成
  • ログの時間が区切れる
  • ロテートしても一回前までは拾える

欠点
プロセスが落ちると再送されない(アドホックなスクリプトで拾う必要がある)

Hadoop
大規模データを効率的に分散処理、管理するためのソフトウェア基盤

多数の汎用サーバで大規模データを処理できるが、
細かいデータは処理できない

Java MapReduce(実装に時間がかかるがハイパフォーマンス)
Hive SQLっぽくかける
Pig 独自言語
Streaming 好きな言語で書ける、おそい

いまのところMapReduceを使う。
Streamingで好きな言語でも書けるが、
処理の見積りが難しい
NameNodeが単一障害点

GREEの広告システムはFluentdやhadoopを使っている。

LT2 Qiita(Kobito)を支える技術

Kobito Evernoteのプログラマ

「プログラミングをもっと楽しく」
プログラミングが出来るとあらゆるものが変わる

技術

アプリ構成

AWSとEC2
Rails
nginx + unicorn
MySQL

MacRubyObjective-C

開発ツール

Pivotal Tracker
github
Campfire (bot)

Goal なんとなくで行われている無駄をなくす

若手

固定観念に縛られていない = 既存の無駄な仕組みを壊せる = プログラミングをもっと楽しくできる

LT3 Railsでのシステム構築のアーキテクチャについて

10xLab(GaiaXの福岡開発拠点)

Railsを使ったBtoB向け自社プロダクトを新規開発
開発のなかでアーキテクチャがどう変遷したか

構成1

所謂MVC
モデルとテーブルは1:1
コントローラとモデルは1:多

課題
コントローラが太っていく
保守性、可読性の低下
モデルにビジネスロジックを移していく

1つのモデルに紐付いていない処理はどこに書くのか?

構成2

MVC wiht Logic
Logic層の導入
データを疎結合で扱える

ビュー 表示
コントローラ ビューに一連のデータを渡す
ロジック 一連の処理を処理する
モデル データを保存する

サイドバー、ヘッダーなどの共通パーツに必要なデータを
用意しなければならないので面倒。

→Cellsを用意する
コンポーネントに必要な要素を切り離す
テンプレートを用意できる。

構成3

MVC with Logic and Cells
ヘッダーやサイドバーなど共通パーツのテンプレをCellsで用意する

サイドバー単位でキャッシュをクリアできる利点もある

validationをどこでするか
helperが太る…

気をつけていること

  • 箱を最初に用意する(LogicとかCellsとか。中身はなくてもよい)
  • 呼び出しの流れを一方向にする(ModelからLogicへの呼び出しみたいなことは絶対にやらない。LogicからModelへの呼び出しのみを許可する)


どこかで箱をまとめて再構成するフレーズが必要になるのだろうか

LT4 ウェブ決済ならWebPay

fluxflex

米国決済市場が尋常じゃないほど白熱してれぅ
Recurly(継続課金を簡単に)
wepay(集金を楽に)
stripe(ウェブ決済を簡単に)
Braintree(モバイル決済を簡単に)

物販のアプリも白熱してれぅ


→愕然とするほど未開拓な日本の決済市場

苦しみ1
なんでもかんでも「お問い合わせください」で片付けようとするのでUXのかけらもない

苦しみ2
冗長かつ大量なドキュメント
独自仕様のURLスキーマ (GET/seikyuu.cgi で決済とか)
不必要に複雑なAPI設計

苦しみ3
不透明かつ足下を見た価格体系(交渉する術もないししたくない)

もう死んでくれ。
能力の問題じゃなくて、文化の問題なんじゃ…

開発者が稼ぐためにつかいやすい決済システム WebPay

簡単に使えるテスト環境
分かりやすいUI
わかりやすいRest API
ユーザーに最適化したドキュメント

試しながら開発が出来る!!!

多種多様な言語への対応(stripのライブラリと互換性がある)
オブジェクト化して投げればだいたいおk
PHP ruby python windows8 iOS android

月額200円 各取引ごと 3.4% + 30円

年内公式リリースを目指してれぅ

LT5 Metrics-Driven Engineering with GrowthForecast

DeNAのひと
comm作ったので話題になってる会社だけど、comm作ってはいない

GrowthForecast

ユーザー
売上
PV
コンバージョン など…
メトリクスを見ないと状況把握出来ない

Metrics is important

新機能開発に時間を割かないといけないので、
メトリクスにかまけてる時間がない

そこで、GrowthForecast!!

利点
インストールは簡単
使い方は、HTTPでPOSTするだけ!!
どんな言語でもだいたい対応できる
処理するデータも多くない多くならない

欠点
グラフのカスタマイズが難しい
過去のメトリクスを作成できない

便利なプラグイン Auto Refresh Plus

Metrics is important and you can make metric easily by GrowthForecast

メトリクス用のツールは色々と使い分けてる

追記

ご指摘頂いた箇所を修正しました

LT6 日本最大級クラウドソーシングサービス ランサーズを支えるAWSノウハウ〜WBS砲も耐えました〜 #wakateweb

ランサーズ アウトソーシングの会社

時間や場所に囚われないネットを活用した新しい働きかたの創出したいので、
鎌倉でやってみようとした。

AWS

構成
apache
mysql
cakephp
jenkins
nagios
munin
jenkins
aws

awsに特化したサービスを作る
WBSに取り上げられたら大反響

アクセス予測 (某ブログを参考に)
コンテンツ軽量化 コンテンツ静的化など
仮想サーバ増設
負荷テスト JMeter AMIを仕様
ELB(Elastic Load Balancing)スケールアップ アプリケーショントラフィックの負荷を自動的に分散してくれるロードバランサ

5分間のトラフィック量を測定しオートスケールを判断する
→有料のものを使うことで解決!!

結果
落ちなかった
大幅なアクセス遅延もなし
アクセス数 会員登録数も急増

AWSの営業のひととは仲良くするとサポート料が安くなりそう
社内からの負荷テストは注意(ネット止まるかも)
インスタンスの立ち上げすぎには注意(従量課金なので…)

LT7 データとは何か #wakateweb

SICP
Structure and Interpretation of Computer Programs

cons car cdr 他のデータ構造を利用せずに定義することが出来ること

並び
(list 1 2 3 4)

公認インターフェース
((2 3) 5 6)

e.g. 奇数の二乗の和を計算する

SICP p45 51

SICP読もうぜ!

週4くらいで読書会やってるらしいけど、まあひとつきくらいで読了できるん
じゃないかなあ