主にインフラ担当の長尾です。
先日、Microsoftの寺田佳央さん(Javaの神)にハックフェストを開催していただき、当社のエンジニア5名、Alterboothの加藤さん、松村さんの2名で参加してきました。
ハックフェストとは?
マイクロソフトのトップエンジニアの方々とテーマを決めて一緒に解決をしていく夢のようなイベントです。
しかも今回担当してくださったのが、日本に2人しかいないJavaチャンピオンの寺田さんということで、開発言語にJavaを使っているオイシックスとしては嬉しすぎる機会でした。
テーマ
当社が運営しているECサイト「oisix.com」は、17年間機能拡張を重ねた結果、開発スピードの低下やスケーラビリティの低さに悩まされてきました。今回はこの課題を解決するために、Spring Bootでマイクロサービス化して切り出していくというテーマを設定し、最も古く切り出し難易度が高いショッピングカート部分のマイクロサービス化に5日間で取り組みました。
System Architecture
Application
- Java8
- Spring Boot
Data
- Azure Database for MySQL
- Azure Redis Cache
Container Orchestration
- Kubernetes on Azure (ハックフェストではACS、production環境ではAKSへ移行したい!)
- Istio
- Weave Scope
Logging & Monitoring
- LogAnalytics
- Azure Container Monitoring
- Application Insight
- Jaeger
5日間で構築したシステムはこのような構成になっています。
アプリケーションの詳細については、また別の機会に投稿したいとおもいます。
初めてAzureに触れてみた感想
元々想定していなかったのですが、AzureのサービスにはLogAnalytics、Application Insight等のモニタリング機能が充実していたので、積極的に利用させていただきました。
以下の画面は「Azure Container Monitoring」のdefault状態なのですが、このままでも十分活用できそうなレポートにまとまっていて便利です。
「Application Insight」は既存のAPMから乗り換えてもいいかなと思ったり・・・。
この辺りのサービスはAzure外部からも利用できるのようなので、既存のサービス(AWS利用)にも展開していきたいとおもいます。
istioすごい(サービスメッシュ)
istioを使ってBlue-Green・デプロイメント、カナリア・デプロイメント、ローリング・デプロイメントを検証してみました。istioなしで実装するには、かなりしっかり作り込まないと難しいと思うのですが、istioではyamlを書くだけで簡単に動かすことができます。サーキットブレイカーも簡単に実装することができました。(実際に発動するまで負荷をかけるのが大変でしたが…)
この辺りは寺田さんのGithubに詳しく掲載されております。(情報量がすごい)
github.com
モブプログラミング
初めてのモブプログラミング経験で最初は若干戸惑いましたが、5日間でその威力を実感しました。
同じ課題に対してそれぞれが別の角度から見ているので、問題にぶつかった時の解決スピードが速い・・・!
後日、持ち帰って試しに障害対応をモブで実践してみたのですが、やはり原因にたどり着くまでが速いですね。
最後に
5日間我々をサポートしてくださった寺田さん、加藤さん、松村さん。ハックフェストの機会を作ってくださった小島さん。本当にありがとうございました!
www.alterbooth.com
Oisix.daichiでは一緒にマイクロサービスしてくれるエンジニアを募集しております。
興味のある方はぜひお声がけください!