Enviar búsqueda
Cargar
Mastdonインスタンス立ててみた in Azure #ssmjp
•
4 recomendaciones
•
2,947 vistas
Masahiro NAKAYAMA
Seguir
20170529 #ssmjp mastodon Azure上でマネージドサービスを使って クラウドっぽくMastodonを動かしてみた話
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 22
Descargar ahora
Descargar para leer sin conexión
Recomendados
BigQuery で 150万円 使ったときの話
BigQuery で 150万円 使ったときの話
itkr
スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab
スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab
@yuzutas0 Yokoyama
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例
Go Maeda
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
Hideki Takase
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
onozaty
View Customize Pluginで出来ること
View Customize Pluginで出来ること
onozaty
Lean coffee
Lean coffee
Takeshi Arai
Más contenido relacionado
La actualidad más candente
Redmineによるwebサポート窓口の実装と運用
Redmineによるwebサポート窓口の実装と運用
Go Maeda
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)
onozaty
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
View customize pluginを使いこなす
View customize pluginを使いこなす
onozaty
GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門
Takuya Ueda
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
Ore Product
自己紹介LT(公開版)
自己紹介LT(公開版)
Ken Muryoi
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
DaichiKimura3
Clean Architectureで設計してRxJSを使った話
Clean Architectureで設計してRxJSを使った話
_kondei
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Kuniharu(州晴) AKAHANE(赤羽根)
Scrum-Fest-Sapporo-2021-Keynote-Our-Journey
Scrum-Fest-Sapporo-2021-Keynote-Our-Journey
Kenji Hiranabe
Redisの特徴と活用方法について
Redisの特徴と活用方法について
Yuji Otani
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Go Maeda
Elixir入門「第2回:PC間で通信するアプリをサクっと書いてみる」
Elixir入門「第2回:PC間で通信するアプリをサクっと書いてみる」
fukuoka.ex
最近のやられアプリを試してみた
最近のやられアプリを試してみた
zaki4649
30分でわかる広告エンジンの作り方
30分でわかる広告エンジンの作り方
Daisuke Yamazaki
ChatGPT、 何が「できる」「みえる」ようになってきたのか!
ChatGPT、 何が「できる」「みえる」ようになってきたのか!
Jingun Jung
La actualidad más candente
(20)
Redmineによるwebサポート窓口の実装と運用
Redmineによるwebサポート窓口の実装と運用
View customize plugin for Redmineの紹介 (2019年版)
View customize plugin for Redmineの紹介 (2019年版)
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
View customize pluginを使いこなす
View customize pluginを使いこなす
GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門
オーバーエンジニアリングって何? #devsumi #devsumiA
オーバーエンジニアリングって何? #devsumi #devsumiA
自己紹介LT(公開版)
自己紹介LT(公開版)
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
決済システム内製化に向けたプラットフォーム構築 - PCF・BOSHによるオブザーバブルプラットフォーム
Clean Architectureで設計してRxJSを使った話
Clean Architectureで設計してRxJSを使った話
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Scrum-Fest-Sapporo-2021-Keynote-Our-Journey
Scrum-Fest-Sapporo-2021-Keynote-Our-Journey
Redisの特徴と活用方法について
Redisの特徴と活用方法について
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Elixir入門「第2回:PC間で通信するアプリをサクっと書いてみる」
Elixir入門「第2回:PC間で通信するアプリをサクっと書いてみる」
最近のやられアプリを試してみた
最近のやられアプリを試してみた
30分でわかる広告エンジンの作り方
30分でわかる広告エンジンの作り方
ChatGPT、 何が「できる」「みえる」ようになってきたのか!
ChatGPT、 何が「できる」「みえる」ようになってきたのか!
Más de Masahiro NAKAYAMA
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
Masahiro NAKAYAMA
イントロダクション(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
イントロダクション(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
Masahiro NAKAYAMA
クラウド時代のものづくり(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
クラウド時代のものづくり(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
Masahiro NAKAYAMA
めもおきば新刊のお知らせ サーバーレスでHelloWorldする25の方法 #ssmjp
めもおきば新刊のお知らせ サーバーレスでHelloWorldする25の方法 #ssmjp
Masahiro NAKAYAMA
クラウド時代における分散Webシステムの構成とスケーリング #seccamp
クラウド時代における分散Webシステムの構成とスケーリング #seccamp
Masahiro NAKAYAMA
#ServerlessDays Tokyo 2019 「サーバーレス」な同人誌の紹介
#ServerlessDays Tokyo 2019 「サーバーレス」な同人誌の紹介
Masahiro NAKAYAMA
サーバーレス時代の システム設計ワークショップ
サーバーレス時代の システム設計ワークショップ
Masahiro NAKAYAMA
#ssmjp 2018/12 技術系同人誌を手に入れよう
#ssmjp 2018/12 技術系同人誌を手に入れよう
Masahiro NAKAYAMA
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
Masahiro NAKAYAMA
クラウドでハンズオンする話 #ssmjp
クラウドでハンズオンする話 #ssmjp
Masahiro NAKAYAMA
SORACOMでデータ上げてクラウドで分析・可視化するハンズオン #SecHack365
SORACOMでデータ上げてクラウドで分析・可視化するハンズオン #SecHack365
Masahiro NAKAYAMA
IoT時代のセキュアなクラウドインフラ構築術 #seccamp
IoT時代のセキュアなクラウドインフラ構築術 #seccamp
Masahiro NAKAYAMA
Serverless book
Serverless book
Masahiro NAKAYAMA
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
Masahiro NAKAYAMA
技術系同人誌を書こう #ssmjp
技術系同人誌を書こう #ssmjp
Masahiro NAKAYAMA
「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo
Masahiro NAKAYAMA
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
Masahiro NAKAYAMA
IoT(Bluetooth mesh) × サーバーレス
IoT(Bluetooth mesh) × サーバーレス
Masahiro NAKAYAMA
Serverless Architecture Overview #cdevc
Serverless Architecture Overview #cdevc
Masahiro NAKAYAMA
細かすぎて伝わらないSORACOM Funnelのオプション紹介 #soracomug
細かすぎて伝わらないSORACOM Funnelのオプション紹介 #soracomug
Masahiro NAKAYAMA
Más de Masahiro NAKAYAMA
(20)
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
イントロダクション(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
イントロダクション(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
クラウド時代のものづくり(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
クラウド時代のものづくり(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
めもおきば新刊のお知らせ サーバーレスでHelloWorldする25の方法 #ssmjp
めもおきば新刊のお知らせ サーバーレスでHelloWorldする25の方法 #ssmjp
クラウド時代における分散Webシステムの構成とスケーリング #seccamp
クラウド時代における分散Webシステムの構成とスケーリング #seccamp
#ServerlessDays Tokyo 2019 「サーバーレス」な同人誌の紹介
#ServerlessDays Tokyo 2019 「サーバーレス」な同人誌の紹介
サーバーレス時代の システム設計ワークショップ
サーバーレス時代の システム設計ワークショップ
#ssmjp 2018/12 技術系同人誌を手に入れよう
#ssmjp 2018/12 技術系同人誌を手に入れよう
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
FaaSのインターフェースに見るサーバーレス #serverlessconf #serverlesstokyo
クラウドでハンズオンする話 #ssmjp
クラウドでハンズオンする話 #ssmjp
SORACOMでデータ上げてクラウドで分析・可視化するハンズオン #SecHack365
SORACOMでデータ上げてクラウドで分析・可視化するハンズオン #SecHack365
IoT時代のセキュアなクラウドインフラ構築術 #seccamp
IoT時代のセキュアなクラウドインフラ構築術 #seccamp
Serverless book
Serverless book
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
技術系同人誌を書こう #ssmjp
技術系同人誌を書こう #ssmjp
「サーバレスの薄い本」からの1年 #serverlesstokyo
「サーバレスの薄い本」からの1年 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo
IoT(Bluetooth mesh) × サーバーレス
IoT(Bluetooth mesh) × サーバーレス
Serverless Architecture Overview #cdevc
Serverless Architecture Overview #cdevc
細かすぎて伝わらないSORACOM Funnelのオプション紹介 #soracomug
細かすぎて伝わらないSORACOM Funnelのオプション紹介 #soracomug
Último
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Ayachika Kitazaki
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
Sadao Tokuyama
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
2024 03 CTEA
2024 03 CTEA
arts yokohama
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
Último
(12)
2024 04 minnanoito
2024 04 minnanoito
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
2024 03 CTEA
2024 03 CTEA
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
Mastdonインスタンス立ててみた in Azure #ssmjp
1.
Mastodonインスタンス 立ててみた in Azure Aki@nekoruri 2017-05-29 #ssmjp
2.
Mastodon • Twitterっぽいアレ • 高頻度で短文が更新されるマイクロブログ •
添付ファイル(画像や動画)が付いたりする • 「フォロー」に基づいた購読・通知と雑なアクセスコントロール • 分散SNS(Federated Social Web) • 「Twitterっぽいアレ」をブログ更新通知などの仕組みで分散化を実現 • 割と死に体だったプロトコルも流用採用している • Rails上に教科書通りに分散システムを実装(非同期処理の多用) • 微妙な言い換え(ツイート⇒トゥート、等)
3.
日本におけるMastodon • 4月中旬に過剰とも言える流行の波 • 猫も杓子もといった流行期は脱出 •
PixivのPawooやドワンゴのfriends.nico など、CGMサイトに対応するSNSとして 一定の存在感は引き続き確保 • 分散SNSの実現可能性を十分に示した 出典:https://friends.nico/@TaiseiMiyahara/10996911
4.
Mastodon用語 • インスタンス • 一つのドメインを持つMastodonシステム(例:mstdn.jp、pawoo.net) •
インスタンス毎にその管理者が運用し、ポリシーを持つ • ネットワーク屋っぽく言えばAS(自律システム) • リモートフォロー • 別のインスタンスのユーザをフォロー(購読)する • ローカルタイムライン • 自分と同じインスタンスで発言された全ての公開トゥートのタイムライン • 連合タイムライン • ローカルタイムライン +インスタンス内の誰かがリモートフォローする全ての公開トゥート
5.
AzureにMastodonを立ててみよう 1. まず服を脱ぎます UbuntuのVMを立てます。 2. 外部からのHTTPSの接続を許可します。 3.
Dockerとdocker-composeを入れます。
6.
あとは神チュートリアル資料の通り http://qiita.com/zembutsu/items/f1f1ede26102ba27fce2
7.
ほい
8.
完
9.
んなわけはない
10.
運用こそが本当の戦い • スケールアウト対応 • 添付ファイルがローカルファイル •
DB(PostgreSQL/Redis)が同一ホスト内のコンテナ間接続 • ドメインの分離 • 「添付」画像は、トゥートに直接URLとして含まれる。 ⇒ あとからドメインの変更・分離は難しいので最初に対応すること • バックアップとか冗長化とか • ぶっちゃけもうデータベースの面倒なんて自分で見たくない ⇒ マネージドDB使おう • ぶっちゃけもうメール配信キューの面倒なんて(ry ⇒ マネージドSMTPサービス使おう
11.
オブジェクトストレージの変更 • Mastodon自体の機能としてはAmazon S3に対応 •
S3互換のなにかを持ってくれば良い • Google Cloud Storageは標準のS3互換APIでそのまま通る模様 • s3proxy • S3互換APIを提供するプロキシサーバ • Azure BlobやOpenStack Swiftなどに保存できる • ローカルファイルにも保存できる ⇒ クラウド使わない場合もひとまずs3proxyでドメイン分離が可能
12.
オブジェクトストレージの変更 • Azure BlobがカスタムドメインのHTTPSができない •
とりあえずCDNを挟んで回避 • Azure CDN from Verizonなら無償でHTTPS証明書取れます • 解説記事の通りにやれば良い • http://blog.tmyt.jp/entry/2017/04/19/202922 『今話題のMastodonインスタンスを建ててS3の代わりに Azure Blob Storageを使う』 • paperclip.rb へのパッチは既に不要
13.
データストアのマネージドサービス化 • メインのDBはPostgreSQL • いやっふう! Azure
Database for PostgreSQLプレビュー来た! • 内部のPubSubなどにRedis • Azure Redis Cache
14.
PostgreSQLの切り替え • PortalからAzure Database
for PostgreSQL構築 • 接続のセキュリティとか適当に設定 • データ移行 • とりあえずpg_dumpで吸ってpsqlで投入 • 設定変更してdocker-composeあげ直し • docker-compose.ymlでdbを削除 • .env.productionに接続情報
15.
Redisの切り替え • Redis Cacheを構築 •
とりあえずテストでSSL無しで検証(時間不足) • 設定変更してdocker-composeあげ直し • docker-compose.ymlでredisを削除、.env.productionに接続設定 • 注意点 • Mastodon側で利用するRedisライブラリがSSL非対応 「NotImplementedError (SSL not supported by hiredis driver)」 • アクセスキーに「+/」が入ると駄目 • URLエンコードすればParseは通るが、デコードされずにサーバに投げられる! • ライブラリ周りの組み合わせのバグっぽい • 当たりを引けるまでアクセスキー再生成ガチャを回せば回避可能(ひどい)
16.
メール配信の切り替え • みんなだいすきSendGrid • Azureマーケットプレイス経由でも利用できるけど、 今回は構造計画研究所さん経由 •
設定変更してdocker-composeあげ直し • docker-compose.ymlでmtaを削除、.env.productionに接続情報 • ルート証明書ストアを適切に設定する必要がある (が、所詮通知だけと割り切って検証しない設定も可能) • メールなのでDNS設定も • SendGridのDomain Whitelabel機能を設定⇒DNSにレコード登録 • SPF/DKIMともにPASSできる
17.
最終的な構成 frontend (nginx) streaming (node) web (rails) SendGrid s3proxy sidekiq (worker) PostgreSQL (managed) Azure Blob Redis (managed) docker-compose管理 AzureCDN 画像など Web/Streaming 外部 インスタンス
18.
その他の課題 • コンテナ管理 • 監視
19.
コンテナ管理 • コンテナ数などの管理 • ウェブアプリだけでなく、非同期タスクのスループットが重要 •
負荷に応じたワーカーの制御が必要 • そもそもdocker-composeとか手で叩く時代じゃない • GKEみたいなのが欲しい • Azure Container Serviceでそれっぽくできそう • 結局はコンテナのスケジューリングの問題に行き着く
20.
監視 • 一般的なサーバ性能メトリクス • CPU、メモリ •
Sidekiqキュー • 規模が大きくなるとここが詰まる模様 • 複数のキューごとにプロセス分離など • マネージドサービスのメトリクス • PostgreSQL • Redis • サービス死活 • ユーザの投稿内容 • 自インスタンスのユーザの投稿の違法性 • Federate先のユーザから流れてきた投稿の違法性
21.
まとめ • Azureでもクラウドっぽくできマストドン • Azure
Database for PostgreSQL万歳! • AWS Certificate Managerの影に隠れているけど、 Azure CDNもDigiCertのフルマネージド証明書が取得/利用可能 • 手抜きしたけどLB最初から挟んだ方が良い • もうステートレスになってるから、LB挟んで増やせばOK • ちなみに1月からMicrosoft MVPになりました • みんな祝って! • 今後も基本はベンダーニュートラルでやっていきます。 <良 い モ ノ は 良 い>
22.
で、誰? • Aki (@nekoruri) •
BLEなIoTシステムの クラウド側担当 • ちょろっと執筆も • 「薄い本」も出しています • 最近はすっかり セキュリティ教育畑に…… • セキュリティ・キャンプ プロデューサー • SecHack365 実施協議会委員 • ProjectDIVA Arcade LV.623 NEW!
Descargar ahora