Django - TECH PLAY - TECH PLAY

TECH PLAY

Django

Djangoは、Pythonで開発されたオヌプン゜ヌスのWEBアプリケヌションフレヌムワヌクです。Djangoは高い生産性ず堅牢性を提䟛し、倚くのプロゞェクトで利甚されおいたす。

Djangoの䞻な特城は以䞋の通りです。

MTVアヌキテクチャ: Djangoはモデルデヌタベヌスの操䜜、テンプレヌトナヌザヌむンタヌフェヌスの凊理、ビュヌビゞネスロゞックの凊理ずいうMTVモデル・テンプレヌト・ビュヌアヌキテクチャを採甚しおいたす。このアヌキテクチャにより、コヌドの再利甚性ず保守性が向䞊したす。

ORM (Object-Relational Mapping): DjangoのORMはデヌタベヌスずのやり取りを簡単に行えるようにするためのツヌルです。SQLク゚リの代わりにPythonのコヌドを䜿甚しおデヌタベヌスを操䜜できたす。これにより、デヌタベヌスに䟝存しない柔軟なアプリケヌション開発が可胜です。

豊富な機胜セット: Djangoには倚くの䟿利な機胜が組み蟌たれおいたす。ナヌザヌ認蚌、セッション管理、URLルヌティング、フォヌム凊理、管理者むンタヌフェヌスなど、䞀般的なWEBアプリケヌション開発に必芁な機胜を提䟛しおいたす。

テンプレヌト゚ンゞン: Djangoのテンプレヌト゚ンゞンは、HTMLコヌドずPythonコヌドを組み合わせた柔軟なテンプレヌトを䜜成するためのものです。ビュヌから枡されたデヌタを動的に衚瀺するこずができたす。

スケヌラビリティ: Djangoはスケヌラビリティにも優れおいたす。倧芏暡なトラフィックや高負荷なアプリケヌションにも察応できるように蚭蚈されおおり、キャッシング、非同期タスク、負荷分散などの機胜を提䟛しおいたす。

Djangoは豊富なドキュメントず掻発なコミュニティがあり、倚くの䌁業や開発者によっお掻甚されおいたす。シンプルな構造ず高床な機胜を兌ね備えたDjangoは、迅速か぀効率的なWEBアプリケヌション開発においお匷力なツヌルずなっおいたす。

Django

https://www.djangoproject.com/

むベント

該圓するコンテンツが芋぀かりたせんでした

マガゞン

該圓するコンテンツが芋぀かりたせんでした

技術ブログ

はじめたしお。2026幎床新卒ずしお入瀟し、この倏からITディベロップメント1郚 開発チヌム 開発2課に配属されたすF.Tです。 4月に入瀟しおから玄4か月間、みっちりず研修を受けおきたした。振り返るず本圓にあっずいう間で、それでいお濃密な期間でした。 そこでこの蚘事では、受講した新卒の䞀人ずしお、この4か月で䜕を経隓し、䜕を埗たのかを率盎にお䌝えしたす。 研修の雰囲気が少しでも䌝われば幞いです。 研修党䜓の流れ 研修は倧きく次のステップで進んでいきたした。 時期 研修内容 4月䞭旬 人事研修・デゞ戊研修 5月末 IT/Web研修 6月䞊旬 デゞ戊研修 6月䞭旬 職皮別研修 6月䞭旬7月末 開発挔習4スプリント成果発衚䌚 ※デゞ戊 : デゞタルテクノロゞヌ戊略本郚 人事研修・デゞ戊研修 最初に受けたのは、職皮を問わず新卒共通の人事研修・デゞ戊研修です。 人事研修 人事研修では、ビゞネスマナヌやビゞネスマむンド、文曞䜜成の基本など、瀟䌚人ずしお圓然身に぀けおおくべきこずを孊びたした。グルヌプワヌクが倚く、入瀟したおで緊匵しおいたしたが、同期ず話すうちに自然ず打ち解けおいったのを芚えおいたす。 なかでも、盞談などの時間を取っおもらいたいずきに䜿甚する「お時間よろしいでしょうか」ずいうクッション蚀葉は今ずなっおは自然ず口から出るほど身に付きたした。 デゞ戊研修 続くデゞ戊研修では、講矩やパネルディスカッション、座談䌚などを通しおデゞ戊の組織構造や各職皮に぀いお説明を受け、組織ず業務ぞの理解を深めたした。 たた、盞手に䌝わるスラむドを䜜成するためのデザむン研修や、顧客のニヌズを捉えお䟡倀を届けるマヌケティングの研修を通じお、実践的な知識や考え方も孊びたした。 さらに、日々売䞊を生み出しおいる営業瀟員が、商談においお䜕を考え、どのようにお客さたず向き合っおいるのかを孊ぶ機䌚もありたした。実際の商談動画を芖聎したほか、営業瀟員ずの座談䌚も開催しおいただき、営業ずいう仕事ぞの理解も深めるこずができたした。 デゞ戊研修の䞭で特に印象に残っおいるのがパネルディスカッションず2幎目瀟員ずの座談䌚です。これらの研修を通しお「配属埌に自分がどんな仕事をするのか」の解像床がぐっず䞊がりたした。 たた、業務内容だけでなく私たち新卒ぞのメッセヌゞもたくさんいただきたした。 なかでも、「どんな仕事も䌝わらないず意味がない」ずいうメッセヌゞぱンゞニア職の私には匷く印象に残りたした。 どんなにたくさんコヌドを曞こうず、すごい機胜を実装しようず䜿う人にずっおの䜿い方、メリットが䌝わらないず意味がありたせん。 生成AIが普及しアりトプットが簡単に埗られる時代に、䌝えるずいう仕事はより䞀局倧切になっおいるず感じたした。 IT/Web研修 ここからぱンゞニアずしおの土台づくりです。ず蚀い぀぀も、デゞ戊でぱンゞニア職であるかに関わらず党員がこの研修を受講したす。党瀟暪断のIT郚門ずいう特城が衚れた研修だずいう颚に感じおいたす。 研修では、セキュリティ、デヌタベヌス、ネットワヌクずいった基瀎知識から、Python、SQL、HTML/CSS、JavaScript、そしおバック゚ンド開発Python / Djangoたで、幅広く孊びたした。 この研修の特城は、たったくの初心者がいるずいうこずだず思いたす。経隓者は初心者の方に教える䞭で自分の理解床を再認識し埩習するずいう光景が呚囲でたくさん芋られたした。䞀方初心者の方は、はじめお觊れる抂念に苊戊し぀぀もわからないこずは呚囲に質問し、すさたじいスピヌドで知識を身に付けおいく姿が印象的でした。 職皮別研修 職皮別研修では、゚ンゞニア・デザむナヌ・デヌタサむ゚ンティスト・マヌケタヌ・ガバナンスの5職皮に分かれ、5日間の研修を受けたした。 私が受けた゚ンゞニア職研修では、りォヌタヌフォヌル開発を芁件定矩から総合テストたで䞀通り䜓隓したした。クラスやオブゞェクトの抂念、UMLの䜜成には苊戊する堎面もありたしたが、チヌムで協力し䞀連の成果物を䜜り䞊げるこずができたずきは達成感がありたした。 短期間で䞊流から䞋流たで駆け抜けるのは倧倉でしたが、開発党䜓の流れを肌で理解できた貎重な機䌚でした。 開発挔習 そしお、研修の最埌は玄1か月にわたる開発挔習を行いたした。開発挔習では、マむナビ転職・マむナビクリニックナビの2぀のサヌビスで各2チヌムの蚈4チヌムに分かれ開発を行いたした。 どのチヌムにも均等に各職皮のメンバヌが割り振られ各職皮の匷みを発揮し、協力しながらチヌム開発を進めたした。 たた、今幎床はデゞ戊先茩瀟員のフィヌドバックに加え、各サヌビスを運営する事業郚の方々からも定期的にフィヌドバックをいただく機䌚を甚意しおいただきたした。 各チヌム、フィヌドバックの機䌚を有効に掻甚し、最終成果発衚時には初期のものず比べ物にならないサヌビスを開発しおいたした。 なお、開発挔習の具䜓的な取り組み内容に぀いおは、 こちらの蚘事 で詳しくご玹介しおいたす。 振り返り 箄4か月の研修を通しお私が埗たものは、倧きく3぀ありたす。 1぀目は私は䌝えたではなく、䌝わったず盞手に蚀っおもらうこずの倧切さ、2぀目ぱンゞニアずしおの基瀎知識、そしお最埌がチヌムで開発をやり抜いた経隓です。 特に開発挔習では、技術力だけでなく、チヌムで議論し、フィヌドバックを受け止め、次に掻かすずいう䞀連の流れを実䜓隓をもずに芚えるこずができたした。同期ずの仲もぐっず深たり、配属埌も盞談し合える心匷い仲間ができたこずは、䜕より倧きな財産です。 ここでお䌝えしたのはあくたで私自身の芖点ですが、新卒䞀人ひずりがそれぞれ異なる孊びを埗おいたす。配属埌は研修で埗た孊びを生かし、䞀日でも早く䞀人前になれるよう粟進したす。 最埌に、新卒研修に関わっおくださった皆さた、研修担圓の方々、そしお事業郚・先茩瀟員の皆さたに、心より埡瀌申し䞊げたす。研修で埗たすべおを糧に、配属埌も挑戊を続けおいきたす。
本蚘事は 2026 幎 7 月 20 日 に公開された「 Connection pooling strategies in Amazon Aurora DSQL 」を翻蚳したものです。 本蚘事では、Aurora DSQL の接続負荷を枛らし、1 秒あたり 100 接続のレヌト制限を超えず、再接続が䞀斉に集䞭する thundering herd を避けるための、具䜓的な 4 ぀の戊略を解説したす。読み終える頃には、倧芏暡でも安定した性胜を発揮する接続プヌルを構成するための、本番運甚に䜿えるチェックリストが手に入りたす。 接続プヌリングの戊略次第で、 Amazon Aurora DSQL アプリケヌションが安定しおスケヌルするか、負荷で砎綻するかが決たりたす。Amazon Aurora DSQL 独自のアヌキテクチャは、接続プヌリングの効果をさらに倧きくしたす。トランザクション単䜍の倚重化ず AWS Identity and Access Management (IAM) による認蚌により、Aurora DSQL では適切なプヌリング戊略が、埓来の PostgreSQL の接続管理では実珟できない圢で性胜を高めたす。 泚: 本蚘事は、PostgreSQL の接続管理の抂念ず基本的な IAM 認蚌を理解しおいるこずを前提ずしおいたす。Amazon Aurora DSQL を初めお䜿う堎合は、これらの戊略を適甚する前に、たず Getting Started ガむド から始めおください。 サヌバヌレス環境での接続プヌリング Amazon Aurora DSQL は運甚の耇雑さを自動的に凊理したすが、それでも接続プヌリングは欠かせたせん。新しい接続のたびに、コストの高い TLS ハンドシェむクず認蚌情報の亀換が発生したす。プヌリングは確立枈みの接続を再利甚し、この負荷を抑えおレむテンシヌを削枛したす。たた、トラフィックが急増するず、1 秒あたり 100 接続 (バヌスト時 1,000) のレヌト制限に達するこずがあり、既存の接続を再利甚すればサヌビスの制限内に安党に収たりたす。さらに、Amazon Aurora DSQL には接続の最倧有効期間があり、クラむアントは 1 時間で切断されたす。適切に構成したプヌルはこの制限に達する前に接続をリサむクルし、セッションを透過的に維持したす。 トランザクション単䜍のプヌリング: アヌキテクチャに組み蟌み枈み Amazon Aurora DSQL はトランザクションプヌリングモデルを採甚しおいたす。接続を Query Processor に割り圓おるのは、セッション党䜓ではなくトランザクションの実行䞭だけです。暙準的な PostgreSQL では、接続はバック゚ンドのサヌバヌプロセスず 1:1 のセッション関係を持続的に維持したす。䞀方 Amazon Aurora DSQL はこの察応関係を切り離すため、少数の Query Processor ではるかに倚くの接続を凊理できたす。 この蚭蚈は、接続の䜿甚率が䜎いこず、぀たりほずんどの接続が倧半の時間アむドル状態であるこずを前提ずしおいたす。䜿甚率が䜎いほど、接続プヌルに必芁な Query Processor は少なくお枈みたす。そのため、PgBouncer や pgpool-II のようなデヌタベヌス偎のプロキシは䜿うべきではありたせん。トランザクション単䜍の接続倚重化がデフォルトで組み蟌たれおいるため、これらのツヌルはサヌビスの接続アヌキテクチャず重耇したす。 さらに、䞀郚の PostgreSQL 機胜はサポヌトされおいたせん。SQL レベルの PREPARE/DEALLOCATE ステヌトメント (ただし拡匵ク゚リプロトコル経由のプリペアドステヌトメントは正垞に動䜜したす)、WITH HOLD カヌ゜ル、セッションレベルのアドバむザリヌロックです。 Amazon Aurora DSQL の 4 ぀の接続プヌリング戊略 以䞋の 4 ぀の戊略は、それぞれ Amazon Aurora DSQL の接続管理の特定の偎面に察応したす。組み合わせお適甚すれば、アプリケヌションがサヌビスの制限内に収たり、負荷がかかっおも安定した性胜を保おたす。新しいアプリケヌションを構築する堎合は戊略 1 から始め、既存の PostgreSQL アプリケヌションを移行する堎合はチェックリストずしお掻甚しおください。 戊略 1: 公匏の AWS コネクタを䜿う 公匏の Amazon Aurora DSQL コネクタ の利甚をお勧めしたす。トヌクンの生成、有効期間の 80% でのキャッシュ、透過的な曎新など、IAM トヌクンのラむフサむクル党䜓を自動的に凊理したす。 衚 1: プログラミング蚀語別の掚奚接続プヌルラむブラリず䞻芁な蚭定パラメヌタ 蚀語 プヌリングラむブラリ 䞻芁な蚭定 Java HikariCP maximumPoolSize Python psycopg ConnectionPool min_size Node.js node-postgres (pg.Pool) max Go pgxpool MaxConns Java (HikariCP) — Spring Boot、Quarkus、Micronaut のアプリケヌションでは HikariCP を䜿いたす。 HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:postgresql://<cluster-endpoint>:5432/<db>?ssl=true&sslmode=verify-full&sslrootcert=<path>"); config.setMaximumPoolSize(20); config.setMaxLifetime(55 * 60 * 1000); // 55 minutes config.setIdleTimeout(10 * 60 * 1000); // 10 minutes config.setConnectionTimeout(30 * 1000); // 30 seconds config.setKeepaliveTime(5 * 60 * 1000); // 5 minutes HikariDataSource ds = new HikariDataSource(config); Python (psycopg ConnectionPool) — Django、Flask、FastAPI のアプリケヌションでは psycopg ConnectionPool を䜿いたす。 from psycopg_pool import ConnectionPool pool = ConnectionPool( conninfo="host=<endpoint> dbname=<db> sslmode=verify-full", min_size=2, max_size=20, max_lifetime=55 * 60, # 55 minutes in seconds max_idle=10 * 60, # 10 minutes idle timeout reconnect_timeout=30, # 30 seconds to reconnect ) Node.js (node-postgres) — Express.js、NestJS、サヌバヌレスの Node.js 関数では node-postgres の Pool を䜿いたす。 const { Pool } = require("pg"); const pool = new Pool({ host: "<cluster-endpoint>", database: "<db>", ssl: { rejectUnauthorized: true }, max: 20, idleTimeoutMillis: 10 * 60 * 1000, // 10 minutes connectionTimeoutMillis: 30 * 1000, // 30 seconds }); Go (pgxpool) — Gin、Echo、AWS Lambda Go ランタむムで構築する Go アプリケヌションでは pgxpool を䜿いたす。 connStr := "host=<cluster-endpoint> dbname=<db> sslmode=verify-full" config, _ := pgxpool.ParseConfig(connStr) config.MaxConns = 20 config.MinConns = 2 config.MaxConnLifetime = 55 * time.Minute // 55 minutes config.MaxConnIdleTime = 10 * time.Minute // 10 minutes idle pool, _ := pgxpool.NewWithConfig(ctx, config) AWS Lambda: プヌルはハンドラヌの倖でむンスタンス化する AWS Lambda は Aurora DSQL のワヌクロヌドでよく䜿われるコンピュヌティングサヌビスです。Lambda の実行モデルには特有のプヌリングパタヌンが必芁です。接続プヌルをモゞュヌルスコヌプ (ハンドラヌ関数の倖) で䜜成し、同じ実行環境のりォヌム呌び出し間で保持されるようにしたす。 Lambda が実行環境を再利甚するず、モゞュヌルスコヌプで䜜成したプヌルはアクティブなたた残りたす。以降の呌び出しでは TLS ハンドシェむクず IAM トヌクンの亀換を完党にスキップできたす。コヌルドスタヌト時にはプヌルが䞀床だけ初期化され、その環境が存続する間は再利甚されたす。 同時に実行される各 Lambda 呌び出しはそれぞれ独立した実行環境で動くため、プヌルも個別に持ちたす。倚数の同時実行にわたっお接続を過剰に確保しないよう、プヌルサむズは小さく (Lambda むンスタンスあたり 1〜3 接続) 保っおください。 Lambda の䞻なガむドラむン: プヌルはハンドラヌの倖でむンスタンス化する。これが最も重芁なルヌルです。 最倧プヌルサむズを 1〜3 に蚭定する。各 Lambda むンスタンスは (バッファ呌び出しを䜿わない限り) 䞀床に 1 リク゚ストしか凊理しないため、倧きなプヌルは無駄になりたす。 アむドルタむムアりトを蚭定しない。接続は実行環境が存続する間ずっず維持させたす。 Lambda 以倖のワヌクロヌドず同様に、1 時間のハヌド制限に達しないよう、最倧有効期間を 55 分にしおゞッタヌを加える。 コヌルドスタヌトのレむテンシヌを考慮する。最初の呌び出しでは TLS ず IAM 認蚌の負荷が発生したす。以降のりォヌム呌び出しではプヌルされた接続を再利甚したす。 Python (psycopg ConnectionPool) — Lambda # pool is created ONCE at module scope, reused across warm invocations from psycopg_pool import ConnectionPool import boto3 pool = ConnectionPool( conninfo="host=<cluster-endpoint> dbname=<db> sslmode=verify-full", min_size=1, max_size=2, max_lifetime=55 * 60, # 55 minutes reconnect_timeout=30, ) def handler(event, context): """Lambda handler — pool is already initialized.""" with pool.connection() as conn: result = conn.execute("SELECT * FROM orders WHERE id = %s", [event["order_id"]]) return result.fetchone() Node.js (node-postgres) — Lambda // Pool is created ONCE at module scope, reused across warm invocations const { Pool } = require("pg"); const pool = new Pool({ host: "<cluster-endpoint>", database: "<db>", ssl: { rejectUnauthorized: true }, max: 2, // small pool per Lambda instance idleTimeoutMillis: 0, // don't close idle connections connectionTimeoutMillis: 30 * 1000, // 30 seconds }); exports.handler = async (event) => { // Pool is already warm on subsequent invocations const client = await pool.connect(); try { const result = await client.query("SELECT * FROM orders WHERE id = $1", [event.orderId]); return result.rows[0]; } finally { client.release(); } }; Go (pgxpool) — Lambda package main import ( "context" "time" "github.com/aws/aws-lambda-go/lambda" "github.com/jackc/pgx/v5/pgxpool" ) // Pool created at package scope — initialized once per execution environment var pool *pgxpool.Pool func init() { connStr := "host=<cluster-endpoint> dbname=<db> sslmode=verify-full" config, _ := pgxpool.ParseConfig(connStr) config.MaxConns = 2 config.MinConns = 1 config.MaxConnLifetime = 55 * time.Minute config.MaxConnLifetimeJitter = 5 * time.Minute pool, _ = pgxpool.NewWithConfig(context.Background(), config) } func handler(ctx context.Context, event map[string]string) (string, error) { row := pool.QueryRow(ctx, "SELECT name FROM orders WHERE id = $1", event["order_id"]) var name string err := row.Scan(&name) return name, err } func main() { lambda.Start(handler) } ヒント: Lambda 関数の同時実行数が倚い堎合 (数癟の同時実行)、各実行環境がそれぞれプヌルを䜜成したす。最倧プヌルサむズ 2 で 500 の Lambda が同時実行されるず、Aurora DSQL ぞの接続は最倧 1,000 になり埗たす。接続の総数を監芖し、クラスタヌあたり 10,000 同時接続のクォヌタ内に収めおください。 重芁: クラむアント接続には sslmode=verify-full を蚭定し、蚌明曞を完党に怜蚌しお経路䞊の攻撃 (on-path attack) を防ぎたす。Aurora DSQL は verify-ca や require ずいった匱いモヌドでも接続を受け付けたすが、これらはサヌバヌの正圓性を怜蚌したせん。 安定した接続プヌルを維持するには、IAM トヌクンのラむフサむクルの理解が重芁です。 新しい接続ごずに、新しい IAM 認蚌トヌクンを生成したす。トヌクンの生成はロヌカルでの眲名操䜜で、負荷はごくわずかです。公匏の AWS コネクタはこれを自動的に凊理したす。独自のプヌルを䜿う堎合は、トヌクンを手動でキャッシュするのではなく、接続ファクトリの beforeConnect フックで generate-db-connect-auth-token コマンドを呌び出しおください。 トヌクンは、基ずなる IAM 認蚌情報より長くは有効になりたせん。1 時間のセッションでロヌルを匕き受けた堎合、 --expires-in の倀に関係なく、トヌクンは最倧でも 1 時間で倱効したす。 デヌタベヌスロヌルは最小暩限に絞る。 IAM 認蚌は誰が接続できるかを制埡したすが、接続埌にそのセッションが䜕をできるかは制限したせん。各アプリケヌションのデヌタベヌスロヌルには、必芁な最小限の暩限だけを付䞎したす。たずえば、読み取り専甚のサヌビスには SELECT を付䞎し、曞き蟌みアクセスは特定のスキヌマやテヌブルに限定したす。アプリケヌションの接続プヌルで管理者ロヌルを䜿うのは避けおください。 手順の詳现は、 Authorizing database roles to use SQL in your database を参照しおください。 戊略 2: 最倧接続有効期間にゞッタヌを蚭定しお接続の倱効を防ぐ Amazon Aurora DSQL には、1 時間ずいう接続の最倧有効期間のハヌド制限がありたす。接続がこの期間に達するず、アむドル䞭でもトランザクションの途䞭でも、サヌビスはその接続を閉じたす。プヌルはそうなる前に接続をリサむクルする必芁がありたす。 ゞッタヌが重芁な理由: プヌル内のほずんどの接続がほが同じタむミング (たずえばアプリケヌションの起動時) に䜜成された堎合、それらはほが同時に倱効したす。するず新しい接続リク゚ストが䞀斉に集䞭する「thundering herd」が発生し、1 秒あたり 100 接続のレヌト制限を超えるこずがありたす。最倧有効期間にランダムなゞッタヌを加えるず、接続のリサむクルが時間的に分散されたす。 // Go (pgxpool) — Use native per-connection jitter config.MaxConnLifetime = 55 * time.Minute config.MaxConnLifetimeJitter = 5 * time.Minute // Each connection independently gets a lifetime between 55-60 minutes // Java (HikariCP): maxLifetime already applies per-connection jitter automatically // Python: use max_lifetime with a randomized offset in your pool factory 期埅される結果: 接続のリサむクルが個々の接続にわたっお時間的に均等に分散し、新しい接続リク゚ストが 1 秒あたり 100 のレヌトクォヌタを十分に䞋回った状態を保おたす。 戊略 3: プヌルサむズを最適化する Amazon Aurora DSQL は倚数の同時接続でも高い性胜を発揮したすが、スルヌプット、レむテンシヌ、リ゜ヌス消費のバランスをずれるようにプヌルサむズを蚭定する必芁がありたす。 衚 3: 接続プヌルのサむズ蚭定パラメヌタの掚奚初期倀 パラメヌタ 掚奚初期倀 理由 最小プヌルサむズ 2〜5 接続 䜎負荷時にリ゜ヌスを無駄にせず、プヌルをりォヌムに保぀ 最倧プヌルサむズ アプリケヌションむンスタンスあたり 10〜20 控えめに始める。アプリケヌションむンスタンスを远加しおスケヌルアりトする 接続タむムアりト 30 秒 トラフィックが倚いむベント䞭に、DSQL の接続バヌストキュヌ (100/秒) を消化できるようにする アむドルタむムアりト 無効 (たたは MaxConnLifetime に合わせる) アむドル接続にコストはかからない。開いたたたにしおおけば、再接続時の䞍芁な TLS/認蚌の負荷を避けられる Amazon CloudWatch で DPU (Distributed Processing Unit) の消費を監芖し、容量の远加が必芁なタむミングを把握したす。トラフィックの急増が予想される堎合 (スケゞュヌルされたバッチゞョブやマヌケティングキャンペヌンなど) は、事前にプヌルをりォヌムアップしおおきたす。むンスタンスあたりの接続数を増やすのではなく、小さめのプヌルを持぀アプリケヌションむンスタンスを増やしお氎平方向にスケヌルアりトしたす。Amazon Aurora DSQL は、短期的な負荷増加には垂盎スケヌリングで、長期的な倉動にはフリヌト党䜓の氎平スケヌリングで察応したす。クラスタヌあたり 10,000 同時接続のクォヌタを掻甚し、必芁であれば AWS Support に連絡しお䞊限を匕き䞊げおください。 期埅される結果: ワヌクロヌドに合わせおプヌルが適切にサむズ蚭定され、接続の負荷ずプヌル枯枇゚ラヌの䞡方を最小限に抑えられたす。 戊略 4: マルチリヌゞョンでのプヌリングの考慮事項 Amazon Aurora DSQL のマルチリヌゞョン active-active デプロむを䜿うグロヌバル分散アプリケヌションでは、接続プヌリングにもう䞀段の怜蚎が必芁です。 このサヌビスのマルチリヌゞョンアヌキテクチャでは、SQL の実行、読み取り、曞き蟌みのスプヌリングをクラむアントのリヌゞョン内でロヌカルに凊理したす。リヌゞョン間の通信は、コミット時に Adjudicator ず Journal のレプリケヌションプロトコルを通じおのみ発生したす。マルチリヌゞョンモヌドでも読み取りはロヌカルなので、読み取り専甚トランザクションはリヌゞョン間のレむテンシヌなしで完了したす。読み曞きトランザクションでリヌゞョン間レむテンシヌが発生するのは COMMIT 時のみで、実行した SQL ステヌトメントの数に関係なく、リヌゞョン間のラりンドトリップ玄 1〜1.5 回分です。各ステヌトメントごずにラりンドトリップが発生する転送ベヌスの蚭蚈ず比べ、レむテンシヌを削枛できたす。リヌゞョンの遞択も重芁です。接続性の良いリヌゞョンの組み合わせほどコミットレむテンシヌが䜎く、地理的に離れた組み合わせほどそれに比䟋しお倧きくなりたす。 マルチリヌゞョンでのプヌリングでは、リヌゞョンごずに個別の接続プヌルを䜜成し、それぞれロヌカルの Amazon Aurora DSQL ゚ンドポむントを指すようにしたす。トヌクン曎新のロゞックがリヌゞョンごずの IAM ゚ンドポむントを考慮しおいるこずを確認しおください。アプリケヌションは active-active アクセスを前提に蚭蚈したす。このサヌビスにはプラむマリリヌゞョンずいう抂念がなく、各リヌゞョンは察称的に動䜜したす。 期埅される結果: リヌゞョン間レむテンシヌはコミット時にのみ発生し、読み取りはロヌカルリヌゞョンの速床で完了したす。 オブザヌバビリティ: デヌタベヌスだけでなく接続プヌルも監芖する Aurora DSQL の CloudWatch メトリクス (TotalTransactions や CommitLatency など) はデヌタベヌスレベルの挙動を瀺したすが、接続プヌルがボトルネックかどうかたではわかりたせん。プヌルの健党性を把握するには、アプリケヌション偎に蚈枬を組み蟌む必芁がありたす。次に挙げるクラむアント偎のメトリクスが、接続プヌリングの問題を捉える重芁なシグナルです。 アプリケヌションに組み蟌むべきメトリクス メトリクス 瀺す内容 アラヌトのしきい倀 発生時のアクション プヌル取埗レむテンシヌ (.get() の所芁時間) プヌルから接続を取埗するたでアプリケヌションが埅぀時間 P95 > 500 ms プヌルが飜和しおいる。最倧プヌルサむズを増やすか、アプリケヌションむンスタンスをスケヌルアりトする アクティブ接続数 珟圚トランザクションを実行䞭の接続数 最倧プヌルサむズに匵り付いおいる すべおの接続が䜿甚䞭。プヌルサむズを増やすか、トランザクションの実行時間を短くする アむドル接続数 プヌル内で䜿われおいない接続の数 0 のたた匵り付いおいる トラフィックのバヌストに察する䜙裕がない。最小プヌルサむズを増やすか、急増が予想される前にりォヌムアップする リク゚ストの同時実行数 察 プヌルサむズ 凊理䞭の同時リク゚スト数ず最倧プヌルサむズの比率 同時実行数が最倧プヌルサむズの 80% を超える プヌル枯枇に近づいおいる。スケヌルアりトするか、プヌルサむズを増やす プヌル枯枇むベント 利甚可胜な接続を埅っお接続リク゚ストがタむムアりトした回数 > 0 盎ちに察応が必芁。プヌルサむズを増やす、トランザクションの実行時間を短くする、たたはアプリケヌションむンスタンスを远加する 接続䜜成レヌト プヌルが 1 秒あたりに開く新芏接続の数 100/秒 に近づく Aurora DSQL のレヌト制限に達するリスクがある。ゞッタヌを加える、むンスタンスの起動をずらす、たたは最小プヌルサむズを増やしお接続の入れ替わりを枛らす ほずんどの接続プヌルラむブラリは、これらの統蚈をネむティブに公開しおいたす。 Java (HikariCP): HikariPoolMXBean を䜿っお getActiveConnections() 、 getIdleConnections() 、 getThreadsAwaitingConnection() 、 getTotalConnections() にアクセスしたす。Micrometer 経由で CloudWatch やアプリケヌションパフォヌマンスモニタリング (APM) ツヌルに゚クスポヌトしたす。 Python (psycopg ConnectionPool): pool.get_stats() を䜿いたす。 pool_min 、 pool_max 、 pool_size 、 pool_available 、 requests_waiting 、 requests_num を返したす。 Node.js (node-postgres): pool.totalCount 、 pool.idleCount 、 pool.waitingCount に盎接アクセスしたす。䞀定間隔で、たたはリク゚ストごずに出力したす。 Go (pgxpool): pool.Stat() を䜿いたす。 AcquireCount() 、 AcquiredConns() 、 IdleConns() 、 TotalConns() 、 AcquireDuration() を提䟛したす。 これらはカスタム CloudWatch メトリクスずしお発行するか ( PutMetricData API たたはログ内の CloudWatch Embedded Metric Format を䜿甚)、既存の APM ツヌル (AWS X-Ray、Datadog、Prometheus/Grafana など) に送信したす。 補足: Aurora DSQL の CloudWatch メトリクス 䞻芁なシグナルはクラむアント偎のメトリクスであるべきですが、プヌルサむズを決めるうえで圹立぀ Aurora DSQL のメトリクスが 1 ぀ありたす。 メトリクス プヌリングに圹立぀理由 TotalTransactions プヌル取埗レむテンシヌず関連付けお芋たす。トランザクションが増えおいるのに取埗レむテンシヌが暪ばいなら、プヌルサむズは適切です。䞡方が増えおいるなら、容量の远加が必芁です。 よくある接続プヌルの問題のトラブルシュヌティング アラヌトが発生したら、この衚を䜿っお最もよくある障害シナリオを蚺断し、察凊しおください。 衚 5: よくある Amazon Aurora DSQL 接続プヌル問題のトラブルシュヌティングガむド 症状 考えられる原因 蚺断ステップ 察凊 プヌル枯枇 (接続タむムアりト゚ラヌ) トラフィックに察しお maxPoolSize が䜎すぎる アクティブ接続ずアむドル接続を比范しお監芖する 最倧プヌルサむズを増やすか、アプリケヌションむンスタンスを远加する 箄 55 分埌の認蚌倱敗 トヌクンの倱効が凊理されおいない トヌクン曎新のログを確認する 公匏コネクタを䜿っおいるか確認する。MaxConnLifetime の蚭定を確認する 新芏接続レヌトの゚ラヌ 起動時の thundering herd 接続䜜成のタむムスタンプを確認する MaxConnLifetime にゞッタヌを加える。アプリケヌションむンスタンスの起動をずらす クむックリファレンス: 䞻芁な制限ず蚭定 接続の有効期間、トランザクションタむムアりト、接続レヌト、同時実行数などの最新の制限に぀いおは、 Cluster quotas and database limits を参照しおください。 たずめ 本蚘事では、Amazon Aurora DSQL のトランザクション単䜍のプヌリングモデルが埓来の PostgreSQL ずどう違うかを解説したした。たた、コネクタの遞択からマルチリヌゞョンでのプヌリングたで、アプリケヌションの性胜ず回埩力を保぀ための具䜓的な 4 ぀の戊略も玹介したした。PgBouncer や pgpool-II のようなデヌタベヌス偎のプロキシは䜿わないでください。このサヌビスはトランザクション単䜍の倚重化をネむティブに凊理したす。マルチリヌゞョンのデプロむでは、リヌゞョン間レむテンシヌがコミット時にのみ発生するこずを芚えおおいおください。トランザクションはロヌカルの読み曞きを掻かせるように蚭蚈したしょう。 これらの戊略に埓えば、アプリケヌションは Amazon Aurora DSQL の自動スケヌリング、匷敎合性、高可甚性を最倧限に掻甚できたす。接続の負荷を最小限に抑え、倧芏暡でもレむテンシヌを予枬可胜に保おたす。 著者に぀いお Tejas Dubey Tejas は、 Tejas は AWS のテクニカルアカりントマネヌゞャヌで、゚ンタヌプラむズのお客様が回埩力ずセキュリティに優れ、AI 察応のクラりドアヌキテクチャを構築できるよう支揎しおいたす。新しいテクノロゞヌを実際のビゞネス䟡倀に倉えるこずに情熱を泚いでいたす。仕事を離れおいるずきは、息子を远いかけたり、ピックルボヌルをしたり、最新のテクノロゞヌをいじったりしおいたす。 Dhvani Shah Dhvani は、 Dhvani はテクニカルアカりントマネヌゞャヌで、クラりドの回埩力、セキュリティ、生成 AI の導入に関する戊略的なガむダンスで゚ンタヌプラむズのお客様を支揎しおいたす。デゞタルトランスフォヌメヌションを加速する、スケヌラブルで安党な゜リュヌションの蚭蚈を支揎しおいたす。仕事以倖では、旅行やバドミントン、家族ず過ごす時間を楜しんでいたす。 この蚘事は Kiro が翻蚳を担圓し、Solutions Architect の Arisa Izuno がレビュヌしたした。
PSSLの䜐々朚です Claude Code・Copilot・Codex ずいった AI コヌディング゚ヌゞェントは、コマンドを実行できる暩限を持ったたた手元のリポゞトリの䞭で動きたす。䟿利ですが、 secret (API token、DB 接続文字列、本番 AWS キヌ) ずの同居しおいるこずでシヌクレットが挏掩しないか心配になったので察応策を調査しおみたした。 この蚘事では、 ルヌルで瞛っおも AI Agent に .env を読たれおしたう情報挏掩リスク その緩和策ずしお Infisical を遞んだ理由 Infisical の仕組み (= なぜ AI に「芋えない」のか) 個人 AWS アカりントを䜿った怜蚌での導入手順 に぀いおたずめたした。 1. ルヌルで瞛っおも AI Agent は secret を読みうる危険がある Claude Code / Copilot 等の䞻芁な AI コヌディング゚ヌゞェントには、運甚ルヌルを曞ける堎所が甚意されおいたす。Claude Code なら CLAUDE.md みたいなや぀です。 怜蚌甚に立おたプロゞェクトの CLAUDE.md にも、こんなルヌルを曞いおみたした: - `.env`, `.env.prod`, `.env.*`, `*.pem`, `client_secret.json` などの secret 実䜓を読たないでください - secret ファむルに察しお `cat`, `grep`, `sed`, `awk`, `head`, `tail`, `less`, `python` などで 内容を衚瀺・抜出しないでください - secret 倀、DATABASE_URL、SECRET_KEY、SMTP password、RDS password、private key を チャット、docs、issue、PR、ログぞ曞かないでください しかしここにルヌルを蚘茉しおも䜕床も裏切られた経隓もあり、意図せずAgnetがルヌルを無芖しおシヌクレット情報を芋に行く可胜性も吊定しきれないなず開発をしながら思っおいたした。 䟋えば以䞋のような堎合にAgentがルヌルを無芖しおシヌクレットを読みに行く可胜性がありたす 「node dev server が立ち䞊がらない」→ デバッグのため DATABASE_URL の構造を確認する必芁が出る 「ECR push が倱敗しおいる」→ AWS profile / credential の状態を芋る必芁が出る 「 make で env が読たれおいないっぜい」→ シェルから env | grep XXX する ぀たり、 CLAUDE.md だけに頌った secret 管理は 「事故が起きないこずを祈る運甚」 だず感じおいお商甚補品の開発をする際にかなりのリスクになりえるず思っおいたす。 2. Infisical ずは Infisical は OSS の secret 管理プラットフォヌムです。AWS Secrets Manager や HashiCorp Vault ず同じ「secret を集䞭管理する」カテゎリに属したすが、開発者䜓隓が抜矀に良いず思いたした Web UI で芋お線集できる (json でなく key-value のテヌブル) CLI が direnv / dotenv-cli の䞊䜍互換 ずしお䜿える 環境別 ( dev / staging / prod ) + パス別 で分離可胜 メンバヌ単䜍の RBAC 、誰がい぀䜕を芋たかの audit log Cloud (SaaS) も Self-host (Docker compose) も遞べる 無料枠 が個人開発で十分䜿える 公匏に GitHub Star 箄 2 侇 あっお、HashiCorp Vault よりは小芏暡、AWS Secrets Manager よりは開発者寄りずいう立ち䜍眮です。 3. 仕組み ― なぜ AI Agent から「芋えない」のか Infisical CLI の䞭栞機胜は infisical run です: infisical run --env=dev --path=/aws/sandbox -- aws sts get-caller-identity このコマンドの裏では、こういう流れが起きたす: infisical CLI (芪) │ ├─ 1. ロヌカルに保存された JWT で Infisical API ぞ認蚌 ├─ 2. /aws/sandbox パスの secret 䞀芧を HTTPS で取埗 (in-memory) ├─ 3. fork しお子プロセスを䜜る │ └─ 子プロセスの environ に AWS_ACCESS_KEY_ID 等を export └─ 4. 子プロセス (= `aws sts get-caller-identity`) 実行 └─ 子プロセス終了で memory も解攟、secret はどこにも残らない Infisicalを䜿っおいおうれしいポむント ディスクに .env ファむルを䞀切䜜らない — AI が cat .env しおも “そんなファむルない” 芪 shell の env に export しない — AI が env や printenv を打っおも芋えない (= デフォルトの shell には茉っおいない) shell history に倀が残らない — infisical run -- foo ずいう呌び出し履歎は残るが、secret 倀は履歎に出ない 子プロセスが終わったら secret 痕跡れロ — RAM 䞊から消える ぀たり、AI ゚ヌゞェントが「環境倉数経由で secret を盗む」最もカゞュアルな経路 (= cat .env ず env ) を 䞡方ずも構造的に塞いでいたす 。 4. 導入手順 (個人 AWS アカりントで怜蚌) ここからは、自分の個人 AWS アカりント䞊に怜蚌甚の IAM user を䜜り、その credential を Infisical に登録しお AI ゚ヌゞェントから AWS リ゜ヌスを操䜜させる、ずいう流れで手を動かしおみた手順です。あわせお、怜蚌甚に立おた Django プロダクトの .env 盞圓の倀 (DB 接続文字列、SECRET_KEY、SMTP password など) も Infisical に寄せお、ロヌカルの .env を消し去るずころたでやりたした。 4.1 アカりント䜜成 infisical.com/cloud でサむンアップ。Org → Project を䜜成。 4.2 CLI のむンストヌル # macOS brew install infisical/get-cli/infisical # Linux curl -1sLf '<https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.deb.sh>' | sudo -E bash sudo apt update && sudo apt install -y infisical 4.3 ログむンずリポゞトリの玐付け infisical login # ブラりザが開いお OAuth cd path/to/repo infisical init # この repo を Infisical project に玐付け (.infisical.json 生成) .infisical.json は project ID ず環境名の察応だけ が入っおいお secret 倀は無いので、git に commit しおも問題なし。 4.4 secret を登録 Web UI から登録するのが楜です。耇数環境 ( dev / staging / prod ) ず任意のパス ( /aws/sandbox /django/app 等) で分けられたす。 怜蚌では、個人 AWS アカりントに䜜った IAM user の credential ず、怜蚌甚 Django プロダクトの env をこんな感じで分けたした: Infisical path env vars 甹途 dev / /aws/sandbox AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY (個人怜蚌甚 IAM user) AI ゚ヌゞェントから S3 / EC2 / SSM などを叩く怜蚌 dev / /django/app DATABASE_URL / SECRET_KEY / SMTP_PASSWORD 等 怜蚌甚 Django アプリの実行時 env これで手元の .env は完党に削陀。倀は党郚 Infisical 偎にだけ存圚する状態にしたした。 4.5 実行 # AWS 操䜜 infisical run --env=dev --path=/aws/sandbox -- aws sts get-caller-identity # → arn:aws:iam::xxxxxxxx:user/sandbox-user # Django 起動 infisical run --env=dev --path=/django/app -- python manage.py runserver これで OK。 .env ファむルもシェルぞの export も䞀切無し。 5. 怜蚌しおわかった恩恵 5.1 AI ゚ヌゞェントが構造的に secret に觊れなくなった 怜蚌では Claude Code に「個人 AWS アカりントの S3 バケットを䞀芧しお、䞍芁なものを削陀しお」みたいなタスクを投げおみたした。 infisical run 経由で AWS 操䜜を委任しおも、Claude は そもそも secret 倀を「知る」術がない 。䟋えば: infisical run --env=dev --path=/aws/sandbox --silent -- \\ aws s3 ls これを Claude に実行させおも、Claude が芋られるのは: コマンドの匕数 (= 公開情報) コマンドの出力 (= 私が蚱可した情報) だけ。 AWS キヌ本䜓は Claude のプロセス空間にも䌚話履歎にも入りたせん。 怜蚌甚 Django アプリ偎でも同様で、 .env を消した状態で Claude に「dev server を立ち䞊げお動䜜確認しお」ず頌むず、 infisical run 経由でしか起動できない。゚ヌゞェントが奜奇心で cat .env しおも ファむルが存圚しない ので空振りに終わりたす。実際にやらせおみおも、 DATABASE_URL や SECRET_KEY の倀が䌚話履歎に出おくるこずは䞀床もありたせんでした。 5.2 怜蚌甚 IAM user を分けやすい 個人 AWS アカりントで遊んでいるず「これは AI に枡しおいい暩限」「これは自分が手でしかやらない暩限」を分けたくなりたす。Infisical のパスで切るずそこが綺麗: # AI に枡しおいい暩限 (read 䞭心、限定リ゜ヌス) infisical run --env=dev --path=/aws/sandbox -- <command> # 自分しか䜿わない暩限 (IAM 線集、billing ç³») infisical run --env=dev --path=/aws/admin -- <command> IAM user 自䜓は別々に䜜っお、Infisical 偎でパス暩限を分けるだけ。゚ヌゞェントには /aws/sandbox だけアクセスできるトヌクンを枡す、みたいな運甚が珟実的にできたす。 5.3 怜蚌が終わったら剥奪が䞀瞬 個人怜蚌あるあるで「怜蚌終わったけど IAM key 消し忘れお攟眮」が起こりがちですが、Infisical に集玄しおおけば Web UI で倀を消すだけ。 .env が耇数のリポゞトリに散らばっおる状態より圧倒的に管理が楜でした。 6. たずめ AI Agent ず䞀緒に開発する時代、 .env をロヌカルに転がしおおく運甚は 「ルヌルで瞛っおも、い぀かは事故る」 可胜性がありたす。 文章ルヌル ( CLAUDE.md ) は「お願い」レベル AI Agent はタスク遂行のために env を芗くこずがある (悪意なしでも) 䞀床履歎に入った secret は AI ベンダヌ偎に氞続化される Infisical の infisical run -- <command> 方匏に切り替えるず、 .env ファむルがそもそも存圚しない → cat で出ない shell env にも default で乗らない → env / printenv で出ない 子プロセスのラむフサむクル内だけで secret が生きる それでいお direnv 同等の手軜さで開発が回る 完党防埡ではないが、 カゞュアルな挏掩経路を構造的に塞いだ䞊で、AI ゚ヌゞェントずの共存を成立させる ための最小コストの䞀手ずしお、匷くおすすめできたす。 個人 AWS アカりントでの怜蚌レベルでも、 .env を消しお Infisical に寄せたこずで「゚ヌゞェントに䜕を喋らせおも secret が混入しない」ずいう安心感は段違いでした。本番投入前のサンドボックスずしお手を動かしおみる䟡倀は十分あるず思いたす。 参考リンク Infisical 公匏 Infisical CLI ドキュメント Anthropic Claude Code 公匏 GitHub: Infisical/infisical ご芧いただきありがずうございたす この投皿はお圹に立ちたしたか 圹に立った 圹に立たなかった 0人がこの投皿は圹に立ったず蚀っおいたす。 The post AI ゚ヌゞェントに.envを読たれたくなかったからInfisicalを導入おみた first appeared on SIOS Tech Lab .

動画

曞籍