Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

janogdon.netはじめました

1,794 views

Published on

JPNIC総会講演会で喋った資料。
Mastodonについての技術的概観、課題、未来、等について喋った

Published in: Internet
  • Be the first to comment

janogdon.netはじめました

  1. 1. janogdon.net はじめました 2017/06/16 DMM.comラボ 佐々木 健 JPNIC総会講演会資料
  2. 2. 2 時系列 ● 4/13 マストドンがメディアに取り上げられ突然ブレイク ● 4/17 JANOG40プログラム募集締切日、エイヤでマストドンプログラム応募 ● 5/1 janogdon.net のインスタンス立ち上げ ● 5/2 JANOG40スタッフからプログラム採用の連絡 ● 5/2 janogdon.net 立ち上げを細々とアナウンス ● 5/10 JANOGのメーリングリストでアナウンス ● 5/10 IPv6対応 ● 5/16 JPNIC総会での登壇依頼 ● 6/5 バージョンアップ(1.3.2→1.4.1) ● 6/12 JPNIC総会向け資料提出締切
  3. 3. 3 janogdon.net とは https://janogdon.net/about の内容↓ 注意書き↓ とりあえず立ててみただけ。気まぐれで落とすかもしれない。 JANOGer っぽい人用?、と思ってるけど、JANOG運営委員とは連係してな いよ。 janogdon ≠ JANOG だよ、と。 自由に遊んでくれてOK。 でも mastodon はアカウント削除機能が未実装なので覚悟してアカウント登 録してね。(※バージョン1.4.2で実装されました) 裏側のこととかは、どこかのJANOGの発表で使わせてもらうかもしれない。 サーバはさくらのVPS、非力なスペックなので、あんまりいじめないでね。
  4. 4. 4 janogdon.net とは 2017/6/12時点
  5. 5. 5 本日のネタ ● Mastodonの技術的概観 ● Mastodonの技術的問題点 ● Mastodonは今後どう発展するか? (勝手な予測)
  6. 6. 6 Mastodonの技術的概観
  7. 7. 7 高機能なMastodon ● Twitterに似たモダンなウェブインター フェイス ● Twitterに似たAPI ● バックエンドにデータベース ● インスタンス間通信のための仕組み
  8. 8. 8 clocコマンドでMastodonを調べる ● cloc(Count Lines of Code) – https://github.com/AlDanial/cloc
  9. 9. 9 clocコマンドでMastodonを調べる % cloc mastodon 3281 text files. 3231 unique files. 2198 files ignored. github.com/AlDanial/cloc v 1.70 T=6.77 s (191.3 files/s, 11428.1 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Ruby 632 5774 1369 20975 YAML 148 197 145 16042 JavaScript 216 2503 1862 12703 JSON 35 0 0 6496 SASS 23 938 5 5162 Haml 86 286 22 1421 ERB 115 369 0 617 Markdown 27 67 0 304 HTML 6 4 0 73 XML 2 0 0 11 Bourne Shell 1 4 3 7 CSS 4 0 11 4 ------------------------------------------------------------------------------- SUM: 1295 10142 3417 63815 -------------------------------------------------------------------------------
  10. 10. 10 clocの出力結果からわかること ● 6万行程度のコンパクトなコード。 ● Ruby上の仕組みを使ったフレームワークで書かれてい る。 ● JavaScriptのコードも多い ● モダンな拡張言語も活用されている。 – SASS:スタイルシート言語 – Haml:HTMLテンプレート言語(Railsで良く使われる) – ERB;HTMLへのRubyスクリプト埋めこみ技術
  11. 11. 11 他のソフトウェアと比較 ● bind-9.11.0-P5 〜みんな大好き? ● inn-2.6.1 〜NetNewsのソフトウェア ● IRCD-Hybrid 〜IRCデーモン
  12. 12. 12 bind-9.11.0-P5 % cloc bind-9.11.0-P5 4722 text files. 4434 unique files. 2568 files ignored. github.com/AlDanial/cloc v 1.70 T=8.49 s (255.2 files/s, 102860.2 lines/s) --------------------------------------------------------------------------------------- Language files blank comment code --------------------------------------------------------------------------------------- C 768 66345 56380 363251 Bourne Shell 444 19049 20143 133091 HTML 116 548 795 44516 C/C++ Header 609 10477 42156 31248 XML 13 1258 138 21412 m4 32 1989 818 17860 C++ 74 3487 3129 17191 Perl 61 1571 1771 8472 XSLT 7 146 138 1588 Tcl/Tk 2 174 149 842 Windows Module Definition 9 20 52 513 Python 5 64 63 366 make 13 112 70 319 Windows Resource File 2 41 47 249 diff 1 31 74 240 awk 5 69 145 236 CSS 1 31 28 140 Markdown 1 22 0 64 Protocol Buffers 1 49 170 49 Windows Message File 1 8 1 29 DTD 1 8 33 20 TeX 1 3 6 8 --------------------------------------------------------------------------------------- SUM: 2167 105502 126306 641704 ---------------------------------------------------------------------------------------
  13. 13. 13 inn-2.6.1 % cloc inn-2.6.1 894 text files. 885 unique files. 406 files ignored. github.com/AlDanial/cloc v 1.70 T=1.55 s (314.1 files/s, 138891.9 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- C 262 16751 20114 94598 Bourne Shell 28 6071 6476 35541 m4 37 1091 986 10219 C/C++ Header 94 1390 3311 4503 make 24 579 230 3556 Perl 22 343 1355 3107 Visual Basic 5 341 0 2588 yacc 1 212 19 842 Python 10 137 445 343 lex 1 46 12 197 CSS 1 3 7 79 XSLT 1 8 42 78 Korn Shell 1 26 81 18 Oracle Forms 1 3 0 15 ------------------------------------------------------------------------------- SUM: 488 27001 33078 155684 -------------------------------------------------------------------------------
  14. 14. 14 IRCD-Hybrid % cloc hopm-1.1.4 101 text files. 94 unique files. 14 files ignored. github.com/AlDanial/cloc v 1.70 T=0.26 s (331.9 files/s, 230088.4 lines/s) ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Bourne Shell 10 4133 4547 24884 m4 16 1009 131 9678 C 23 1903 2632 8746 C/C++ Header 30 195 443 814 yacc 1 147 28 552 lex 1 60 26 285 make 5 6 0 70 YAML 1 5 1 19 ------------------------------------------------------------------------------- SUM: 87 7458 7808 45048 -------------------------------------------------------------------------------
  15. 15. 15 比較結果 ソフトウェア 総code数 主な言語 Mastodon 63,815 Ruby,JavaScript bind 641,704 C inn 155,684 C IRCD-Hybrid 45048 Shell + C Mastodonは高機能な割にコンパクト モダンな開発言語のパワー!!
  16. 16. 16 Mastodonのコードの特徴 ● 機能のわりには相当コンパクト ● フレームワークをうまく使っている ● 複数のソフトウェアを連係動作させている ● 運用を楽にするために、Dockerのコードも 記述されている ● Github上でメンテナンスされている。 ● 進化がとても速い
  17. 17. 17 Mastodonが利用するソフトウェア ● Ruby on Rails ● PostgreSQL ● Sidekiq ● Redis ● Node.js ● Docker(使わなくても良い)
  18. 18. 18 運用上必要になる外部ソフトウェア等 ● Linux OS基盤 ● リバースプロキシ(Nginx) ● メールサーバ(Postfix) ● 監視ツール
  19. 19. 19 実装上の問題その1 ● インストールが大変 ● アップデートが大変 ● 理解すべき技術要素が多い ● トラブルシュートが難しい →ちゃんと運用するのはハードルが高い
  20. 20. 20 実装上の問題その2 ● アカウント削除機能がない (※バージョン1.4.2で実装されました) ● 管理機能が弱い ● 外部認証が未実装 ● 高負荷環境時にボトルネックになる箇所が存 在する →商用サービスとして利用するには機能不足
  21. 21. 21 インスタンス間通信に用いられる OStatusの問題 ● まとまった仕様書がない ● インスタンスをまたいだメッセージの削除が できない? ● URIをキーに用いてしまっている ● 安全なインターネットを前提にしている →プロトコルとしてまだ発展途上?
  22. 22. 22 耳にしたことがあるクレーム ● PostgreSQLではなくMySQLを使っ て欲しい ● Reactを使ってるのはダサい ● UIが絶望的に良くない ● APIとUIは分離させるべきでは
  23. 23. 23 Mastodonは今後どう発展するか
  24. 24. 24 オイゲン・ロチコ氏かく語りき at 「マストドン」ブリーフィング(6/7) ● Rubyが好き。 ● PostgreSQLはRuby on Railsのdefaultチョイス。 ● 最初はAPIだけを実装した。 ● 元々Twitterのヘビーユーザであり、UIはそこからヒントを得て作った もの ● シングルサインオン等は実装予定。 ● プロトコルも変えていく。 ● 最近のアップデートは変化が大きくて大変なのはごめんなさい。で も必要なこと。 →確信を持って設計と実装をしている。今後も確実に進化する。
  25. 25. 25 こうなると嬉しい?(インストール) apt install mastodon curl -fsSL https://****/ | sh →やればできるはず
  26. 26. 26 こうなると嬉しい?(インスタンス起動) kubectl run mastodon --option... →これもやればできそう
  27. 27. 27 こうなると嬉しい?(運用しやすい実装) ● コンポーネント毎にコード分離 – データストレージ – バックエンドコード – フロントエンドコード – アプリコード ● デプロイが楽な言語でリライト – Go言語とか? →別実装が出てくるんじゃないかと期待
  28. 28. 28 こうなると嬉しい?(クラウドサービス) ● SaaS – さくっとインスタンスを構築 – アップデート等はおまかせ ● BaaS – アプリに特化し、APIだけを提供 – 良くできたアプリがあればWebUIは不要になる →流行が続くなら、そういう動きもある?
  29. 29. 29 こうなると嬉しい?(OStatus) ● プロトコルを進化させる – インスタンスをまたいだdeleteメッセージは多分必要 – URIに紐付かないUUIDがあったほうが便利? – 大規模化した場合にスケールする仕組みが欲しい? ● 別のサービスがOStatusをサポート – TwitterがOStatusをサポートして最大インスタンスになる未 来? – mixiのリブート?? →流行が続くなら、そういう動きもある?
  30. 30. 30 面白いソフトウェアなので いじってみると楽しいですよ 終

×