ほわいとぼーど

ぷろぐらまのメモ帳

YAPC参加メモ 8/22 2日目

YAPC参加メモ 8/22 2日目

Mackerel開発におけるScalaとGo、そしてPerl songmuさん

  • 趣味CPANIZE
  • Mackerelの開発
  • 新機能 外形監視 外部からクローリング監視
  • オンプレ構築 AWS障害とは無関係
  • LVS nginx scala redis postgreSQL Graphite
  • Angular typescript
  • Scala Go JavaScript Perl Ruby
  • Play Framework
  • Scala 静的型システム使いたい
  • 関数型楽しい
  • Option便利 Nullのない世界
  • コンパイルの遅さストレス<=>バグ混入率は低い
  • 大き目のものをカッチリ作るのにむいてる Scala
  • Mackerel-agent Golang
  • Golang 常駐プロセスに向いてる
  • URL外形監視
    • job queue: redis
    • 外形監視ワーカーサブシステム 切り出すと単体の状況が見れる
  • Graceful restart
    • github.com/braintree/manners
    • githubb.com/lestrrat/go-server-starter HTTP server(daemon)を簡単に作れる -> ?
  • Mackerelのサイトは はてなブログで運用している
  • paranoidhttp 内部DNSへの解決を禁止する
  • Golang
    • ロスコンパイル ちゃんとやると意外と大変
    • 書き捨てしづらい
    • 実用言語としての割り切り perl
    • 継承よりコンポジショん
  • MackerelにおけるHaskell
    • プロファイラ 劇的に毅然
  • リリースの自動化
    • Travisがgit pushする 止めれるようにしておく
    • 自動化機構は負債になりやすい? 肥大化 テスト困難
    • ツールをテストする ツールの責務をわける 手元で実行できるように
    • Github Deploy keys-
  • perl 全部Scalaだと大変 前段にやわらかいWebServerあったほうがいい
  • ruby: fluentd-plugin-mckerel / mackerel-client
  • はてな東京のエンジニア 1年で6倍!(6人)
  • QA
    • 言語の適材適所すると属人化しない? なりがちだが、レビューさせたり書いてもらう
    • Golang vendoring? 外部ライブラリは今の所慎重に使ってるので困ってない
    • buildスクリプトperlGolangレポジトリに入っているのは?
      • perl好きだし、軽いし違和感ない
    • deploy時間 最短20分だがテストもするので1時間とか

Mackerelはお世話になってるのでメモはけっこう飛び飛び、、、だったのだが 開発環境周りの話はそんなに聴いたことなかったのですごいためになった。 ServerはAWSじゃないんすね (それもそうか)

NASA主催の世界最大級ハッカソンSpaceAppsを運営した話 湯村さん

  • SpaceApps (International SpaceApps Challenge)
  • 衛星コレクション
  • 事務局はSpaceAppsのために結成 ボランティア
  • キャパ ハッカソンなので多ければいいわけでもない
  • スポンサー 参加費は不可のルール
  • 無断キャンセル対策 以降お断り文言掲載
  • 運営の情報共有 Timezoneが違うので1日3回MTG開催、どれかに参加
  • コミュニケーション重要 MTG後に食事したりとか。
  • ドキュメンテーション大事 やったことを全部書き出す 941ブログ Makiさん
  • イベントの運営側に参加してみよう
  • QA
    • 事務局長の仕事とは やる人がいないもの全部

世界で2番目くらいの規模のイベントだけど今まで知らなかったので参考になった。 イベント弱者だけど機会があれば・・・

Docker3兄弟について アルパカ大明神さん

  • Docker Machine / Docker Compose / Docker Swarm
  • Docker Toolbox
  • causion!!! all beta vesrion
  • Docker Machine: VagrantのDockerバージョンみたいなもの?
    • cloud上も同じIFで操作できる
  • Docker Compose: YAML定義から管理
    • extends 他のYAMLをincludeできる
  • Docker Swarm: filters strategies
  • Usecase
    • 開発環境配布 docker-compose.ymlもレポジトリに配布しておく
    • volumeでローカルと同期して、、、
    • Multi cloud cluster ?
  • zenbutsuさん
  • 開発環境としては十分利用可能

Docker早く使えるようになりたい。開発環境として十分というのは心強い。

3分でサービスのOSを入れ替える技術 hsbtさん

  • YAPC通らなかったペパボ社員->ペパボテックカンファレンス
  • 3ヵ月後にCM時にサービスを落とさないようにして?
    • Web+DB
    • 謎サーバ 単純平行ではない 数台ごにょごにょ
    • scale automatic 高速
    • 特命チーム
  • Scale out
    • old: golden image 秘伝のタレ
    • host情報を起動後に書き換える 手で。手順書 半日
    • できたらつなぎかえる 5-6台 tanpopo work
    • Scietific linux 6.x <- 火を噴く
    • new: puppet
    • 書きかけだった <- 書き換えた
    • ローカルモデルからagentモデルへ
    • コード化できた
  • Automation
    • sshを使わない 何でもできるものに制限を課すとイノベーションが起こる
    • cloud-init: YAML(userdata?)で起動時実行できる run_cmdは使わずpuppetに寄せた
    • Applicationはhostname/ipに依存しない 処理はIaaSからAPI取得
    • hostname情報みたいなのを消してImage登録自動でする
  • 稼動するとなかなかUpgradeできなくなるので、先にRails4にした。
  • いきなりHerokuみたいなことをすると爆発するので目も前のものを着実に自動化
  • 高速スケールアウト
    • 上記まででも1時間
    • capistrano3導入
    • Rails Bundle (内製) pull型 S3
    • Consul+consul-alert: nagios弱者、、、
    • mackerel: 1Roleに50+host, retire API -> shutdown init
      • 「公式がサポートして技術者の努力が全部無駄になりましたw」
    • fluentd
    • thor: sub commandを作れる
    • 人間が予測しなくてもよいアーキテクチャを使いましょう
    • 手作業にしない
    • ここまでで20-30分
  • 番外:Antipopさん Youtuberになりたい
  • 手順を分類 Slow Operation, Fast Operation
    • Minimal image (phase1)
    • 起動しただけでRailsが走るImage (phase2)
    • 重い処理の区切りごとにImageを作る->Packerで
    • Packer
      • Image creation の手前でServerspec実行
  • Infra CI: Drone CI->puppet
    • refactoring puppet manifests
  • BlueGreenDeploy
    • AWSはELB、OpenStackはnginx+consul-template,nginx-mruby
  • 今後
    • image作成の自動化
    • docker
  • QA:
    • ScaleするとDB等にかかる負荷はどうみてるのか? 1->10ということはないのでまだ大丈夫
    • Scaleout trigger: TV parameterから

ここでもConsul。Consulの話3回も聴いたし何か当たり前になってきてそう。 ちょうどこの前お試しで組み込んだばかりなので聴けてすごい捗るし、 どうやってこの仕組みを考えたかの背景まで聴けて参考になった。

【特別企画】YAPCあるある(仮)

立ち見なのでメモなし。 面子見てアッと思って直前に飛び込んだけど期待を裏切らなかった。 サラッと色々名言が飛び出してた気がする。動画ないのかな? yusukebeさんが緊張してた気がしてこの面子だとそりゃそうかっていう。 YAPC初参加組だけど楽しめました。

HTTP2 時代の Web jxckさん

これも立ち見。入れ替え時に前の席行こうとして失敗するという。 日本だしまたチャンスあるかもしれないしBrad Fitzpatrick見るべきかもとも思ったが、 Jxckさんのトークは本当にうまいしわかりやすいしワクワクするので聴きに来てしまった。 そしてめっちゃ満足している。社内勉強会に来てくれないかなとか思ってしまう。

Lightning Talks Day 2

めちゃくちゃ面白かったし、思った以上にレベルも高かった。 というか色々突き抜けてた。 完全にエンターテイメントだったので酒ありで再演を要求したい。 (すいません、調子にのりました)

クロージング

おつかれさまでした!

感想

すごい充実していた気もするし、しかし自分の参加の仕方は普通の勉強会の延長でしかなくて、 もっとスピーカの人達と交流したりした方がいいんだろうなぁと思う。 それでも今回のお祭りの一端に関わる事ができて良かった。 勉強会で発表できるようになるのは目標だけどおっさんになり過ぎたので 若い人が発表するのを酒飲みながら野次飛ばして聴くくらいがいいのかも。 (というgdgdな感想も酒飲みながら書いてます)

ともかく今回YAPCに関わった皆様、歴代のYAPCに関わった皆様もありがとうございました。お疲れ様でした。