[書評]Monolith to Microservices 1章と2章
の続編
3章はSplitting the Monolith
モノリシックをどうやって分割するかという話
・モノリシックから機能を分離する方針
単純に分離するならコードをコピーして新しいサービスを作成しモノリシックからは機能は削除しない
こうすることでいつでもモノリシックにロールバックできる
・リリース方針
ユーザーに見えないところで本番にリリースしテストをする
dark launchやcanary releaseと言われる
・プロトコルを変える場合
例えばSOAPをGRPCに変える場合には
サービスの中でSOAPをGRPCにマッピングする
ミドルウェアで頑張ると複雑さが増すので避けるべき
・キューを使って分離する
メッセージキューを置いてキューの内容で新旧どちらかが対応する
と言う方針で切替もできる
・実装時のブランチ戦略
息が長いブランチが存在すると困るので以下の方法を取れば破壊度が低くなる
1.抽象クラスを作成する
2.既存のクラスが抽象クラスを利用
3.抽象クラスを利用した新しい機能を作る
4.新しいクラスに切り替える
5.古い実装を消す
・DBの方針
いくつかの方針があるのでサービスの用件に合わせて考える
1.データがインサートされたらトリガーが発行されて別DBにインサートを発行する
ただし、この実装は分かりにくい
2.transaction logの内容を読み取って別DBにデータをコピーする
3.バッチでデータをコピーする
・言葉の説明
Strangler Fig
これは段階的に古いシステムを新しくしていく方式のこと
長くなるので続くよ