【勉強会】July Tech Festa 2016
2016−07−24 July Tech Festa 2016
これに行ってきた。
Mackerelの技術の全て。これまでの道のりと更なる発展に向けて
Mackerelの技術の全て。これまでの道のりと更なる発展に向けて
インフラを意識してコードを書くということ(ブログ)
Mackerel
- 社内ツールはクラウド化の流れ、ビジネスの本質に集中するため
- モニタリングの重要性の向上
- 全てのサービスで健全性と一般的な監視関連のメトリックを同じように出力することをおすすめする
- 開発体制
- アーキテクチャ
- Why Scala?
- Why Go?
- URL外形監視ワーカー
- 毎分、Webをたたくヘルスチェック
- ここもGo-lang
- MackerelからJob投入、redisにキューしてて、監視対象のWebをクローリング
- 自動化機構の罠
- 属人的になり、負債になりやすい
- コードを書く=即負債
- Perl
- だいたいどこでも動く
- Ruby
- fluent−plugin-mackerel
- fluetndでメトリック取ってMackerelに投げるとか
- Chef、CapistranoもRuby
- Python
- ドッグフーディング
- 自分が使うツールを自分で開発できる
- 監視はつまらないものではない
- 普通のWebアプリでは使わない技術を使う必要がある
- アプリエンジニアとインフラエンジニアの差がなくなってきてる
- ユーザごとに異なる技術スタック、言語、MW、OS、Cloud、を学べる
- 自分のキャリアを活かして、ビジネスに結び付けられる
- 自分より優秀なエンジニアと働ける、自分も研鑽できる
MOM (Message Oriented Middleware) に求めるモノ
DMM.comラボ 大山裕泰さん
www.slideshare.net
目的
- MQ技術とMOMの特徴
- MOMに求めるもの
- 用途に応じたMOMの選択
What is MQ
- プロセス同士のMessagePassingをサポートする仕組み
- ProcessAとBの間にBrokerを介す
- Pub/Subモデル、複数プロセス間の通信
Why MQ
- もしMQがなかったら、
- 連携の一部システムが停止した場合に、連携元は再送を考えたり
- 連携先が一つ増えた場合、連携元は送信先を追加したり
- アプリケーションが考えないといけない
- MQがあれば、
- AとBはお互いの状態を意識しなくて良くなる
- Broker MQ
- Pres:Scalability,Isolation
- Cons:moreTraffic、moreLatency
- Broker-less MQ
- Pres:lessTraffic、lessLatency
- Cons:Scalability,Isolation
What the best MOM is?
- 完璧なMOMはない
- 目的と、各特性を知って、選択が必要
特徴
AMQP(Advanced MQP)
- 柔軟なメッセージルーティング
- EXCHANGEがBrokerの役割
- SubごとにQueueを用意
- メッセージに情報をもたせてルーティングができる
- (通常は全Queueにばらまいちゃうところ、条件で絞り込みができるという意味)
STOMP
- Text-baseによる簡素なプロトコル
- BinaryBased、テキストをバイナリにEncodeして送って、受信側でDecode
- TextBased、テキストのまま連携
- CPU負荷は下がる、NW負荷は高い
MQTT
- 軽量なメッセージプロトコル
- HTTPに比べて軽量、例えばヘッダサイズ
- データ本体が大きければ誤差、IoTとか小さいデータの時に有効
- 高品質な到達保証
- At-most-once、最大で1つ
- メッセージ投げっぱなしで、投げたら捨てる
- At-least-once、最小で一つ
- ACKが返ってきてから削除
- Exactly-once
- PUBLISH、PUBREC、PUBREL、PUBCOMP
KAFKA
- Scalable
- forAvailability
- クラスタ構成を前提としたアーキテクチャ
- forPerformance/Capacity
- 順序保証をしつつメッセージを並列取得できる仕組み
- 通常はSubを一つにすることで順序保証、ただスケールできない
- KafkaはQueueをPartitionに分けて、SubをConsumerでわける
- 順序保証が必要な単位でPartitionを分けておく(=スケール)
- キューの内容をストレージで永続化できる、他の製品はメモリ上に持つ
What purpose to use?
- 非同期通信
- システムの孤立化/Isolation
- 負荷平準
- スケーラビリティ
- データストア
How MOM use?
SENSU
OpenStack
IBM
Conclusion
用途に応じて最適なMOMを選択する
AMQP(RabbitMQ)
- MQTT(ActiveMQ)
- STOMP(NewtMQ)
- Kafka
- ZeroMQ
運用自動化のための、ゼロから始める監視設計
クリエーションライン 前佛雅人さん
www.slideshare.net
目的
- ゼロから監視設計
- ヒューマンエラーの考慮
- 知識x経験を自動化でさらに活かす
現場あるある
- なぜこの監視項目があるかわからない
- いざ監視しようと思ってもできない
- ツール選定の話をすると職場が荒れる
運用監視
- 監視=運用を評価する手段
- キャパプラ、トラシューのため
- あくまで、運用を回すために必要なものが監視
00年代から10年代にかけて、システム管理はサイト運用技術に拡張してきた
Architectures for open and scalable clouds
- ペットから家畜へ
ゼロからの監視設定
サービスレベルの監視
- プロトコル
- 応答速度
- サービス遷移
- セキュリティ
非機能要件としてのシステム監視
- プロセス
- システムリソース
- ログ
- ネットワーク
- ハードウェア
必要な知識
- OSを知る、理解する、使う
- 基本コマンド群の理解
- 自由に使えるプログラミング言語
必要な経験
- インターネット上に自分のサーバを運用する
なぜ自動化なのか
なぜ人は失敗するのか
- 運用における失敗とは
- システム稼動前→適切な設計で回避する
- 不適切な運用フロー
- 監視、通知設定ミス
- システム稼動後→人が介在すると必ず失敗が起こる、精神論では回避できない
- 作業ミス
- 異常時のリカバリ失敗
- 運用フローが機能しない
- ラスムッセンのSRKモデル
- 知識、規則、熟練
- 知識がなく余裕がない
- 規則に従ってマニュアル通りに事故を起こす
- 熟練することによって手順省略、思い込み
- 障害に強い設計
- 手作業の排除と完全な運用や監視の自動化はちょっと違う
- 人によるダブルチェックを信用しない
- 手作業が入る場合は、自動テストツールを一緒に組み入れる
- 局所最適化は意味がない
- 自動化システムの維持が目的化してしまう
- 何のための運用なのかを忘れずに
- ツールに縛られると、ツールの制限に縛られる
- 目的:誰が使うのか、開発は自社か他社か、運用は?
- 個人は経験を蓄積すべき
- 自分で手を動かす
- 組織は知識を蓄積すべき
- ドキュメント化を進めるべき、なぜこのような運用設計、監視設計をしているのか
- 運用でもテストをする文化を根付かせる