0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ODCのPostgreSQL 13→16メジャーバージョンアップをやってみた

0
Last updated at Posted at 2026-08-04

はじめに

こんにちは、NTT東日本の樋口です。
デジタル革新本部 デジタルデザイン部で、内製開発組織のCoEとしてOutSystemsの開発標準化や共通機能の整備をやっています。

OutSystems Developer Cloud(ODC)のランタイムDBはAmazon Aurora PostgreSQLなのですが、2026年3月にOutSystemsから PostgreSQL 13→16へのメジャーバージョンアップ のお知らせが来ました。

今回はこのアップグレードを実際にやってみたので、その記録を残しておきます。

弊社の環境にはミッションクリティカルな商用ワークロードがなく、最悪何か起きても許容できるので、ある程度割り切って進めました。
本番で重要なシステムを動かしている方は、もっと慎重にやる必要があると思います。あくまで一例として読んでいただければと思います。

ODCのインフラアップデート管理は、O11時代からだいぶ変わった

PostgreSQLバージョンアップの本題に入る前に、そもそもODCのインフラアップデートの仕組み自体がO11(OutSystems 11)からかなり変わっているので、先にそこから見ていきましょう。

O11時代:何をするにもサポートチケット

O11のCloud環境だと、インフラ周りの作業は基本的にサポートとチケットでやり取りするしかありませんでした。プラットフォームのアップグレードのスケジュール調整なども、基本的にはチケットを経由する必要がありました。

そうなると、スケジュールをちょっとずらしたいだけでも、チケット起票 → 返信待ち → 日程調整…のラリーが発生するので、複数環境を持っているとしんどいところがありました。

ODC時代:ポータルで全部できる

ODCでは、2026年3月にセルフサービスのインフラメンテナンススケジューリング機能がリリースされて、この辺の運用がかなりやりやすく変わりました。

ODC Portalの 「Maintain → Platform updates → Infrastructure」から、こんな感じで全部セルフサービスでいけます。

できること 説明
スケジュール確認 予定されているアップデートの一覧・影響範囲・タイムフレームを確認
リスケジュール ステージ(Dev/Test/Prod)ごとに、決められた期間内で好きな日時に変更できる
ステータス追跡 アップデートの進行状況(User scheduledIn progressUpdated など)をリアルタイムで確認できる
Breaking Changesの確認 ドキュメントへのリンクから事前に影響を確認できる

なお、リスケジュールを行えるのは Administrator ロールを持つユーザーのみ です(公式ドキュメントより)。

チケットを切る必要がなくなり、管理者ロールがあればポータル上でポチポチするだけで良いので、O11と比べると格段に楽になりました。O11時代にサポートとの日程調整で消耗した経験がある人ほど、この変化はありがたいと思います。調整のリードタイムがほぼゼロになったのは嬉しいポイントです。

やってみた:PostgreSQL 13→16 アップグレード

アップデート内容の確認

ODC Portalの Maintain → Platform updates → Infrastructure を開くと、PostgreSQL 16へのアップグレードが来ているのが見えます。

image.png
※このスクリーンショットは、アップグレード完了後に取得したものです。

View details をクリックすると、こんな情報が出てきます:

  • 影響: 最大1時間の更新作業、最大30分のダウンタイム
  • Breaking Changes: 破壊的変更の有無や内容
  • タイムフレーム: リスケジュール可能な期間
  • 各ステージの状態: Dev / Test / Prod それぞれのスケジュール状況

ちなみに、、、

  • アップデートは 必須(mandatory) なので、スキップはできません
  • リスケジュールできるのは 決められたタイムフレーム内 だけです
  • 何もしなければ、OutSystemsが設定した日時で自動的に実行されます

公式ドキュメントより)

実際にやったこと

Step 1: 破壊的変更を受ける箇所のチェック

公式からアナウンスされているBreaking Changesの情報をもとに、破壊的変更の影響を受ける箇所がないかをチェックします。今回、私たちのアプリケーションでは該当する箇所はありませんでした。
もし破壊的変更の影響を受けるものがある場合は、計画を立てて修正していく必要があります。

Step 2: まずDev環境のアップグレード

  1. ODC Portalで Development ステージの Reschedule をクリック
  2. 深夜帯(業務影響が少ない時間)を選択
  3. Reschedule update をクリック → ステータスが User scheduled
  4. 指定した時間になったら、OutSystems側でアップデートが実行される

Step 3: アップグレード後の動作確認

ステータスが Updated に変わったら、アプリの動作確認を行いました。

今回は破壊的変更がなかったため、机上では影響がないと判断していましたが、念のため、SQLを直接記述している箇所や、アプリケーションの主要な業務ルートの動作確認を行いました。

結果として、特に影響はないことを確認できました。

Step 4: 残りのステージも同様に

Devで問題なしを確認したうえで、同じ手順でTest → Prodも順次やりました。特に問題なし。

Breaking Changesについて

PG13→PG16はPG14・PG15の変更も巻き取るので、以下のBreaking Changeが公式からアナウンスされていました(公式ドキュメント参照)。

いくつかありましたが、一例として、EXTRACT関数の戻り値の精度が変わるといったものがありました。他にもあるので、詳細は公式ドキュメントを参照しながら進めてみてください。

EXTRACT関数の戻り値精度が変わる

-- 例:タイムスタンプ 2024-06-01 00:00:01 に対して
SELECT EXTRACT(EPOCH FROM {Entity1}.[Timestamp]) / 3600 AS hours_since_epoch
FROM {Entity1}
バージョン 結果 小数桁数
PG13 477000.000277778 9桁
PG16 477000.000277777778 12桁

OutSystemsの標準的なAggregate(ビジュアルクエリ)だけ使っている分には、まず影響ないと思いますが、Advanced QueryでEXTRACTを直接書いている場合 は注意が必要です。

自分の環境では該当クエリがなかったので影響ゼロでしたが、OutSystemsのコミュニティフォーラムでは、10万件超のテーブルで クエリのパフォーマンスが落ちて、インデックスの追加が必要になった という報告が上がっていました。( OutSystems Forum より)

バージョンアップで実行計画が変わるのはPostgreSQLにおいてはよくあるので、特に大きめのテーブルを持っている環境では、先行環境でしっかり確認しておいた方がいいと思います。

気になりそうなところ

Q1: ロールバックはできる?

A. PostgreSQLのバージョン自体を戻す手段は、ユーザー側にはありません。

ODCのインフラアップデートはOutSystems側が管理・実行しているので、DBを元のバージョンに巻き戻すような操作は提供されていません。
アップデート中にエラーが起きた場合は、ステータスが Error になり、自動で再スケジュールされます。

ただし、アプリレベルのロールバック はODC Portalの Deployments から可能です。特定のリビジョンを選んで再デプロイすれば、アプリのコードは以前の状態に戻せます。

レベル ロールバック 方法
インフラ(DB) ❌ 不可 OutSystems管理。エラー時は自動再スケジュール
アプリケーション ✅ 可能 ODC Portal → Deployments からリビジョンを選んで再デプロイ

Q2: 環境間でバージョンが違う期間、どうする?

ODCは各ステージ(Dev / Test / Prod)で個別にスケジュールできるので、タイミング次第で Dev=PG16、Prod=PG13 みたいな状態が一時的に発生します。
今回はこうしました。

  • 意図的にDevを先行 させて、PG16固有の問題がないか確認
  • 問題なければ 数日〜1週間くらいで Test → Prodも順次アップグレード
  • バージョンが違う期間を、なるべく短くすることを意識

この期間は、基本的に商用環境へのデプロイは極力控えるようにしました。もし改修や機能追加を行う際は、以下のポイント、特にSQLを実装するときに注意して進めました。

  • Dev=PG16で開発した新しいSQLが、まだPG13のProd環境でも動くかどうかを頭に入れておく
    • PG14〜16で新しく使えるようになった機能(例:MERGE文〔PG15で追加〕など)をうっかり使うと、まだPG13のままのProdでエラーになりうる
  • 逆に、PG13で動いていたクエリがPG16で遅くなる可能性もあるので、先行環境での確認は大事

まとめ

ODCのインフラアップデート管理は、O11時代と比べて本当に楽になりました。 チケットのやり取りなしで、スケジュール調整からステータス追跡までポータル上で完結できるのは、開発者/運用者体験としてかなり良くなったと感じます。

一方で、PostgreSQLのメジャーバージョンアップそのものは、操作がセルフサービス化されても中身はしっかり見ておく必要があります。今回は影響がありませんでしたが、Advanced Queryで直接SQLを書いている場合や、大きめのテーブルを持っている環境では、Breaking Changesの確認と先行環境での動作確認を怠らないのがポイントです。


※記載されている会社名、製品名、サービス名は、各社の商標または登録商標です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?