- ログミーTech Live #1「サーバーサイド開発最前線」に参加してきました。
logmitechlive.connpass.com
- 最近サーバサイドKotlinが気になっていたこともあり参加してみました。
- テーマが「サーバーサイド」とスコープを絞りすぎない勉強会だったので、普段ふれないgoやScalaやGCPの話も聞けて良かったです。
Go/GAEで作る金融システム
- DMMの子会社
- 仮想通貨の会社
- 金融業
- 高い安全性が求められる
技術スタック
- Googleが提供するPaaS
- とにかく楽
- bluegreenデプロイ
- スケールイン/アウト
- セキュリティ
Stackdriver Loggingはいいぞ
- フルマネージドなロギングサービス
- 加工や通知が楽
- 柔軟なフィルタ
Protocol Buffersはいいぞ
- APIドキュメントメンテしなくなりがち
- シンプルで高速
- JSONをhttpでやりとりするのと同じようにProtocol Buffersをやりとりする
- ドキュメント=実装なのがいい
- シンプルな仕様
- 並行処理
- ループするならfor,if使うしかない
FRESH LIVEにおけるServer Side KotlinとMicroservicesの今
FRESH LIVEとサーバサイドKotlin
FRESH LIVEとマイクロサービス
- どっかが落ちても全体は倒れない
- 戦略とともに必要なところをスケールできる
- 1サービス1DB
- サービス間はgrpc
- 低レイヤーはgo
SpringBoot2とKotlin
- Idiomatic Kotlin Code
- Kotlinらしく書くためのベストプラクティス
- 拡張関数が便利
- Router Function DSL
- エンドポイントをDSLで書ける
- コンストラクタインジェクトで@Autowiredを省略
- Spring Web Flux
- Reactiveをサポート
- StreamなAPIを簡単に作れる
コンテナとマイクロサービス
- 環境変数をコンテナにDI
- k8sのSecretリソース
- 環境ごとに異なる機密情報を扱う
- コンテナの環境変数にセット
- サービスログ収集
- これまではecs
- k8sのDaemonSetでfluentdをNodeに配置
- サイドカーコンテナの撤廃
- ログは標準出力に吐くだけ
- stern
gRPC
- HTTP2との効率的な接続
- 双方向ストリーミング
- portを分けて2つのServer起動
- CommandLineRunner
- DisposableBean
- SpringとgRPC
- Server起動Interceptorなど難なく構築
- 入念なクライアント疎通確認必要(特にAndroid)
- 周辺ライブラリのアップデートをこまめに
まとめ
- サーバサイドKotlinやるならSpringBoot2おすすめ
- k8sでコンテナ配置戦略に変化
- gRPCで効率的な通信
- エムスリー株式会社 冨岡純さん(@jooohn1234)
光
闇
- 院内ネットワークとクラウドの連携にハードル
- socketio使って双方向通信
- サーバはNode
- クライアントはJava
- 院内ネットワークで動くものの保守つらい
- 全部クラウドの世界になってほしい
レセコン
闇
- カルテの情報をレセコンと動機するのは必須
- 診療報酬点数計算等々複雑で開発ハードル高い
光
- Scala
- Functional Programming
- Clean Architecture
まとめ
- レガシー業界ではすべてがモダンにならない過渡期がある
- 設計手法を駆使して少しずつ良くしてる