Feature Flag 開発を標準化し、加速させる Open Feature を導入する
SatohJohnさん(株式会社スリーシェイク)
https://speakerdeck.com/satohjohn/feature-flag-kai-fa-wobiao-zhun-hua-si-jia-su-saseru-openfeature-wodao-ru-suru
- Feature Flag
- デプロイによるリリースではなく設定値の変更によってリリースする仕組み
- デプロイしても即座に機能が反映されないようにしているのでデプロイ待ちを防げる
- 緊急のロールバックもデプロイせずに設定値の変更でできる
- 種類
- Release
- トランクベース開発のため
- メインブランチに積極的にマージできる
- Ops
- 運用面の制御のため
- 負荷向上などの場合のサーキットブレーカー的な役割
- Experimental
- ABテストのため
- Permission
- 特定ユーザへ提供するため
- Release
- フラグの管理
- 条件分岐が増えて読みにくくなる
- フラグの組み合わせ問題
- 不要になったフラグの削除
- 設定の管理コスト
- OpenFeature
ビズリーチにおけるリアーキテクティングの実践事例 ~ 大規模システムを継続的に変革するための組織 × アーキテクチャ戦略~
Shintaro Kikuchiさん(Visionalグループ 株式会社ビズリーチ)
- レガシーコードの積み重ね
- デリバリへの過渡なプレッシャー
- 密結合な構造
- 大規模プロジェクト
- プロダクトの改善
- ポストモーテム文化
- テストの自動化
- QA
- アジリティ向上のためのリアーキテクト
- マインド/プロセス/技術/組織
- リアーキ前
- アーキテクチャの改善
- Bounded Contextでモジュール分割
- 境界は非同期での連携
- 同期な境界ができると密結合になってしまう
- 将来的にはマイクロサービスもあるがまずは大きく切り出し
- APIを切り出したらDBも分けようとしてる
- 分割はまずは業務理解から
- イベントストーミング
- Bounded Contextでモジュール分割
- 段階的な改善
- ビジネス価値の高いものから
- 使われてない機能の断捨離
- 10%が使う機能を2倍にするより95%が使う機能を1.1倍に
- 変更容易性とテスト容易性
実践Kafka Streams 〜イベント駆動型アーキテクチャを添えて〜
joker1007さん(Repro株式会社)
https://speakerdeck.com/joker1007/shi-jian-kafka-streams-ibentoqu-dong-xing-akitekutiyawotian-ete
- イベント駆動のアーキテクチャ
- イベントバスとしてKafkaを採用
- Kafka Streams
- パフォーマンス
エンジニアリングでビジネスを加速する。モデル駆動開発という選択肢
Takahito Naganeoさん(シンプレクス株式会社)
これならできる!Kotlin・Spring・DDDを活用したAll in oneのマイクロサービス開発術
Tamio Ishiiさん(株式会社出前館)
- 4層をGradle Project化
- domain model
- Aggregate
- EntityとValueObjectを最低1個ずつ持つ
- Entity
- ValueObject
- Aggregate
- usecase
- application
- OpenAPI generatorでクラスを自動生成してる
- infra
- バッチ
- application runner
- domain model
- テスト
- プロファイル
- IntelliJのプロファイラ
- どの処理がどれくらい呼ばれてどれくらい時間かかってるか
変化に強いテーブル設計の勘所
soudaiさん
https://speakerdeck.com/soudai/table-design-that-is-resistant-to-changes
- テーブル設計はAIがやってくれるようになるのか
- まだならない
- 労力は代替できるが能力は代替できない
- 設計のサポートはしてくれるが設計は自分でやらないといけない
- データベースはアプリよりも寿命が長い
- データベースは変化に弱い
- commitしたデータは戻せない
- カラムを追加したら過去のデータの対応が必要
- 消していいかわからないデータ
- 成長とともにデータは増える
- ビジネス側に不要な制約を作ってしまう
- データベースには状態を持たせず事実だけを持たせる
- シンプルな設計
- 事実だけを保存する
- 重複がない
- 不整合がない
- nullがない
- 責務の大きさ
- indexが4つ以上必要になったら深く考察が必要
- 情報と事実
- 生年月日が事実で年齢はそのタイミングの情報
- キャッシュのような情報はDBに持たないでロジックで算出する