NEWS

e-ZUKA Tech Night vol.37 レポート

皆さんこんにちは!またまた遅くなってしまいましたが5月18日に開催いたしましたvol.37のレポートをお送りいたします。

写真 2016-05-18 18 14 35

まず、最初のセッションはGMOペパボ株式会社近藤宇智朗さんに

「Consulの活用方法再考 Consulはなめらかか? -Consul活用方法再考-」

というテーマでお話ししていただきました。

始めに運用の自動化について。サーバ管理を引き継いで、いろいろいじってるとそれぞれ秘伝のタレができてきて、手順書を作ることができるとのこと。手順とは、手続きでありこれはプログラミング可能という考えだそうです。

そしてここで登場するのが“Consul”
Consul = オーケストレーションツールという意味でInftastructure as Codeという考え方。インフラのお仕事をオーケストレーション、コンフィギュレーション、ブートストラッピングするということ。
AWSのCloudFormationや、CloudFormationを汎用化したTerraformなどのIaaS上でサーバ/ネットワーク/ストレージといったリソースを制御するためのサービスとConsul、etcd、zookeeperのようなConfiguration Registryに分類されるとのこと。

Raft Concensus Algorithm = 分散合意アルゴリズム。
合意とは何か?これは複数のサーバ間である一つの値に対して合意する、ということ。
Raftではいくつかのサーバが壊れても合意できること、ステートマシンの複製をサーバ間で行っていることが重要。

Consulは、合意アルゴリズムを用いて複数台のサーバ間で状態を共有しているとのこと。
consul execの中身=コマンドの中身をKVSで共有し、受け取ったノードはそれを実行、終わったら消す。
クラスタ全体の変化、つまりノードの追加・削除、ノードで動くサービスの状態、ノード上のサービスのヘルスチェック結果、ノードで共有しているKVSのデータ等、を監視する。
動的なロードバランサーもConsul使うと少量のコードで実現できるそうです。

<事例その1:stretcher>
pull型デプロイミドルウェアのパイオニア。
今まではcapistrano使っても基本的にpush型だった。デプロイのイベントを発火するとS3からマニュフェストを取得、tarballを取得し、展開&後処理をしてくれる。今までのpush型のデプロイは、サーバが100台にもなると、1つのクライアントから100本のSSHコネクションができるので破綻するが、pull型だと各サーバが非同期でそれぞれデプロイする。

<事例その2=TLS session ticket>
TLSのセッション鍵を保存し再利用する仕組みがあるが、サーバが複数あると暗号化のためのマスタ鍵を全サーバで共有する必要がある。ただその1つのマスタ鍵が漏洩すると過去のデータ漏洩になるかもしれないため、定期的なマスタ鍵の定期更新が必要。イベントをタイマーに仕掛けて全サーバのセッションチケットを更新する。

<事例その3=collector>
2台のサーバの前にVIPを振る。DNSラウンドロビンとの相性が悪い。では動的にDNSを更新してみようということで導入したのがcollector。

最後に質問…
「イベントが使った後にちゃんと更新されたという通知をイベントで受け取るにはどうすれば良いか?あと1回だけ実行したい場合のベストプラクティスは?」
イベントは複数回来るものとして冪等に作ってください。終わった結果はデプロイされたリビジョンをダッシュボードに表示するツールなんかを利用すると良いですとのお答えでした。

Consulは非常にシンプル!
Consulはいろんなツールと組み合わせて利用する。シンプルなアーキテクチャなので、AIを駆動する基盤に使えるかもしれない。アイディア募集中です!最後に皆様のような優秀な学生を待ってます!とお話しされていました。

続いては、GMOペパボ株式会社松本亮介さんによる

「なめらかのシステムのアイディアと設計概要。生命の観点からWebシステムを解釈する。 」

です!

最初はWebサービスの状況と課題について。
まず、Webサービスは快適に利用できて当たり前の世界になっているがWebサーバ運用が大変で、監視の閾値設定ひとつにしても難しいという状況だそうです。
そこで課題↓

  • 一時的な高負荷は無視したい。
  • 傾向が変化する高負荷は予測したい。
  • 正常に見える異常を検知したい。
  • 段階的な傾向の変化も検知したい。

現時点でこれをやろうとすると人の目による運用が必要になる。しかし自動で制御して人間がすべきことに注力したい…
なので”人工知能のアプローチ”
データマイニングの観点から変化点を検出し、検知ができれば異常状態を予測して自動で制御できるとのこと。Webサーバの設定をプログラム化(mod_mrubyとか)し、特徴量を時系列データとして抽出。設定プログラム経由でOSリソースを制御する。あとは、引き出したデータの解析と検知、特徴量の定義と検出。解析は変化点検出やクラスタリングなど様々な手法があるそうです。解析手法はいろいろあるので、特徴量の定義が重要。例えば、複数データの関係性を見る。複数のデータの相関関係の時系列データを作る。関係性を自己監視し、自動でリソースを制御する技術。実はここまでは10年前からあったそうです。
生命とは?そういった定義も昔から研究がされているそう。生命とは動的平衡にある流れである。やがて崩壊する構成成分を先回りして分解し、乱雑さが蓄積する速度よりはやく再構築を行う。
秩序を守るために絶え間なく壊して作り変える。自らの制御で平衡状態を作る。細胞周期チェックポイント。細胞自身が自分自身を監視して異常がある場合は周期進行を減速する。
細胞=サーバ(プロセス)であり、動的平衡=絶え間ないサーバの破壊と再構築である。Webシステムを生命のように扱う。すると高度なシステムは生命のように見える。
コンピュータは長い間動かすと何らかしら異常となるが、異常(エントロピーの増大)からは逃れられない。そこで自己監視で自ら壊し、増殖し再構築すればいい、とのこと。

なめらかなシステムと命名。
ソフトウェアも壊れる前提であり、バグやメモリリークの無いソフトウェアは無い。
VMをプロセス、コンテナをスレッドとみなす。
OSのスケジューラやリソース制御等を外出し。常に12の稼働中が存在する前提で長くいた稼働中を停止中にし、停止中を稼働中に定常的に循環させる。ApacheのMaxRequestsPerchildのイメージ。

リソースは有限なので自分で制御。
Webサーバの自律リソース制御。
Webサーバがリクエストを処理するのに使ったリソース使用量を検出。常に循環してるので、OSやライブラリの新しさが担保され、セキュリティパッチも常にあたってる状態になる。

<実現に向けてまず取り組むべきこと。>
システムのデータと処理を明確に分ける。状態を持つVM、状態を持たないVM。そのうち処理するシステムに”なめらかなシステム”を適用する。

最後にみなさんからの質問にお答えいただきました。
「変化点検出する際に、危険値はすぐに検知したいが、100台といったレベルのクラスタですぐに検知するにはどういったアルゴリズムを使えばいいのか?」
これには、自分で変化点を検知してアラートを出す計算量の少ないアルゴリズム(SDAAとか)を採用する必要がある、とのご回答。

なお、ペパボさんでは興味のある学生さんをお待ちしてます!ペパボ・はてな技術大会開催します!HP公開した直後はおっさんばっかりだったので、学生さんお待ちしてます!とのことでした。

お二方の発表資料等がGMOペパボ株式会社さんのNEWSに掲載されております。
https://pepabo.com/news/lecture/201605201600
近藤さん、松本さんありがとうございました!

続いてはLTコーナー!
最初は九工大の森田さんの「Raspiでだれかいますか?」
研究室LINEで、今誰か研究室にいるかLINEで確認する→LINEに投げると3日経過→時間差で被ったりフェイント。今日のテックナイト風にいうと、「なめらかなフェイント」これを解消するためにFelicaリーダと連携したQiityaを制作(注:Qiitaとは一切関係ありません) RaspiとFelicaリーダーをつなげてHeroku上のAPIにポスト。APIが返す属性のattendの値をopacityに反映するのが良い感じ。

続いてはHAW村上さんの「悶々としている学生へ贈る」
TechBBQやるので悶々としてる学生さんは是非お越しください!(←TechBBQは大好評のなか終了しました、またの機会をお楽しみに!)

続いては北九州市立大のMarii Yamadaさんの「描いて!育てて!ペットリアン」
昨年のチャレキャラに出場したそう。Unityで作ったスマホアプリで、ただのペットを育てるのではなく人の想像力で育てます。たまごっちとかじゃないです!まほうのペンで自分のペットリアンにお絵かきできます。お絵かきした内容を反映して育てられるそうで8歳の女の子にバカウケでした!とお話しされていました。
チャレキャラに出てアイディア賞とヤング賞と孫泰三さんの個人賞もらったそうで、6/29-7/1に東京ビックサイトで開催するプロダクションEXPOに出展します!ただお金が無いのでスポンサー募集していて、私達を東京につれてってください!とのことでした!

続いてはAkio Itaya さんによる「卒研内容が製品化に!?」
今回リリースしたアプリ「PASTEカメラ」既にリリースしており、自動で顔検出して隠してくれて好きな画像をかぶせることができるものだそうです。
昨年チャレキャラで発表したSmartravelというゲームもリリースしたので、ぜひどちらか触ってみてください!とのことでした!

続いては九工大のAki(Freddi) さんの「遺伝的アルゴリズム使ってみた」
遺伝子を作って環境に合うか確認、合わない遺伝子を淘汰、生き残った遺伝子で交叉、そして突然変異をC++で書いてみました。世代数が増えるについて最適値に近付く。ただ対象によってはえらい時間かかる。といったお話をしていました。

続いてのLTにはお馴染みHAWの山内さん「ありがとう船橋オート、あの日のことは忘れない。東京駐在報告」
船橋オートレース場が廃止!Congrechainの受賞が近いとなってopenassetsrubyにプルリクマージされました!わかる人にしかわからない?大爆笑のLTでした。

続いてはOPTiM栗原さんの「OPTiMと一緒」
第4次産業革命します!IoTでモノ同士が繋がって協調動作する時代に…
Robot + AI + IoTの新たな研究開発拠点を九工大前の研究開発センターに開設しました。基本的に九工大のアルバイトスタッフがメインで、社員は栗原さん一人なので、気軽にお越しください。

最後は @goking の「Consulはなまめかしいか?」
ブロックチェーンを扱う実証環境Chaintope開発しており、 内部構成としてはDockerやConsulを使っている。Consuleロゴからしてなまめかしい!ということはひとまず置いといて、本日のメインはチャレキャラの紹介です。昨年は80名以上の学生さんに参加してくれましたが、なんと九工大0名!これはなまめかしい!いや嘆かわしい!ということで、6月に各大学で説明会実施します!のでぜひご参加くださいとのことでした。

全員写真
最後の最後に全員写真!50名以上の方にお越しいただきました、ありがとうございました!

ということで、次回のe-ZUKA Tech Nightは7月(もうすぐですね!)を予定しています。告知までもうしばらくおまちください!