mastodonについて話しました
雑Con #6Mastodonについて[email protected]
View Slide
自己紹介● [email protected]● freee K.K.● ソフトウェアを実装する人● 給与計算freee
mastodon
mastodon概要● GNU Social compatibleなRails製のSNSサービスを実現するアプリ● fist commit -> 2016年2月○ https://github.com/tootsuite/mastodon/tree/9c4856bdb11fc9311ab30a97224cee3dfaec492f● インスタンスという概念のもと、各ホストがmastodonをサービスとして運用する● インスタンス間の連携も可能
流行り
2017年4月になってから急速に流行りだした● アスキーでmastodon紹介の記事が出る○ http://ascii.jp/elem/000/001/465/1465842/● それを見たぬるかるさんがmstdn.jpを立ち上げ● 4月15日〜ぐらいにTwitter上で拡散、各種メディアで取り上げ● Dockerfileがgithubリポジトリにホスティングされており、個人で気軽に立ち上げられるためインスタンスが爆発的に増える● pixivがpawoo.netを立ち上げ● ドワンゴがfriends.nicoを立ち上げ● mstdn.jpの管理者ぬるかるさんがドワンゴに就職決定○ http://www.itmedia.co.jp/news/articles/1704/24/news045.html
技術的な特徴Specs-and-RFCs-used.mdよりOStatus / Salmon / Portable ContactsAtom / Atom ActivityStreams / Atom ThreadingPubSubHubbub / Webfinger / Link-based Resource Descriptor Discovery
OStatus2012年にW3C標準化された技術。幾つかのプロトコルと取り込んだものの総称。ソーシャルネットでやりとりを行うために制定された。利用している技術:Atom, Activity Streams, PubSubHubbub, Salmon, Webfinger
PubSubHubbub● 発音しづらい● Google発の技術● データの送受信で、クライアント・サーバの負荷を軽減するための技術○ 能動的にデータを送信したいクライアントが hub側にPush形式で情報を送信する○ データを受け取るサーバは hubからデータを受信する○ http://unoh.github.io/2009/08/19/what-is-pubsubhubbub.html● 名前がWebSubに変わるみたい (Draft)○ https://w3c.github.io/websub/
Webfinger● https://webfinger.net/● HTTPを利用し、インターネット上で特定のユーザ情報を返す● RFCで仕様が定義● Mastodon内での実装○ Gemを利用している (mastodon作者が実装)○ Controller
Salmon● http://www.salmon-protocol.org/● メッセージのやりとりに利用○ フォローする○ ブロックする● Mastodonでの実装例○ Gemを利用している (mastodon作者が作成)
運用面
運用面● Ruby on Railsアプリ○ Rack middleware (puma)を利用して運用する○ 特に困ることはなかった● 管理すべきプロセスは3つ○ Web Application, API用サーバとなるプロセス○ SidekiqにてMailer, Push, Pullを処理するジョブキュープロセス○ Streamを処理するnodeプロセス■ Websocketを利用する■ タイムラインの処理を行う■ source
試しに立ててみたmstdn.shisaku.tokyo
お一人様インスタンスでは● t2.mediumであれば1台で運用可能○ CPU 2core, memory 4GB● 誰かをリモートフォローしないと始まらない● federation timeline が色々流れてくるけど余裕● S3にメディアデータを保存する運用にしなければ予算推測しやすそう● Sidekiqプロセスが頻繁にジョブキューを処理するのが気になるが、詰まることはない● SSL証明書○ 今回はACM使ったが、ちょっと面倒かも● MTA(メールまわり)の設定が面倒だった○ mailgunを利用した
雑感● 本格的な流行りが始まって2週間ほど○ 熱量が下がってきたらどうなるのかなという思いはある○ 企業が管理しているインスタンスで今後問題が発生したらどう対応していくのかなという思いがある● Twitterの代わりになるか...?○ なることはないが細かなコミュニティ運営のためのツールとしてよさそう○ 個人が管理しているインスタンスの mastodonがアップグレードされずに放置されていくのが増えていくとどういう問題が発生するのだろう● 個人運用おすすめ○ APIもあるし、モバイルアプリの練習台になる (すでにいくつかのアプリが公開されている)○ インフラ運用面のノウハウもたまる● Mastodonの設計がきれいなので参考になる○ Ruby on Railsでお仕事している面で大変参考になる
参考資料● Github mastodon repository● Mastodon instances● Mastodonとその脱中央集権の仕組み● https://medium.com/@Gargron● gnusocial や mastodon の哲学