楽天がモノリスー>マイクロサービスとオンプレー>クラウドで経験した光と闇
楽天がモノリスー>マイクロサービスとオンプレー>クラウドで経験した光と闇
- デブサミの話
概要
自己紹介
- R Aさん
- Mソフト Aさん
楽天で自分のサービス紹介
- 各サービスが横断的に使用するファンクションを開発運用
- サービスオペレーション改善グループに所属
- そのなかでDMCというサービスをしている
- 内容は、画像をためたり取得するのを引き受けるサービス
CurrentStructures and problems
過去のアーキテクトの話
- 11年継続中で新規に変更中
- Squid/VarnishというLayerのメンテナンス
- 10以上あるFunctionsのVersionUP
- アクセス負荷増加の増強
- MogileFSのDisk交換<ーオンプレのディクスで壊れやすいから交換がいる
変更後
- ExpressRouteでAzureから楽天のCDNへデータ転送
- Squid/VarnishをAzure上に構築していたが、課金されるのでCDNで受け付けるように変更
- Azureのキャッシュを外に提供するときに課金されるため
DatabaseIssue
AzureのMySQLの問題
- 一月に一回定期再起動をすることが発覚
- 楽天データセンターについてはスケジュール調整していたので問題なかった
- Azureに移行したことでこれが発生
- 一つのノード障害が発生時に冗長ノードへのフェールオーバが発生する
- アプリケーションはその間60秒間のDB接続停止を伴う
- 現在この仕組みは改善考えている(BYマイクロソフト)
- 前段にメッセージングの仕組みとかを入れる必要性があった
DataTransfer Issue
15億レコードの移行
- そのままネットワーク経由は難しい
- そこで、オフラインデータ移行するサービスー>AzureDataBoxを使った
- 小中大の3プランある
- ところが、Railsアプリケーションのアクティブストレージがネックになった
- RailsのAPIには、どこにデータを保管しているかというメタデータをもっており、それを更新する必要が発生した
- マイクロソフトで最近GAになった機能で、AzureStackEdgeをつかったからこれを改善できる
- オンプレからはNFSのストレージにみえるが、裏ではAzure上のストレージにあがっている
- 学んだ点:データトランスファーが発生するアプリに関してはネットワークオーバヘッドの工数を考慮する
Microservice from monolith
マイクロサービスにした理由
- それぞれのリクエスト量がちがったGETがはるかに多い
- テスト工数の削減
- トラブル時範囲を最小限
- 起動するときの速さー>コード量が少ない方がPODの起動が早い
- 開発の独立性
ISTIOを活用
- マイクロサービスが多くなるので、サービスメッシュ必須
- ISTIOをいれたHELM2を利用して
- 最近HELM3がでている
- availabilityゾーンで、KUBENET?があがらなかった
- AZUREのCLIを使うと、
- Kialiー>Network周りの確認ができる
- Jaeger,ElasticAPMで監視がらく
- PrometheusとGrahanaでK8sを管理
- AlertManger/Slackも活用
- IStio自体にもカナリアリリース機能はあるがFlaggerを使った方が楽
- カナリアリリースをしてくれるSupenakerはむずかしかった
- ブルーグリーンデプロイメントもしてくれる
- 最近マイクロソフトからサービスメッシュ向けのDaprというミドルウェアが出た。
- L7階層でなくもっと下の階層で制御できる
マルチリージョン
- 日本の西と東の2リージョン
- availabilityゾーンを使っている<-必ず使った方が良い
マイクロソフトのマルチリージョンによる負荷分散のサービス
- マルチリージョンの負荷分散
- リージョン内部の負荷分散
- レプリケーション
CI/CDPipeLIne
- CircleCI + Kaniko + Artifactory + GitHubEnterPrise
- Gitのタグを中心にPIPELINE作成
NextActions
今後挑戦したいもの
- DB:>Vitess->分散型MYSQLー>YOUTUBEで使われている
- Messaging-> Nats -> Kafkaより楽
- Obsevability->OpenTelemetryとイエーガー使うと、ネットワークトラフィックのトレースが簡単
- Chaos Engineering->ChaosToolkit -> ノードを落とすサービス