Fukuoka.go#14+Umeda.goで「Getting started Central Dogma with Golang」というタイトルでLTしてきた #fukuokago #umedago
Fukuoka.go#14+Umeda.goで
「Getting started Central Dogma with Golang」というタイトルでLTしてきました。
大阪のGo言語コミュニティUmeda.goとGoogle Hangoutsで繋いで大阪・福岡からそれぞれ発表を行い、質問もお互いにしあうというスタイルでした。
こういうの初めてでしたが、すごく良いと思いました。
僕の発表資料はこちらです。
色んな方が興味を持っていただき、たくさん質問をしていただきました。ありがとうございます。
以下に補足の説明を書こうと思います。
Central Dogmaとは?
LINE社がOSSとして開発している、アプリケーションやサービスの設定を保存するためのリポジトリです。
- Official site
- ソースリポジトリ
- Docker image *Docker HubでDocker imageが公開されています
開発者によるプレゼン資料
At TWJUG Meetup in Taipei on June, 2018:
At LINE DEVELOPER DAY 2017:
Central Dogma LINE's Git-backed highly-available service configuration repository from LINE Corporation
Central Dogmaの特徴
- 自分のアプリケーションからCentral Dogmaで管理している設定をWatchしておいて、変更があった時に変更内容をリアルタイムに受け取る事ができる
※つまり、動的に変更したい設定をCentral Dogmaで管理しておけば、アプリケーションのビルド/デプロイ/再起動なしでアプリケーションに設定を反映する事が出来る - Web UIが付属していて、Central Dogmaで管理している設定を直接変更する事も可能
※実際の運用では、Central DogmaのWeb UIで編集するよりも専用の管理画面を作った方がいいと思います。Central Dogmaのクライアントライブラリ(Java or Golang)を使えば、Central Dogmaで管理している設定を変更するアプリが作れます - 現在提供されているクライアントライブラリはJavaとGolang
- Central Dogmaで管理している設定は、Gitでバージョン管理される
- 外部のGitリポジトリ(github.com, GHE, etc)からデータをミラーリングする事が出来る
※つまり、「Central Dogmaで管理する設定を変更する際に、githubのPull Requestでレビューする」という運用フローにする事も出来る
以下のようなイメージです(上記のスライドより)
Central Dogmaのユースケース
例えば、以下のようなユースケースが考えられます。
- MicroservicesでのService discovery
- Rate limit
- A/Bテスト
- 新機能のRollout
- エンジニア以外(ビジネス側など)の人でもサービスの設定を変更できるようにしたい
- など
デモ
今回のLTではサンプルアプリを使ってデモをしました。
デモの内容
- アプリは単純なEcho APIです
- APIのレスポンスに使うテキストをCentral Dogmaで管理しています
- Central DogmaのWeb UIで設定を変更したら、APIのレスポンスが変わるというデモを行いました
サンプルアプリのソースコード
- https://github.com/matsumana/centraldogma-go-example
docker-composeでCentral Dogmaが起動できるようにしていますので、自分のローカルでも試せます。
アプリからCentral Dogmaで管理している設定をWatchするのはめっちゃ簡単に実装できます。
以上です。
Central Dogma便利なので、ぜひ試してみてください。