@thorikiriのてょりっき

@thorikiriがWebとかAndroidとかの技術ネタや本を読んだブログです

東京Node学園 6時限目 #tng6 に行ってきました

ちょっと色々ありまして遅くなりましたが行ってきたのでメモしたものを投下しておきます。

10分で作る Node.js Auto Scale 環境 with Amazon CloudFormation

資料→10分で作る Node.js Auto Scale 環境 with CloudFormation

  • AWSで1億リクエスト/日 をやってみる話。つまり1200リクエスト/秒。
  • AWS
    • ELBからインスタンス複数置いて、DBをつつきにいく構成。
    • 単純だけどやることがいっぱいあって結構大変。
  • Cloud Formation
    • インスタンスの構成のテンプレート
    • 自分だけのPaaS環境を構築することが出来る
    • アプリのURLはgithubのzipダウンロードのURLを指定
    • ワンクリックで出来ちゃう
  • Nodeインストール
    • コードからのインストールはマイクロインスタンスだと10分くらいかかるので、バイナリでインストールすると1分で済む
    • JSON形式で構成を各
    • AIMが不要
  • AutoScale
    • CloudWatchのアラームで実現する
    • アプリの特性によってどの項目を監視するのかが決まってくる
      • Nodeの場合はCPUとかネットワーク
      • JSONで書く
  • アプリのDeployとUpdate
    • 環境設定のJSを使う
    • アップデート
      • githubのZipのURLを変える(リリースブランチを使うとか)
      • 古いアプリのサーバを殺せば監視されているので自動的に新しいアプリのサーバが立ち上がる
    • WebSocket
      • 接続中にサーバが死ぬと再接続出来なくなる(接続先が無いから)
      • 負荷が収まってインスタンスを落とすと接続出来なくなってしまう
      • クライアント側で再接続するようなことをしなければならない
  • まとめ
    • Pusherのクローンを作ってる
    • テンプレートも配布します
  • Q&A
    • おいくらくらいかかるの?
      • どれくらいスケールするかによります
      • 30日で5000円から1万円くらい
    • 設定のJSONgithubに置くの?
      • S3に置きます
      • 1クリックでなくても良いならファイルアップロードでやります

文字コードと Node

資料→東京Node学園#6 文字コードと Node

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)

プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)

聞きながらこの本のことを思い出した。そう言えば積んだままだった。

そうだったのか! 学べる process.nextTick()

資料→そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する

  • イベントループとprocess.nextTickをわかればいいよ。ここがNodeで大事。
  • chromeと同じペースでリリースしていこうと思ったけど無理があった。
  • v0.6とv0.8でイベントループとprocess.nextTick()は結構変わっている
    • 今回はv0.8ベースで説明
  • イベントループ
    • Nodeの心臓部
    • Nodeが起動するとuv_runが動く
    • uv_runはループ処理をしているだけ
    • handleとreqがなくなれば終了します
  • handle
    • I/Oが発生していないときも動く
    • server.listen()とか
  • req
    • I/Oが発生しているとき
    • http.get()とか
  • イベントループは7つのステップ
    • 3のrun_idleで止まるような処理をしてはいけない
    • 何でnextTickが3つあるの?
      • 呼び出し順と入れ子の場合の呼び出し順を守るため
  • v0.9では変えるよ
  • 正しい使い方
    • emit 非同期イベントの発生時
    • コールバック呼び出し
    • 守ろう!混ぜるな危険
      • 非同期のときは非同期のコールバック
      • 同期のときは同期のコールバック
    • nextTickの再帰は避けよう
      • マスタプロセスではしないで、子プロセスでやる
  • まとめ
    • 7つのステップを理解すること
    • 2つの用途を守って使おう
    • CPUを使う場合は子プロセスでやろう
    • 再帰処理はAPIが変わるかもしれないから気をつけて

#txjs でやった npm の話

資料→https://npm-tng6.s3.amazonaws.com/

  • インストールは0クリック
  • npmの依存関係はnpmで管理
  • npmはgit/github時代のもの
  • npmのコードはとても良い
  • npm helpステキ
  • npm -install --save でpackage.jsonにも追加してくれる
  • npm init はgit cloneの後でやる
  • npm shrinkwrap で依存関係をロックするバージョンをロック出来る
  • prepublishでCoffeeScript等をコンパイル
  • バージョンの指定は>より~が良い
  • npm cache cleanでv0.8用にしよう

LT大会

破綻させない大規模JavaScript

資料(原稿)→原稿

  • ネイティブからHTML5ベースにするお仕事
  • JSerの人はテスト書かない
  • Rubyから色々ぱくってきた
  • CofeeScriptでやったった
  • Jasmine Headless Webkit
  • Railsのディレクトリ構成
セキココ
  • http://sekico.co/
  • NodeとSocketio
  • 勉強会とかイベントでの座席をベースにリアルタイムなコミュニケーションを実現
  • PHPとNodeを組み合わせた
SSL証明書取得のススメ
  • SAN
    • 1個の証明書に複数入れる
      • でも認証局があんまりない&お高い
  • SNI
    • OpenSSL9.8移行
      • 時代が追いついた
  • NodeでNSI
    • 証明書を文字列からBuffer経由で
      • デフォルトはcreateServerで
      • 追加はaddContextで
  • startSSL
    • 1年間有効なClass1証明書を無料で取り放題
  • SSLとNodeで結構重くなるらしい
腕とNode

資料→0628 東京 node 学園 6時限目 LT 「腕 と Node」

Node.jsのPaasまとめ

資料→Node.js PaaS

  • 結論:好きなの使え