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として開発している、アプリケーションやサービスの設定を保存するためのリポジトリです。


開発者によるプレゼン資料

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のレスポンスが変わるというデモを行いました

サンプルアプリのソースコード

アプリからCentral Dogmaで管理している設定をWatchするのはめっちゃ簡単に実装できます。
詳しくは上記のサンプルソースを見てもらった方がいいですが、今回僕が実装したサンプルロジックだけを抜粋すると以下のような感じです。



以上です。

Central Dogma便利なので、ぜひ試してみてください。

 
comments powered by Disqus