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(ワンコンパス)
    脱レガシー!

    Aurora PostgreSQLに移行してみた

    株式会社 ONE COMPATH

    プラットフォーム事業本部

    船越 幹人


    View full-size slide

  2. ©ONE COMPATH CO., LTD. All rights reserved.
      今回のお話

    2
    弊社サービスMapionBizの

    データベースを

    オンプレミス環境から

    クラウド環境に

    移行した話です


    View full-size slide

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

    3
    🍯 AWS Aurora PostgreSQLに移行することで運用が楽になりオートスケールも可
    能になった


    🍯 オンプレミス環境と比較しても遜色ない機能を実現できただけでなく、移行を機
    に複雑なストアドなど負の遺産を解消してメンテナンスしやすいシステムに作り
    替えた


    🍯 システム移行はタイミングと思い切りが重要


    View full-size slide

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

    4
    🍯 名前と所属

    🐝 船越 幹人(ふなこし みきと)

    🐝 プラットフォーム事業本部 CS・開発部

    BIZ開発グループ 


    🍯 担当業務

    🐝 主にバックエンドのシステム開発、運用


    🍯 その他

    🐝 はちのこ兄です

    🐝 サウナ初心者です

    🐝 最高に「ととのう」には

    どうすれば良いかおしえてください♨


    View full-size slide

  5. ©ONE COMPATH CO., LTD. All rights reserved.
      所属組織の紹介

    5
    BIZ開発グループ

    営業グループ

    法人顧客

    営業

    PM

    フロントエンド

    エンジニア

    バックエンド

    エンジニア


    View full-size slide

  6. ©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とスクラッチ開発

    View full-size slide

  7. ©ONE COMPATH CO., LTD. All rights reserved.
      MapionBizの2大サービス

    7
    ① 店舗検索サービス


    指定された条件の店舗をさがす 

    例:◯◯駅の最寄りの店舗をさがす 

    ② 取扱い店舗検索サービス


    指定された商品の販売店舗をさがす 

    例:◯◯を売っている最寄りの店舗をさがす 


    View full-size slide

  8. ©ONE COMPATH CO., LTD. All rights reserved.
      MapionBizをささえるデータベース

    8
    顧客ごとにスキーマを作成し

    以下のデータを格納

    店舗データ
 商品データ
 在庫データ

    ➡ 15年以上サービス継続


    View full-size slide

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

    9
    🍯 商用データベースのライセンス費用

    🍯 オンプレミスのデータセンター費用

    コスト増

    🍯 ハード・ソフトともにレガシーなものを利用

    🍯 スケールアウトが困難(追加ライセンス・ハードウェアが必要)

    パフォーマンス劣化 

    🍯 ストアドを多用した複雑な実装

    🍯 特定のエンジニアしかメンテナンスできない

    属人化


    View full-size slide

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

    10
    ❖ でも、いざ移行するとなると‥

    そんな費用出せない! 

    スキーマが多すぎる ※400スキーマ以上

    独自の実装が多すぎる 

    仕様がわからない

    新サービス・新機能の開発が 

    先だ!

    サービスを止めずに移行するのは無
    理!

    営業

    決裁者

    別のデータベースに移行するのはと
    んでもない工数がかかる! 

    エンジニア


    View full-size slide

  11. ©ONE COMPATH CO., LTD. All rights reserved.
      データベース移行の機運

    11
    2020年はじめごろ

    🍯 全社的にAWSに移行してオンプレミス環境のシステムが少数派に

    🍯 社内でAWS Auroraを採用したサービス実績が出てきた

    🐝 機能的にオンプレミス環境と比較しても遜色ない

    🍯 オンプレミス環境を継続利用する場合データベースソフトウェアのアップグレードが必要
    になった ➡ 2022年末までに対応が必要

    🐝 クラウド環境に移行したほうが(移行費用を考慮しても)コスト削減の試算

    ➡ クラウド環境に移行する絶好のチャンス!


    View full-size slide

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

    12
    🍯 クラウド上で動作するマネージドデータベース


    🍯 オープンソースデータベース互換


    🍯 オートスケール可能


    🍯 既存の商用データベースで利用していた機能を移行できる

    🐝 日本語含む全文検索

    🐝 ジョブスケジューラー

    🐝 空間検索

    🐝 外部表からのデータ登録

    🐝 …などなど


    View full-size slide

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






    🍯 調査内容

    🐝 移行先データベースの選定

    🐝 既存機能の実現方法

    🍋 日本語含む全文検索

    🍋 ジョブスケジューラー

    🍋 空間検索

    🍋 外部表からのデータ登録

    🐝 スキーマ・データ移行用ツール選定

    🐝 移行コスト見積

      技術調査

    13
    2020年
 2021年
 2022年

    移行作業

    調査


    View full-size slide

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

    🐝 スキーマ数が多い(> 400)

    🐝 空間検索を多用

    🐝 ストアドを多用

    🐝 更新頻度は低、更新量は多

    🐝 検索数は安定、キャンペーン等で急激に増加する場合あり


    🍯 社内実績から AWS Aurora の一択

    🐝 運用が楽

    🐝 オートスケールしやすい


    🍯 空間検索に強いというところも考慮して Aurora PostgreSQL に決定

      [技術調査] 移行先データベースの選定

    14

    View full-size slide

  15. ©ONE COMPATH CO., LTD. All rights reserved.
    🍯 日本語含む全文検索

    🐝 pg_bigm と pgroonga を比較

    ➡ pgroonga を採用

      [技術調査] 既存機能の実現方法

    15
    
 検索速度

    (従来との比較)

    ヒット件数

    (従来との比較)

    インデックス

    サイズ

    インデックス

    作成時間

    タグ付きテキスト
    検索(*1)

    pg_bigm
 ▲

    (やや遅い)

    英語+日本語

    混在すると差が大

    小
 遅
 不可

    pgroonga
 ◎

    (特にand/orが速い)

    英語+日本語

    混在しても差が小

    大
 速
 jsonに変換する
    ことで可能

    *1:タグ付きテキスト検索の例

    addressに特定のワードを含むレコードを検索したい

    (従来)店名住所
       ↓

    (移行後){“name”: “店名”, “address”: “住所”}

    View full-size slide

  16. ©ONE COMPATH CO., LTD. All rights reserved.
    🍯 日本語含む全文検索

    🐝 elasticsearch の可能性も検討


    🍋 [得意なこと]

    ✔ 形態素解析や”ゆらぎ”にも対応した柔軟な検索

    ✔ スケール

    🍋 [苦手なこと]

    ✔ トランザクション

    ✔ リレーション


    ➡ 複数テーブルの結合によるクエリーや

    トランザクションを利用しているため

    RDBベースの全文検索のほうが良いと考え

    採用は見送り

      [技術調査] 既存機能の実現方法

    16

    View full-size slide

  17. ©ONE COMPATH CO., LTD. All rights reserved.
    🍯 日本語含む全文検索

    🐝 pgroonga にはひとつ課題があり

    Aurora PostgreSQL にインストールできない(pg_bigmは可能)


    ➡ EC2 上に PostgreSQL+pgroonga をインストールし

    Aurora PostgreSQL との論理レプリケーションによりデータ同期

    することで対応

      [技術調査] 既存機能の実現方法

    17
    Aurora PostgreSQL 
 PostgreSQL + pgroonga 

    on EC2

    論理

    レプリケーション

    全文検索用

    データベース


    View full-size slide

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

    🐝 Aurora PostgreSQL に実装されていないため独自に実装

    🐝 AWS Batch は Python で実装しストアドは極力使用しないようにした

    ➡ メンテナンス性が向上

    ➡ 対応できるエンジニアが増えた

      [技術調査] 既存機能の実現方法

    18

    View full-size slide

  19. ©ONE COMPATH CO., LTD. All rights reserved.
    🍯 空間検索

    🐝 PostGISを使用

    🐝 空間情報(緯度経度・測地系)の持ち方やクエリーを変えることで対応可能


    🍯 外部表からのデータ登録

    🐝 S3上にファイルを置いて取り込むことが可能

      [技術調査] 既存機能の実現方法

    19

    View full-size slide

  20. ©ONE COMPATH CO., LTD. All rights reserved.
    🍯 ツール比較








    どちらもある程度機械的に型やストアドを

    自動変換してくれるなど高機能ですが

    ・測地系を加味した空間情報の変換

    ・タグ付きテキスト⇒jsonp型への変換(全文検索)

    などをプログラムを書いて実装したく

    CUIによるオープンソース移行ツールを採用

      [技術調査] スキーマ・データ移行用ツール選定

    20
    AWS Schema Conversion Tool
 オープンソース移行ツール

    AWS が出しているGUIによる異なるデータベース
    間での移行ツール

    Perlで書かれたCUIによるオープンソース移行ツー
    ル


    View full-size slide

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

    21
    🍯 2021年1月〜12月

    🐝 [フェーズ①] 移行先のシステムを構築


    🍯 2022年1月〜12月

    🐝 [フェーズ②] 顧客スキーマを順次移行

    2021年
 2022年

    フェーズ②

    フェーズ①

    費用シミュレーションとあわせ
    て上申

    ➡ 2020年末にめでたくプロ
    ジェクト承認


    View full-size slide

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

    22
    🍯 移行前の状態


    View full-size slide

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

    23
    🍯 顧客側での変更を不要にするた
    め、管理画面やAPIのURLを変えな
    いようにした


    ➡ スキーマ単位で新旧どちらの
    データベースに接続するかを振り分
    け可能な設計とした


    View full-size slide

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

    24
    🍯 400以上のスキーマをグルーピングして移行


    🍯 効率的かつ安全に移行する ➡ ①〜⑤の順に移行


    🐝 共通スキーマ①

    🍋 住所, 郵便番号, 注記など全顧客共通に参照するスキーマ


    🐝 顧客スキーマ

    🍋 顧客ごとに割り当てられたスキーマ

    
 商品検索
 取扱い店舗検索

    カスタマイズ度合い[小]
 ②
 ④

    カスタマイズ度合い[大]
 ③
 ⑤


    View full-size slide

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

    25
    🍯 すべてのスキーマが

    移行完了


    View full-size slide

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

    26
    🍯 自動フェイルオーバー・自動バックアップ等とにかく運用が楽


    🍯 ストレージ容量が自動的にスケールアップするためディスク残量を気にする必要が
    ない(もちろん使った分は課金される)


    🍯 オートスケール可能になり急激なアクセス増に耐えられるようになった


    View full-size slide

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

    27
    🍯 Performance Insights により自動的に高負荷なクエリーを検出


    ➡ インデックスが効いていないクエリーを発見し

    チューニングした実績あり


    View full-size slide

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

    28
    🍯 全文検索用データベースへの論理レプリケーションに課題あり


    🐝 大量データ更新した場合にレプリケーション遅延が起きる場合がある


    🐝 論理レプリケーションはDML文しか同期されない

    🍋 DDL文発行時は全文検索用データベースを再作成する必要ある

    🍋 バッチによりEC2インスタンス再作成する仕組みを構築した

    🍋 インスタンス再作成に時間がかかり[30-40分程度]

    バッチ処理がタイムアウトする場合がある




    Aurora
    PostgreSQL

    PostgreSQL

    + pgroonga

    on EC2

    論理

    レプリケーション

    全文検索用

    データベース


    View full-size slide

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

    29
    🍯 AWS Aurora PostgreSQLに移行することで運用が楽になりオートスケールも可
    能になった


    🍯 オンプレミス環境と比較しても遜色ない機能を実現できただけでなく、移行を機
    に複雑なストアドなど負の遺産を解消してメンテナンスしやすいシステムに作り
    替えた


    🍯 システム移行はタイミングと思い切りが重要


    View full-size slide

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

    30
    🐝 データベースが好きな人


    🐝 クラウド環境が好きな人


    🐝 そうではないけど一緒に開発したい人

    お待ちしています


    View full-size slide