2021/07 DjangoCongress JP 2021 のトークネタメモ
2021トークネタメモ for 2021/07/03 DjangoCongress JP 2021 イベント CfP
https://djangocongress.jp/
トーク概要1
発表のタイトル
OpenTelemetryでDjangoシステムの処理を追跡しよう
発表の内容(詳細なほど良い)
OpenTelemetryは、複数のプロセス、システムをまたがってアプリケーションの処理を追跡する分散トレースの仕組みを提供するフレームワークで、今年2021年春に1.0.0 がリリースされました。このライブラリを活用し、Djangoアプリおよび周辺システムの処理を追跡する方法について紹介します。
OpenTelemetryは、OpenTracingとOpenCensusが合流して生まれ、Cloud Native Computing Foundation(CNCF)配下のIncubatingプロジェクトとして活発に開発が進められています。分散トレースは複数サーバ・複数コンテナ時代になって難しくなった、通信の流れの把握や、ボトルネック把握、プロファイリングをサポートする、クラウド上で多数のシステムが協調動作する現代のソフトウェア開発の現場では重要な技術です。
ネタ
Django + OpenTelemetry
今年2021年春にリリースされた OpenTelemetry 1.0.0 は、OpenTracingとOpenCensusが合流して生まれました。
https://ja.wikipedia.org/wiki/Cloud_Native_Computing_Foundation#OpenTelemetry
Cloud Native Computing Foundation(CNCF)は、Linux Foundationのプロジェクトの1つで、コンテナ技術の推進と、その進化を取り巻くテクノロジー業界の足並みを揃えるために2015年に創設された財団
OpenTelemetryは、CNCFによるOpenTracingおよびOpenCensusプロジェクトの統合によって作られたオープンソースの可観測性フレームワーク。
このような仕組みを提供するフレームワークは以前ありました
それらのうちの2つ、OpenTracingとOpenCensusのマージが2019年春に発表され、今年2021年春にはOpenTelemetry 1.0.0 がリリースされまれました。
OpenTelemetryはアプリケーション内の情報を収集(インストルメント)するためのライブラリを提供します。
Djangoアプリおよび周辺システムの処理を収集・プロファイリングする方法について紹介
トーク概要2
タイトル
RLSを用いたマルチテナント実装 for Django
CFP概要
マルチテナントは、複数のテナント(チーム・組織)向けにサービスを提供するシステムで、テナント相互の情報を分離して扱う仕組みです。
マルチテナントを使わなくても、ユーザーが所属するチームの情報だけにアクセスできるような実装は可能ですが、そのような「各プログラマが努力して解決する」方法では、プログラミングミスや設定間違いによるデータ混濁が高確率で発生します。その可能性を可能な限り無くすために、複数の マルチテナントアーキテクチャが考えられます。
このトークでは、データ分離アプローチのひとつ「共有アプローチ」をDjangoで実現する方法を紹介します。共有アプローチはテナント相互の情報を分離して扱いつつ、サーバーリソースを最大限効率的に利用する戦略です。これを、アプリケーションレイヤではなく、データベースレイヤで実現するために、PostgresのRow Level Security (RLS) 機能を使用します。この仕組みを他のマルチテナントアーキテクチャとの比較し、メリット、デメリットを紹介します。
掲載概要
複数のテナント(チーム・組織)向けにサービスを提供するシステムで、テナント相互の情報を分離して扱う、複数のマルチテナントアーキテクチャが考案されています。「各プログラマが努力して実装する」戦略でも実現はできますが、プログラミングミスや設定間違いによるデータ混濁が高確率で発生します。このトークでは、マルチテナントアーキテクチャにおけるデータ分割アプローチのひとつ「共有アプローチ」をDjangoとPostgresのRow Level Security (RLS) の組合せで安全に実現する方法を紹介します。またこの方法のメリット、デメリットを紹介します。
ネタ
Django + RLS でマルチテナント
データ混濁をどのように避けるか
トーク概要3
タイトル
Djangoアプリを並行開発する際のマイグレーション戦略
概要
DjangoなどのWebフレームワークには、DBのスキーマを変更するマイグレーション機能があります。一般的に、プログラムを実装するときはリポジトリでブランチを作りそれぞれのブランチで実装作業を進めます。Djangoアプリの開発でも同様ですが、各ブランチでDBスキーマを変更する場合には注意が必要です。例えば、複数のブランチで同じテーブルのカラムを追加して使いたい場合や、DBスキーマの変更が競合する場合は、ブランチのマージ時に競合してしまいます。多くの機能を並行開発したり、マージするまでの期間が長い場合には、このような競合が増えてしまいます。
このトークでは、Djangoのデータベースマイグレーションの仕組みから、実際の開発現場で発生したトラブルとその解決方法について紹介します。
アジェンダ
Djangoのデータベースマイグレーション機能の紹介
DBスキーマ変更が競合するシンプルな例
実際の開発現場で発生したトラブル事例
DBスキーマ変更の先行リリース
新旧DBスキーマの並行運用
ネタ
Djangoのマイグレーション戦略
タグ
Django
DjangoCongress