前夜祭、1日目のエントリ
oinume.hatenablog.com oinume.hatenablog.com
ちなみにトークはYouTubeにアップロードされる予定だそうなので、正座して待ちましょう。
実はホットでオープンな Microsoft Azure
@myfinderさん。前夜祭で会った時に少しだけ話を聞いていて、面白そうなので聞いてみることにした。自分はもっぱらAWSしか使ってないけど、データのストリーム処理のところは使えそうだなぁと思った。その辺は自分たちのチームで開発しているのではなく、社内の別のチームに丸投げしているのだけど、かなり便利そうなのでもう自分たちでやるのもありなのでは?と感じた。
Azure
- IaaS/PaasS/SaaS
- 2014/02に日本データセンター開設
- たくさんサービスある(500+)
- リージョンたくさん
- 日本だけで2箇所!
いけてるサービス
- データ解析サービスの組み合わせ
- Azure Stream Analytics with Event Hubs (リアルタイムデータ処理&分析)
Azure Stream Analytics with Event Hubs
- Azure Event Hubs
- 1500万req/sぐらいさばける!!(あと4倍ぐらいいけるのでは?)
- Stream Analytics リアルタイムデータ処理
- SQLライクに処理できる
Power BI Dashboard
http://qiita.com/myfinder/items/88cdad77c7472a02db61
Azure Machine Learning
Azureの下回りの話
- コンテナ搬入Video
- Catapult = 汎用サーバー+専用ボード
IaaSのモデル
- Compute
- Network
- Storage
- リソースグループ - 複数の要素をまとめるもの
Software Designed Network
- ユーザーが仮想ネットワークを作ると何が起こるのか
- NVGRE
- Internet -> Azure SLB MUX(LoadBalancer) -> Azure SDN Stack(VFP)
- 「NVGREのすべて」というMSの人が書いた本がある
Azure Service Fabric
- Microserice向け
- 他のクラウドでも動かせるようになる
- オンプレミスにもAzure Stackが動かせるようになる!
質問
- OSSは使っているのか?
- 使っている
- https://www.google.com/search?q=windows+azure+portal&hl=en&lr=lang_en%7Clang_ja
- 情報収集の方法は?
- Azureではデータの処理と保存が別になっている
Adventures in refactoring
Ben Lavenderさん。
- work at GitHub on internal tools
Refactoringとは
(なるべく)振る舞いをかえないでコードを変えること
consistency
- DRY
Measuring Success refactoring
- 振る舞いをかえない
- ソースの行数が減っていること
- テストカバレッジが改善されていること
- パフォーマンスの改善
Reason to refactoring
- 開発者が嬉しい - Developer Happiness
- パフォーマンスがよくなる
- 将来に対しての自信になる Gain confidence for Future Work (AKA paying off technical debt)
- Developer education
technique
- go fmt
- types for verbs
- Add useful abstractions
pull.branch_valid? pull.branch_exists? ↓ pull.branch.valid? pull.branch.exists?
- Remove unused abstractions
- deprecate :fetch, "Migrate" to fetch_with_limit plz"
- CIはコケる
- 本番では動く
- Backwards compatible design
Write tools
- Backscatter
- back_scatter 72をコードの中に入れると、どこからcallされているかが別の画面で見れるようになる
- def owners_team ; backscatter_deprecate_method ; end
- science
science "widgets.loading" do |e| e.use {} e.try {} end
Complaining
- Really good search/replace
- Extract resource
- Language facilities
わからなかった単語
- generally speaking
- criteria
questions
- Sometimes refactoring is boring but it is necessary, so my question is, Is there a commendation system for refactoring at Github
- emojiとかで称えてるよ。praise: 褒め称える
ソーシャルゲームにおける AWS 移行事例
RDSへの移行
- connect時にタイムゾーン設定
- rebootした時にfailoverさせる機能があるので、検証で使った
- レプリ時にNOW() 使ってるとタイムゾーンずれちゃう問題
- インポートだけで209分
- 手順を工夫して90分
ElastiCache
- 60秒ぐらいの処理でフェイルオーバーしてしまう
Go Debugging , Profiling, and Optimization
@bradfitzさん。memcachedの開発者でありMogileFSとかDanga::Socketとか有名なソフトウェアを作っている。今はGoogleでGoの開発チームで働いている。せっかくのトークだったのに途中でアラートメールが来て半分以上聞けなかったのが残念だった。Goのオブジェクトのメモリ割り当ての話とか、かなり深いところまでつっこんで話していたので、スライドをあとで熟読したい。
パフォーマンス
- benchmark: b.ReportAllocs()
- benchstat っていうコマンドもある
- import (_ "net/http") でインポートして http://localhost/debug/pprofでアクセスするとプロファイリングできる?
質問
最後に
今日は@kyannyさんと話す機会があって(というか一方的に話しかけただけなんだけど)、Quipperの国際展開(フィリピン、インドネシア、メキシコ)や現地のエンジニアとどういう風に開発しているかという話が聞けて嬉しかった。
YAPCには2006年からほぼ毎年行っているのだけど、YAPCで会って仲良くなって飲みに行くぐらいの仲になったり、ここに来ると純粋にもっと開発したくなる気持ちになるので、今年で(JPA主催の)YAPCは最後になってしまうのはとても残念。でもYAPCがあるから普段話さない人とも話すことがあったし、得られたことがとてもたくさんあったので本当に運営の牧さんやJPAのみなさんには感謝しています。今まで本当にありがとうございました!!