Upgrade to Pro — share decks privately, control downloads, hide ads and more …

脱レガシー! Aurora PostgreSQLに移行してみた OCEM #2

脱レガシー! Aurora PostgreSQLに移行してみた OCEM #2

脱レガシー! Aurora PostgreSQLに移行してみた

ONECOMPATH Engineer Meetup #2 (OCEM#2)
https://ocem.connpass.com/event/273110/

One compath

March 08, 2023
Tweet

More Decks by One compath

Other Decks in Programming

Transcript

  1. ©ONE COMPATH CO., LTD. All rights reserved.   今回のお話
 2 弊社サービスMapionBizの


    データベースを
 オンプレミス環境から
 クラウド環境に
 移行した話です

  2. ©ONE COMPATH CO., LTD. All rights reserved.   いきなりですが、まとめ
 3 🍯

    AWS Aurora PostgreSQLに移行することで運用が楽になりオートスケールも可 能になった
 
 🍯 オンプレミス環境と比較しても遜色ない機能を実現できただけでなく、移行を機 に複雑なストアドなど負の遺産を解消してメンテナンスしやすいシステムに作り 替えた
 
 🍯 システム移行はタイミングと思い切りが重要

  3. ©ONE COMPATH CO., LTD. All rights reserved.   自己紹介
 4 🍯

    名前と所属
 🐝 船越 幹人(ふなこし みきと)
 🐝 プラットフォーム事業本部 CS・開発部
 BIZ開発グループ 
 
 🍯 担当業務
 🐝 主にバックエンドのシステム開発、運用
 
 🍯 その他
 🐝 はちのこ兄です
 🐝 サウナ初心者です
 🐝 最高に「ととのう」には
 どうすれば良いかおしえてください♨

  4. ©ONE COMPATH CO., LTD. All rights reserved.   所属組織の紹介
 5 BIZ開発グループ


    営業グループ
 法人顧客
 営業
 PM
 フロントエンド
 エンジニア
 バックエンド
 エンジニア

  5. ©ONE COMPATH CO., LTD. All rights reserved.   MapionBizとは
 6 POINT

    1 POINT 2 POINT 3 どこにあるの?を手軽に解決する 法人向け地図ソリューション 地図検索サービス「マピオン」をベースとした20年以上の運用実績をもつ法人向け地図ソリューション サービス。店舗検索、取扱い店舗検索、Google ビジネスプロフィール連携など、様々なビジネスシーン で活用いただけるASP、地図APIや各種地図コンテンツを提供。 MapionBiz 地図ソリューション サービス https://www.mapion.co.jp/sales/ 〇〇店はどこ?がすぐ見つかる 「店舗検索サービス」 地図上で店舗を検索できるページを 配信。展開している店舗のデータ管 理、店舗案内ページの管理に課題を 抱えている企業様におすすめです。 あの商品はどこで買える? 「取扱い店舗検索サービス」 商品を取扱う最寄りの店舗を手軽に 検索。自社商品の販売機会損失防 止や、コンタクトセンター・お客様相談 室の業務効率化におすすめです。 地図や位置情報を活用するサービス やアプリ開発を支援する各種 APIを 提供。また、要望に応じたシステムを 経験豊富なエンジニアが設計・開発 します。 コンテンツの魅力を高める 各種APIとスクラッチ開発
  6. ©ONE COMPATH CO., LTD. All rights reserved.   MapionBizの2大サービス
 7 ①

    店舗検索サービス
 
 指定された条件の店舗をさがす 
 例:◯◯駅の最寄りの店舗をさがす 
 ② 取扱い店舗検索サービス
 
 指定された商品の販売店舗をさがす 
 例:◯◯を売っている最寄りの店舗をさがす 

  7. ©ONE COMPATH CO., LTD. All rights reserved.   MapionBizをささえるデータベース
 8 顧客ごとにスキーマを作成し


    以下のデータを格納
 店舗データ
 商品データ
 在庫データ
 ➡ 15年以上サービス継続

  8. ©ONE COMPATH CO., LTD. All rights reserved.   従来のデータベースの課題
 9 🍯

    商用データベースのライセンス費用
 🍯 オンプレミスのデータセンター費用
 コスト増
 🍯 ハード・ソフトともにレガシーなものを利用
 🍯 スケールアウトが困難(追加ライセンス・ハードウェアが必要)
 パフォーマンス劣化 
 🍯 ストアドを多用した複雑な実装
 🍯 特定のエンジニアしかメンテナンスできない
 属人化

  9. ©ONE COMPATH CO., LTD. All rights reserved.   データベースをクラウド環境に移行したい
 10 ❖

    でも、いざ移行するとなると‥
 そんな費用出せない! 
 スキーマが多すぎる ※400スキーマ以上 
 独自の実装が多すぎる 
 仕様がわからない
 新サービス・新機能の開発が 
 先だ!
 サービスを止めずに移行するのは無 理!
 営業
 決裁者
 別のデータベースに移行するのはと んでもない工数がかかる! 
 エンジニア

  10. ©ONE COMPATH CO., LTD. All rights reserved.   データベース移行の機運
 11 2020年はじめごろ


    🍯 全社的にAWSに移行してオンプレミス環境のシステムが少数派に
 🍯 社内でAWS Auroraを採用したサービス実績が出てきた
 🐝 機能的にオンプレミス環境と比較しても遜色ない
 🍯 オンプレミス環境を継続利用する場合データベースソフトウェアのアップグレードが必要 になった ➡ 2022年末までに対応が必要
 🐝 クラウド環境に移行したほうが(移行費用を考慮しても)コスト削減の試算
 ➡ クラウド環境に移行する絶好のチャンス!

  11. ©ONE COMPATH CO., LTD. All rights reserved.   移行先データベースの要件
 12 🍯

    クラウド上で動作するマネージドデータベース
 
 🍯 オープンソースデータベース互換
 
 🍯 オートスケール可能
 
 🍯 既存の商用データベースで利用していた機能を移行できる
 🐝 日本語含む全文検索
 🐝 ジョブスケジューラー
 🐝 空間検索
 🐝 外部表からのデータ登録
 🐝 …などなど

  12. ©ONE COMPATH CO., LTD. All rights reserved. 🍯 要件を満たせるかどうか技術調査期間を設けて検証
 


    
 
 
 
 🍯 調査内容
 🐝 移行先データベースの選定
 🐝 既存機能の実現方法
 🍋 日本語含む全文検索
 🍋 ジョブスケジューラー
 🍋 空間検索
 🍋 外部表からのデータ登録
 🐝 スキーマ・データ移行用ツール選定
 🐝 移行コスト見積
   技術調査
 13 2020年
 2021年
 2022年
 移行作業
 調査

  13. ©ONE COMPATH CO., LTD. All rights reserved. 🍯 対象データベースの特徴
 🐝

    スキーマ数が多い(> 400)
 🐝 空間検索を多用
 🐝 ストアドを多用
 🐝 更新頻度は低、更新量は多
 🐝 検索数は安定、キャンペーン等で急激に増加する場合あり
 
 🍯 社内実績から AWS Aurora の一択
 🐝 運用が楽
 🐝 オートスケールしやすい
 
 🍯 空間検索に強いというところも考慮して Aurora PostgreSQL に決定
   [技術調査] 移行先データベースの選定
 14
  14. ©ONE COMPATH CO., LTD. All rights reserved. 🍯 日本語含む全文検索
 🐝

    pg_bigm と pgroonga を比較
 ➡ pgroonga を採用
   [技術調査] 既存機能の実現方法
 15 
 検索速度
 (従来との比較)
 ヒット件数
 (従来との比較)
 インデックス
 サイズ
 インデックス
 作成時間
 タグ付きテキスト 検索(*1)
 pg_bigm
 ▲
 (やや遅い)
 英語+日本語
 混在すると差が大
 小
 遅
 不可
 pgroonga
 ◎
 (特にand/orが速い) 
 英語+日本語
 混在しても差が小
 大
 速
 jsonに変換する ことで可能
 *1:タグ付きテキスト検索の例
 addressに特定のワードを含むレコードを検索したい
 (従来)<name>店名</name><address>住所</address>    ↓
 (移行後){“name”: “店名”, “address”: “住所”}
  15. ©ONE COMPATH CO., LTD. All rights reserved. 🍯 日本語含む全文検索
 🐝

    elasticsearch の可能性も検討
 
 🍋 [得意なこと]
 ✔ 形態素解析や”ゆらぎ”にも対応した柔軟な検索
 ✔ スケール
 🍋 [苦手なこと]
 ✔ トランザクション
 ✔ リレーション
 
 ➡ 複数テーブルの結合によるクエリーや
 トランザクションを利用しているため
 RDBベースの全文検索のほうが良いと考え
 採用は見送り
   [技術調査] 既存機能の実現方法
 16
  16. ©ONE COMPATH CO., LTD. All rights reserved. 🍯 日本語含む全文検索
 🐝

    pgroonga にはひとつ課題があり
 Aurora PostgreSQL にインストールできない(pg_bigmは可能)
 
 ➡ EC2 上に PostgreSQL+pgroonga をインストールし
 Aurora PostgreSQL との論理レプリケーションによりデータ同期
 することで対応
   [技術調査] 既存機能の実現方法
 17 Aurora PostgreSQL 
 PostgreSQL + pgroonga 
 on EC2
 論理
 レプリケーション
 全文検索用
 データベース

  17. ©ONE COMPATH CO., LTD. All rights reserved. 🍯 ジョブスケジューラー
 🐝

    Aurora PostgreSQL に実装されていないため独自に実装
 🐝 AWS Batch は Python で実装しストアドは極力使用しないようにした
 ➡ メンテナンス性が向上
 ➡ 対応できるエンジニアが増えた
   [技術調査] 既存機能の実現方法
 18
  18. ©ONE COMPATH CO., LTD. All rights reserved. 🍯 空間検索
 🐝

    PostGISを使用
 🐝 空間情報(緯度経度・測地系)の持ち方やクエリーを変えることで対応可能
 
 🍯 外部表からのデータ登録
 🐝 S3上にファイルを置いて取り込むことが可能
   [技術調査] 既存機能の実現方法
 19
  19. ©ONE COMPATH CO., LTD. All rights reserved. 🍯 ツール比較
 


    
 
 
 
 
 
 どちらもある程度機械的に型やストアドを
 自動変換してくれるなど高機能ですが
 ・測地系を加味した空間情報の変換
 ・タグ付きテキスト⇒jsonp型への変換(全文検索)
 などをプログラムを書いて実装したく
 CUIによるオープンソース移行ツールを採用
   [技術調査] スキーマ・データ移行用ツール選定
 20 AWS Schema Conversion Tool
 オープンソース移行ツール
 AWS が出しているGUIによる異なるデータベース 間での移行ツール
 Perlで書かれたCUIによるオープンソース移行ツー ル

  20. ©ONE COMPATH CO., LTD. All rights reserved.   移行計画上申 → プロジェクト承認


    21 🍯 2021年1月〜12月
 🐝 [フェーズ①] 移行先のシステムを構築
 
 🍯 2022年1月〜12月
 🐝 [フェーズ②] 顧客スキーマを順次移行
 2021年
 2022年
 フェーズ②
 フェーズ①
 費用シミュレーションとあわせ て上申
 ➡ 2020年末にめでたくプロ ジェクト承認

  21. ©ONE COMPATH CO., LTD. All rights reserved.   [フェーズ①] 移行先のシステムを構築
 23

    🍯 顧客側での変更を不要にするた め、管理画面やAPIのURLを変えな いようにした
 
 ➡ スキーマ単位で新旧どちらの データベースに接続するかを振り分 け可能な設計とした

  22. ©ONE COMPATH CO., LTD. All rights reserved.   [フェーズ②] 顧客スキーマを順次移行
 24

    🍯 400以上のスキーマをグルーピングして移行
 
 🍯 効率的かつ安全に移行する ➡ ①〜⑤の順に移行
 
 🐝 共通スキーマ①
 🍋 住所, 郵便番号, 注記など全顧客共通に参照するスキーマ
 
 🐝 顧客スキーマ
 🍋 顧客ごとに割り当てられたスキーマ
 
 商品検索
 取扱い店舗検索
 カスタマイズ度合い[小]
 ②
 ④
 カスタマイズ度合い[大]
 ③
 ⑤

  23. ©ONE COMPATH CO., LTD. All rights reserved.  移行後の効果
 26 🍯

    自動フェイルオーバー・自動バックアップ等とにかく運用が楽
 
 🍯 ストレージ容量が自動的にスケールアップするためディスク残量を気にする必要が ない(もちろん使った分は課金される)
 
 🍯 オートスケール可能になり急激なアクセス増に耐えられるようになった

  24. ©ONE COMPATH CO., LTD. All rights reserved.  移行後の効果
 27 🍯

    Performance Insights により自動的に高負荷なクエリーを検出
 
 ➡ インデックスが効いていないクエリーを発見し
 チューニングした実績あり

  25. ©ONE COMPATH CO., LTD. All rights reserved.  現状の課題
 28 🍯

    全文検索用データベースへの論理レプリケーションに課題あり
 
 🐝 大量データ更新した場合にレプリケーション遅延が起きる場合がある
 
 🐝 論理レプリケーションはDML文しか同期されない
 🍋 DDL文発行時は全文検索用データベースを再作成する必要ある
 🍋 バッチによりEC2インスタンス再作成する仕組みを構築した
 🍋 インスタンス再作成に時間がかかり[30-40分程度]
 バッチ処理がタイムアウトする場合がある
 
 
 
 Aurora PostgreSQL
 PostgreSQL
 + pgroonga
 on EC2
 論理
 レプリケーション
 全文検索用
 データベース

  26. ©ONE COMPATH CO., LTD. All rights reserved.   まとめ、ふたたび
 29 🍯

    AWS Aurora PostgreSQLに移行することで運用が楽になりオートスケールも可 能になった
 
 🍯 オンプレミス環境と比較しても遜色ない機能を実現できただけでなく、移行を機 に複雑なストアドなど負の遺産を解消してメンテナンスしやすいシステムに作り 替えた
 
 🍯 システム移行はタイミングと思い切りが重要

  27. ©ONE COMPATH CO., LTD. All rights reserved.   最後に
 30 🐝

    データベースが好きな人
 
 🐝 クラウド環境が好きな人
 
 🐝 そうではないけど一緒に開発したい人
 お待ちしています