マイクロソフト主催のContainer X mas Partyで知るKubernetes導入のリアルな現実
クラウドネイティブなシステムの中心にあるKubernetesは日々進化しており、ユーザー企業がキャッチアップするのは難しいと思うかもしれない。確かにサイバーエージェントやヤフー株式会社などのように、インターネット技術に詳しいエンジニアが多数在籍する企業であれば試行錯誤も可能だろうが、ITを主たるビジネスのドライバーにしていない一般の事業会社の場合は、困難な道筋である。
そんな中、Red HatやGoogleなどとともにKubernetesの開発をリードするMicrosoftが、日本国内のKubernetesユーザー企業を招いた事例公開が中心のセミナーを実施した。今回はその中から、オイシックス、Fringe81そして日本マイクロソフトのセッションを紹介しよう。
セミナーは「Container X mas Party」と題されたもので、2018年12月18日に日本マイクソフトの本社セミナールームで開催された。日本マイクロソフトからは、エバンジェリストである川崎庸市氏、佐藤直生氏、真壁徹氏が、ゼットラボ株式会社(ヤフーの子会社でインフラストラクチャーの研究開発を行っている)から須田一輝氏が、オイシックス・ラ・大地株式会社(有機野菜などの食材の通信販売を手がけている)からは長尾優毅氏が、そしてFringe81(インターネット広告配信を手がけている)からは森本真一氏と、多彩な登壇者のセミナーとなった。
モノリシックからマイクロサービスへ オイシックスの事例
オイシックス・ラ・大地株式会社(以下、オイシックス)でインフラストラクチャーを担当するエンジニアの長尾氏は、2000年の創業当初から利用されてきたECサイトの概要について解説した。毎年20%のペースで増加する会員からのトラフィックを処理するためにマイクロサービスの導入に踏み切ったと語り、モノリシックなシステムからマイクロサービスへの移行について説明を行った。
オイシックスのシステムは、ECサイトを実装したWebサイトがビジネスの根幹となる企業のものとしては創業当時の2000年には妥当な構成だったと言える。しかし、増加するアクセスや新規開発からリリースのスピードには追いつかなくなってきたことが、マイクロサービス導入のきっかけだったという。
ここからは、「どうやってモノリシックなシステムをマイクロサービスに移行していったのか」という部分の解説となった。
マイクロサービスへの移行は、以下の流れで行われた。
- モノリシックなアプリケーションの一部の機能を切り出してマイクロサービスとして開発
- クライアントからの接続先をマイクロサービス側に切り替え
- 元のアプリケーションの機能をクローズ
そして実例として、まずはログ検索サービスと宅配サービスの受注情報を確定するバッチ処理をマイクロサービスに移行したと説明した。
受注情報を確定させる処理については、国内のクラウドサービスに配備されたOracleデータベースに対するトランザクション処理を、複数のPodから並列的に書き込むことでレイテンシーを防げると見込んだが、データベースのコネクション数のボトルネックに遭遇してしまったという。
このボトルネックも現在はチューニングによって解消され、安定稼働しているという。
続いて、商品サービスの参照処理をマイクロサービスに切り出した実例を紹介。
ここでも従来のOracleデータベースからAzureのRedisへのキャッシュがうまく動かないという現象に直面したが、力技で定期的にAzure側にキャッシュする方法を取ることで対応しているという。
またAzure Kubernetes Service(以下、AKS)のモニタリングシステムについても紹介した。メトリクスやログを取得し、条件によってはPagerDutyやSlackを使って通知を行っていることを説明した。
オイシックスにとっては新しいシステムであるAzure、AKSの運用について、いくつかの知見が得られたということで、それらについても解説された。特にAKSの制限を熟知しておく、AKSの設定は変えない、アップグレードは慎重に行うなどを紹介した。意外なところでハマった点として、CronJobがUTCで実行され、日本標準時間を使うように設定出来ないことがあったという。このような細かいことも、実際に使ってみないとわからない部分だろう。
またAKSのワーカーノードが突然「Not Ready」となる問題にも遭遇したという。他にもAzureのロードバランサーのアウトバウンドIPアドレスがわからないなど、多くの事態を経験した結果得られた「何度も作り直す余裕を持つべき」「すでに公開されている知見は積極的に利用するべき」などのKubernetes利用のポイントを解説した。
今後は、クライアントからAzureに直接接続、オンプレミスのOracleデータベースをAzureに移行、フロントエンドをVue.jsに移行などのプランを持っているという。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- プログラミング言語「Rust 1.55」リリース
- プログラミング言語「Rust 1.31」リリース、「Rust 2018」最初のバージョンに
- プログラミング言語「Rust 1.31」リリース、「Rust 2018」最初のバージョンに
- プログラミング言語「Rust 1.56」および「Rust 2021 Edition」リリース
- プログラミング言語「Rust 1.40」リリース
- プログラミング言語「Rust 1.32」リリース
- プログラミング言語「Rust 1.32」リリース
- プログラミング言語「Rust 1.52」リリース
- プログラミング言語「Rust 1.22」リリース
- プログラミング言語「Rust 1.13」リリース