2019年から2022年末までに、カラーミーショップの可用性を向上させるために取り組んできたことのサマリを発表しました。
GMO Develovers Day 2022での発表資料です。
可用性No.1へ!「カラーミーショップ」のリ・アーキテクティングGMOペパボ株式会社技術責任者 兼 EC事業部シニアエンジニアリングリード高橋 健一 (@kenchan)
View Slide
今日のおはなし「カラーミーショップ byGMOペパボ」では2020年より可用性の向上に取り組んできました。その結果、2022年1月から9月までの間、商品の閲覧から購入完了までのフローにおける稼働率99.98%を達成しました。本発表では、これを達成するために取り組んだシステムの改善を4つ紹介します。
アジェンダ1. 「カラーミーショップ by GMOペパボ」について2. ECプラットフォームにおける可用性の重要性3. 可用性向上のために取り組んだこと4選4. 今後の展望
カラーミーショップについて
サービス開始は2005年であり今年で18年目カラーミーショップについて利用いただいている店舗は約40,000店舗全店舗の流通合計額は年間で約2070億円※ 数字は2021年末時点
アジェンダ1. 「カラーミーショップ by GMOペパボ」について2. ECプラットフォームの可用性の重要性3. 可用性向上のために取り組んだこと4選4. 今後の展望
ECプラットフォームとしての特性マルチテナント ユーザのビジネス基盤👨💼🧑🏼💼👩💼👩🏾💼リソースは共有する一方で、テナント単位で論理的に独立している。ユーザにとってはビジネスの場でありミッションクリティカルなシステムである。
ECプラットフォームにおける障害の意味システムの稼働率がビジネスに直結• 1時間全停止すると約2300万の流通損失• 年間流通2070億円 / 365日 / 24時間 ≒ 2300万💸💸💸• システム障害は3者にとっての不利益• 消費者は欲しいものが手に入らない• ショップオーナーは商売ができない• GMOペパボは信頼を失なう
高い稼働率には価値があるECビジネスを支える 技術的なチャレンジマルチテナントアーキキテクチャではリソースの共有と隔離の設計が肝。全てを共有するのも、完全に隔離するのも、コストパフォーマンスが良いとは言えない。稼働率の高さはお客様のビジネスを支えるシステムの前提であると共に、一般消費者・EC事業者・私達の3者を笑顔にする武器でもある。
稼働率を定義して改善する• 改善の一歩目は指標を決めて計測すること• 「推測するな計測せよ」• ECサイトで重要なのは商品の購入ができること• アプリケーション、データベース、決済システムなど実は複雑商品ページの閲覧から購入完了までが完了できることを改善するメトリクスと決定
アジェンダ1. データベースサーバの可用性向上2. アプリケーションのパフォーマンス改善3. フィーチャートグルの導入4. 待合室によるシステムの保護可用性向上のために取り組んだこと
1. データベースの可用性向上カラーミーショップの単一障害点• カラーミーショップはDBで結合する複数のサブシステムで構成• 2019年時点ではプライベートクラウド基盤上で運用• 深夜にPrimary DBの障害が発生し数時間のシステムダウン
1. データベースの可用性向上Amazon RDSへの移行を決断AWS Direct Connectを利用した多段レプリケーションによる移行※「Amazon RDS移行のための 性能検証でわかった2つのこと」より
1. データベースの可用性向上Amzon RDSへの移行の狙い• 高い可用性• Multi-AZ環境ではSLA 99.95%• オペレーションの構造化が可能• 柔軟性は減るがトラブルや障害の対応手順を一般化可能
2. アプリケーションのパフォーマンス改善パフォーマンス計測と改善• 商品ページの表示から購入完了までに関わるアプリケーション全てにAPMを導入• 「可用性向上プロジェクト」を立ち上げ、専任のメンバーでパフォーマンス改善を推進
2. アプリケーションのパフォーマンス改善「レガシーWebアプリケーションの性能とコードの健全性をインクリメンタルに改善する」より
3. フィーチャートグルの導入Testing in Productionの実践• システムの規模が大きく複雑性が高いシステムでは、本番環境でしか起こらない問題が発生する• データ量の違い• サービス間の連携• ハードウェア、ネットワークの違い• 本番環境において、ユーザに影響を出さずにテストすることで安全にリリースする
3. フィーチャートグルの導入「切り取り方を工夫してアプリケーションを漸進的に改善する」より
4. 待合室によるシステムの保護システムの限界を超えるアクセスの発生• 限定・予告販売等でのアクセスの急増• 自動購入BOTによる大量のアクセス• 時期などをプラットフォーム側がコントロールするのが困難• スケールアウトが間に合わない場合が多い対応が困難な場合が多い
4. 待合室によるシステムの保護https://ten-snapon.com/archives/2701https://shop-pro.jp/news/release-waiting-room/システムを守りつつ機会損失を減らす
まとめ私たちが可用性向上のために取り組んできたこと1. Amazon RDS移行によるデータベースサーバの可用性向上2. アプリケーションのパフォーマンス改善3. フィーチャートグルによる安全なリリースフローの確立4. 突発的なアクセス急増からシステムを守るWaiting Roomの導入
アジェンダ1. 「カラーミーショップbyGMOペパボ」について2. ECプラットフォームの可用性の重要性3. 可用性向上のために取り組んだこと4選4. 今後の展望
今後の展望SREのプラクティスを取り入れた開発• エラーバジェットの運用• 高い可用性を確保したまま、魅力的な機能の開発・技術的なチャレンジを行うより柔軟にリソースを管理できるアーキテクチャへ• Shopsetアーキテクチャの本番投入
今日のおはなし「カラーミーショップ byGMOペパボ」では2020年より可用性の向上に取り組んできました。その結果、2022年1月から9月までの間、商品の閲覧から購入完了までのフローにおける稼働率99.98%を達成しました。本発表では、これを達成するために取り組んだシステムの改善を4つ紹介しました。
No.1 ECプラットフォームを一緒に作りましょう!https://recruit.pepabo.com/