janogdon.netはじめました

>100 Views

September 08, 23

スライド概要

JPNIC総会でマストドンについて話をした資料
最近のソフトウェアと古いソフトウェアのコードの中身等について比較等をした

profile-image

SlideShareが使いにくくなってしまったのでこちらに全部移してみた。 - 勉強会で使った資料 - イベントでの登壇資料 等を中心に上げてあります。

シェア

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

janogdon.net はじめました JPNIC総会講演会資料 2017/06/16 DMM.comラボ 佐々木 健

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 ● 6/12 JPNIC総会向け資料提出締切 バージョンアップ(1.3.2→1.4.1) 2

3.

janogdon.net とは https://janogdon.net/about の内容↓ 注意書き↓ とりあえず立ててみただけ。気まぐれで落とすかもしれない。 JANOGer っぽい人用?、と思ってるけど、JANOG運営委員とは連係してな いよ。 janogdon ≠ JANOG だよ、と。 自由に遊んでくれてOK。 でも mastodon はアカウント削除機能が未実装なので覚悟してアカウント登 録してね。(※バージョン1.4.2で実装されました) 裏側のこととかは、どこかのJANOGの発表で使わせてもらうかもしれない。 サーバはさくらのVPS、非力なスペックなので、あんまりいじめないでね。 3

4.

janogdon.net とは 2017/6/12時点 4

5.

本日のネタ Mastodonの技術的概観 ● Mastodonの技術的問題点 ● Mastodonは今後どう発展するか? (勝手な予測) ● 5

6.

Mastodonの技術的概観 6

7.

高機能なMastodon Twitterに似たモダンなウェブインター フェイス ● Twitterに似たAPI ● バックエンドにデータベース ● インスタンス間通信のための仕組み ● 7

8.

clocコマンドでMastodonを調べる ● cloc(Count Lines of Code) – https://github.com/AlDanial/cloc 8

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 115 369 0 617 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 ERB Markdown ------------------------------------------------------------------------------SUM: 1295 10142 3417 63815 ------------------------------------------------------------------------------- 9

10.

clocの出力結果からわかること 6万行程度のコンパクトなコード。 ● Ruby上の仕組みを使ったフレームワークで書かれてい る。 ● JavaScriptのコードも多い ● モダンな拡張言語も活用されている。 – SASS:スタイルシート言語 – Haml:HTMLテンプレート言語(Railsで良く使われる) – ERB;HTMLへのRubyスクリプト埋めこみ技術 ● 10

11.

他のソフトウェアと比較 bind-9.11.0-P5 〜みんな大好き? ● inn-2.6.1 〜NetNewsのソフトウェア ● IRCD-Hybrid 〜IRCデーモン ● 11

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 --------------------------------------------------------------------------------------- 12

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 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 Python ------------------------------------------------------------------------------SUM: 488 27001 33078 155684 ------------------------------------------------------------------------------- 13

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 ------------------------------------------------------------------------------- 14

15.

比較結果 ソフトウェア Mastodon 総code数 主な言語 63,815 Ruby,JavaScript bind 641,704 C inn 155,684 C IRCD-Hybrid 45048 Shell + C Mastodonは高機能な割にコンパクト モダンな開発言語のパワー!! 15

16.

Mastodonのコードの特徴 機能のわりには相当コンパクト ● フレームワークをうまく使っている ● 複数のソフトウェアを連係動作させている ● 運用を楽にするために、Dockerのコードも 記述されている ● Github上でメンテナンスされている。 ● 進化がとても速い ● 16

17.

Mastodonが利用するソフトウェア Ruby on Rails ● PostgreSQL ● Sidekiq ● Redis ● Node.js ● Docker(使わなくても良い) ● 17

18.

運用上必要になる外部ソフトウェア等 Linux OS基盤 ● リバースプロキシ(Nginx) ● メールサーバ(Postfix) ● 監視ツール ● 18

19.

実装上の問題その1 インストールが大変 ● アップデートが大変 ● 理解すべき技術要素が多い ● トラブルシュートが難しい ● →ちゃんと運用するのはハードルが高い 19

20.

実装上の問題その2 ユーザ削除機能がない ● 管理機能が弱い ● 外部認証が未実装 ● 高負荷環境時にボトルネックになる箇所が 存在する ● →商用サービスとして利用するには機能不足 20

21.

インスタンス間通信に用いられる OStatusの問題 まとまった仕様書がない ● インスタンスをまたいだメッセージの削除が できない? ● URIをキーに用いてしまっている ● 安全なインターネットを前提にしている ● →プロトコルとしてまだ発展途上? 21

22.

耳にしたことがあるクレーム PostgreSQLではなくMySQLを使っ て欲しい ● Reactを使ってるのはダサい ● UIが絶望的に良くない ● APIとUIは分離させるべきでは ● 22

23.

Mastodonは今後どう発展するか 23

24.

オイゲン・ロチコ氏かく語りき at 「マストドン」ブリーフィング(6/7) Rubyが好き。 ● PostgreSQLはRuby on Railsのdefaultチョイス。 ● 最初はAPIだけを実装した。 ● 元々Twitterのヘビーユーザであり、UIはそこからヒントを得て作った もの ● シングルサインオン等は実装予定。 ● プロトコルも変えていく。 ● 最近のアップデートは変化が大きくて大変なのはごめんなさい。で も必要なこと。 ● →確信を持って設計と実装をしている。今後も確実に進化する。 24

25.

こうなると嬉しい?(インストール) apt install mastodon curl -fsSL https://****/ | sh →やればできるはず 25

26.

こうなると嬉しい?(インスタンス起動) kubectl run mastodon --option... →これもやればできそう 26

27.

こうなると嬉しい?(運用しやすい実装) コンポーネント毎にコード分離 – データストレージ – バックエンドコード – フロントエンドコード – アプリコード ● デプロイが楽な言語でリライト – Go言語とか? ● →別実装が出てくるんじゃないかと期待 27

28.

こうなると嬉しい?(クラウドサービス) SaaS – さくっとインスタンスを構築 – アップデート等はおまかせ ● BaaS – アプリに特化し、APIだけを提供 – 良くできたアプリがあればWebUIは不要になる ● →流行が続くなら、そういう動きもある? 28

29.

こうなると嬉しい?(OStatus) プロトコルを進化させる – インスタンスをまたいだdeleteメッセージは多分必要 – URIに紐付かないUUIDがあったほうが便利? – 大規模化した場合にスケールする仕組みが欲しい? ● 別のサービスがOStatusをサポート – TwitterがOStatusをサポートして最大インスタンスになる未 来? – mixiのリブート?? ● →流行が続くなら、そういう動きもある? 29

30.

面白いソフトウェアなので いじってみると楽しいですよ 終 30