2015年3月22日日曜日

時雨祭@ドワンゴ行ってきた(後編)

プレゼンメモが長くなってしまった

ので,後半の4つのプレゼンについてはこちらにまとめました。
4. Quipperを支えるテスト技術(@hakobera)
5. freeeを支える技術 (@xga)
6. (Web魚拓の闇(公開禁止)) (@hiroki_niinuma)
7. HLSについて知っていることを話します (@moriyoshit)
前半はこちらです。
1. 真 Drone入門 (@mopemope)
2. メルカリを支える技術 (@cubicdaiya)
3. Qiitaを支えたい技術 (@mizchi)

プレゼンメモ(後編)

4. Quipperを支える負荷テスト技術(@hakobera)

負荷テストの重要性と手軽な負荷テスト環境構築とデモがありました。
資料:https://gist.github.com/hakobera/e47dd940b92f56d8bf1a
参考スライド:


負荷テスト:大事なのはわかるけどシナリオ作成とかインフラ構築がめんどくさい
→プログラミング言語(例:Locust)でシナリオ作ってDockerでインフラ構築すると楽だよ!
- シナリオ作成:XMLで作るのもあるが,あくまで構図を書くものだから
 ロジックを作りこむには向いてない。例えば,Pythonで書けるLocustで作成する。
- インフラ構築:ハードなDockerのイメージ管理はGoogle Container Registryで,
 クラスタの構築はGoogle Container Engineで解決!

LocustのWebインタフェースがやたらおしゃれでリッチだったし,
csv形式で結果吐き出せるしでちょっと使ってみたかった。

5. freeeを支える技術(@xga)

クラウド会計ソフトfreeeを支える技術
資料:https://t.co/ufHavYWfvs

■支える技術
フロントエンドをbackbone.js/vue.js/CSS
裏はRuby on Rails
インフラは全部AWSを利用している
監視にはZABBIXを利用している。「さいこーっすね」「楽っすね」
PostgreSQLのJSONB+GIN INDEXは革命的に早い。
電話対応にはZendeskを利用(03番号が取得できる)
タスク管理は殆どasana
■社内制度
社員全員(インターン含め50人くらい)が集まって食事する機会多し。
「見た目はいいんですけど」「いや、大丈夫です」「なかよしです、なかよし」
バグのことをハッピーと呼び,確定申告シーズン以外はハッピー担当が二人いる。

6. Web魚拓の闇(@hiroki_niinuma)

公開禁止なので何も書きません。

7. HLSについて知っていることを話します。(@moriyoshit)

今回の発表で一番本業と遠くて新鮮だった。


HLS(HTTP Live Streaming)は,HTTPを使ってネットラジオと同じ要領で動画を配信する技術。
■仕組みがシンプル
(1)動画をセグメントごとに分割
(2)プレイリストを更新
以上。
■特徴
・プロトコルがシンプル(クライアントにひたすら送るだけ)
・キャッシュフレンドリー(セグメントごとに分割されてるから扱いやすい)
■ご家庭でHLSを始めるには
Webサーバを用意してセグメントファイルを送り付ける。
nginx-rtmp-moduleを使うのがおすすめ
設定がAdobe Media Serverより楽で,nginxの他のモジュールと合わせて利用できる。

時雨祭@ドワンゴ行ってきた(前編)

昨日は時雨祭行ってきました。
http://shigure.connpass.com/event/11780/
会場はドワンゴさん。歌舞伎座の横にこんなタワーあるなんて知らなかった。

今回は,特にLTとかはせず聴講者です。
リアルタイムな感想・実況は以下の時雨祭togetter参照で。
まったり編 - http://togetter.com/li/797656
プレゼン編 (1) http://togetter.com/li/797700
プレゼン編 (2) http://togetter.com/li/797722
プレゼン編 (3) http://togetter.com/li/797735
プレゼン編 (4) http://togetter.com/li/797739
プレゼン編 (5) http://togetter.com/li/797750

全体の感想

GoとDockerはやっぱり勉強しておかないと
どんどん置いていかれてしまうなぁと実感。
時間見つけてちょこちょこ動かしつつ勉強しなきゃと思いました。
あとは,今回の聴講者みたいに自分が好きかつ得意な技術があると
強いなーと思いました。
もうすこしハンズオンの時に交流できたらよかったな。

プレゼンメモ(前編)

プレゼンメモが長くなってしまうので前半の3つについてここに。
1. 真 Drone入門 (@mopemope)
2. メルカリを支える技術 (@cubicdaiya)
3. Qiitaを支えたい技術 (@mizchi)
後半はこちらです。
4. Quipperを支えるテスト技術(@hakobera)
5. freeeを支える技術 (@xga)
6. (Web魚拓の闇(公開禁止)) (@hiroki_niinuma)
7. HLSについて知っていることを話します (@moriyoshit)

1. 真 Drone入門(@mopemope)




Abby CTOのマツバラさんによる発表。
(WindowsでもMacでも文字化けてる…)
赤ちゃん抱っこしながらプレゼン。なんか新しい時代を感じる。
drone.ioというDroneのCIツールをJenkinsの代わりに入れてみませんかっていう話。
詳しくは以下の参考スライド。

Drone.io のご紹介 from Uchio Kondo

Dockerで動かしていて,カスタムは主にシェルコマンド,できないものはGoでする。
参考スライドの中で複数のJenkinsを統合してDrone.ioにしようというのがあったので,
自分のプロジェクトにも適用できそうだなと思った。ただ初期学習コストがまだ高い・・・><

Drone.ioの次バージョン0.4の目玉は以下の通り。
1. .yml(やむる)の構造が変わる
0.4未満からアップデートする際には,この点に留意しなければならない。影響がある可能性有
2. Matrixビルドができる
ディストリビューション別/言語バージョン別/DBバージョン別でビルドができる
詳しくはhttps://github.com/drone/drone/issues/6

2. メルカリを支える技術(@cubicdaiya)

メルカリの性能設計の話。いかに高性能にするかを話していただけました。


元ネタは以下のスライド。


メルカリのネットワーク構成はさくら×AWSの混合構成
今回は高性能な仕組みを持つモジュールを3つ紹介

1. 高性能なAPIサーバをPHPで実現
利用しているのは軽量で高速なPHPフレームワークDietCake(http://dietcake.github.io/),
キャッシュのウォームアップ,
非同期処理(ジョブキューにQ4M,ワーカーにphp-Parallel-Preforkを利用)を使っている。
社内にDietCakeを書いている人がいる。

2. ハイパフォーマンスブラウザネットワーキングをnginxで実現
ハイパフォーマンスブラウザネットワーキングは以下の書籍のこと。
http://www.oreilly.co.jp/books/9784873116761/
TLS Session Cache/Ticketを導入してロードバランサであるnginxサーバのCPU使用率半減,I/O転送量を数Mbps削減している。
ただし,TLS Session Ticketに対応していない端末(iOSとAndroid4.x未満の端末)があるのが難点。
ちなみに,さくらにロードバランサオプションがあるが何故か利用せずにnginxサーバを利用している。パフォーマンスが足りないのかも?

3. 高性能なアプリケーションをGoで実現
メルカリのメイン開発言語はPHPだけど,最近の新機能はどんどんGoで作っている。
∵Goは早い・速い・軽い
Gaurun(Goで作った汎用プッシュ通知サーバ)を利用して,
プッシュ通知サーバ3台で数百万件のプッシュ通知を2時間程度で通知が可能。

3. Qiitaを支えたい技術(@mizchi)

フロントエンドエンジニアの技術(主にJS周り)で,
個人的には今回で一番聞いてよかった―って思ったお話。

前置きの「自分の業務をOSS化して,会社のドメインにせず,モジュールもきれいに分割する」っていう考えは素晴らしいし,その環境を提供するQiitaいいなぁと。

1. フロントエンドエンジニアとは何者なのか
HTML/CSS/JavaScriptで実装できるエンジニア。
最近の「実践的なフロントエンドエンジニア」に求められるスキルは
・node.jsでツールチェインを扱う能力
・外部モジュールの管理
・アセットパイプライン構築
・中規模以上のコントロールフローの設計
最近のAltJSを扱ううえではアセットパイプライン構築は重要で,
大規模なプロジェクトだと専任の担当者がいないと厳しい。

2. Modern Java Script
今はES6で「やっと普通の言語」になってきた。
Java Script界隈で最近大きな勢力は,
Babel/Type Script/Coffee Script/Flow Typeあたり。
@mizchiさんはCoffee Scriptが好き。
この中でどれを使うか選ぶ観点として,
・アセットパイプライン構築ができる→Babel/Type Script
・構築できない→互換のポリフィルを選択すること!

3.アプリケーション設計について
■重要なこと(1):SPAは片手間ではできません!!!!!!!
最近はMVCのController部分が分厚い。
ただ,ClientサイドにMVC(正式にはMVC2)を完全に適用するのは無理。
■重要なこと(2):Java Scriptでできることが増えた分は覚えましょう。
今後フロントエンジニアが目指すところは
・Server/Clientの境界面を設計する
・設計によって見通しをよくして,学習コストを抑える
・古いJSの悪習を引き継がない(DDDでいうSmartUI)

4.Isomorphic
Client/Serverどっちも同じ言語なら楽なのに…という発想のこと。
・Isomorphicを支える技術
ReactによるDOM抽象化とbrowserifyによるnodeモジュールの抽象化
・一般Isomorphic
node.jsやJava ScriptでClient/Serverのコードをすべて書く
・特殊Isomorphic(ラップしてれば大丈夫という発想)
@mizchiさんが一番筋がいいと考えているのはclojure/clojurescript
- clojure/clojurescript
- scala/scala.js
- ocaml/js_of_ocaml
- haskell/ghcjs
・Isomorphic
現状はパラダイム変わりすぎで時間とライブラリが足りてないのでこれから。
「みんな頼む」