🏰

YouTube作業BGM動画作成サービスの舞台裏〜第2章:AWS上に建てる夢の城!〜

に公開

サーバーレスの魔法城へようこそ!

こんにちは、クラウド建築士です!笑というのは冗談で、今日は今鋭意作成中のYoutube作業BGM動画作成サービスに関するアーキテクチャでも共有しようかなと思います!

第して「YouTube作業BGM動画作成サービス」という素敵なデジタル城の設計図をご紹介します。レンガ一つ使わずに建てる魔法の城、それがサーバーレスアーキテクチャなんです!

この城は以下の魔法の素材で作られています:

  • フロントエンド: Next.js(Vercelという雲の上の土地に建つ玄関)
  • バックエンド: AWS Lambda + API Gateway(お願いを聞いてくれる魔法の精霊たち)
  • ストレージ: Amazon S3(無限に広がる倉庫)
  • 動画処理エンジン: ffmpeg(動画を作る魔法の鍋)
  • ステータス管理: DynamoDB(どこまで料理ができたか記録する魔法の書)

なぜこんな城を建てたのか?

1. お財布に優しい「従量課金制」の城

従来のお城は、人が来ようが来まいが24時間警備員を雇い、電気を付けっぱなしにする必要がありました。でもこの城は違います!

背景と課題:

  • 動画生成という重労働をするけど、いつお客さんが来るかわからない
  • 毎月固定の城の維持費を払いたくない
  • 少ない人数でもサクッと建てられる城が欲しい

解決策:
「Lambda」という名の精霊たちは、呼ばれたときだけ働きます。働いた分だけお給料を払えばいいので、特に開業したての頃は大幅な節約に!また、城の管理人もほとんど必要ないので、少人数でも運営できちゃいます。

2. 華やかな玄関(Next.js + Vercel)

背景と課題:

  • お客さんが「わぁ、素敵!」と思う玄関が必要
  • Googleさんにも「ここにいいお城があるよ」と教えてほしい(SEO)
  • ドアを開けたらすぐに中が見えてほしい(高速表示)

解決策:
Next.jsという魔法の建材を使えば、サーバーサイドレンダリングという技で「完成した部屋」をお客さんにすぐにお見せできます。これは「レシピだけ渡してお客さんに料理を作らせる」のではなく、「できたての料理をテーブルに出す」ようなもの。Vercelという雲の上の土地に建てると、世界中どこからでもすぐに訪れることができます!

サーバーサイドレンダリングを行うには、Node.jsの実行環境やNext.jsの特殊な関数など、魔法使いの道具箱が必要ですが、Vercelはそれらをすべて用意してくれています。

3. 料理上手な精霊(ffmpeg on Lambda Layer)

背景と課題:

  • 音楽と画像から美しい動画を作る必要がある
  • 料理に時間がかかるけど、待っている人が増えても対応したい
  • 信頼できる料理人を雇いたい

解決策:
ffmpegという名の料理の達人を、Lambda Layerという形で雇います。この達人、一度雇うとコピーがたくさん作れて、同時にたくさんのお客さんの料理を作れるんです!オープンソースの有名シェフなので、料理の腕も確かです。

4. 無限の倉庫(Amazon S3)

背景と課題:

  • お客さんが持ってきた材料を安全に保管したい
  • 作った料理をいつでも取り出せるようにしたい
  • 古くなった材料や料理を自動的に捨てたい

解決策:
S3という名の倉庫は、なんと壊れる心配がほとんどなく、どんなに物を入れても大丈夫。さらに「プリサインドURL」という魔法の鍵を使えば、お客さんが直接倉庫に行けるので、わざわざ玄関(サーバー)を通る必要がありません。

このプリサインドURLは、Lambda精霊が「30分だけ有効な特別な合言葉つきの住所」として発行し、必要な人だけが必要なものにアクセスできるようにします。音楽ファイル(MP3)などの大きな荷物も、API Gatewayという狭い門を通さずに、このURLを使って直接S3倉庫に配達されるんです!しかも、7日以上経った材料と30日以上経った料理は自動的に消える便利な仕組み付き!

5. 料理の進み具合を記録する魔法の書(DynamoDB)

背景と課題:

  • 長い料理工程の進み具合を記録したい
  • リアルタイムでお客さんに「あと何分で完成します」と伝えたい
  • どんなに注文が殺到しても対応できる記録システムが必要

解決策:
DynamoDBという魔法の書は、どんなに多くの情報も素早く記録・取り出しできます。これは図書館の本棚(PostgreSQLなどのリレーショナルデータベース)とは違い、高速配送倉庫のようなもの。商品がバーコードで管理され、欲しいものをすぐに取り出せるのです!

料理の各工程を記録し、お客さんはスマホで「あと何%完成」かをリアルタイムで確認できます。使った分だけ支払う「オンデマンド」モードもあって、お財布に優しい!

料理が出来上がるまでの冒険

  1. お客さんが城にやってくる
  2. Lambda精霊が「プリサインドURL」という特別な道を作る
  3. お客さんは音楽と画像の材料をその道を使って直接倉庫へ届ける
  4. 注文書(動画設定)を書く
  5. API Gatewayを通じて精霊たちに命令が伝わる
  6. 精霊たちが材料を取り出して料理開始
  7. 魔法の書DynamoDBに進捗を記録しながら料理を進める
  8. 完成した動画料理は倉庫に保存
  9. お客さんに「できましたよ〜」と通知
  10. お客さんは「ダウンロードURL」という道を使って直接料理を受け取る

この城の素晴らしいところ

1. お金がかからない!

この城は「使った分だけ払う」方式なので、特に最初のうちはとってもお得:

  • Lambda精霊:働いた時間だけお給料発生
  • S3倉庫:使った棚の分だけ家賃発生
  • DynamoDB魔法の書:書いたページ数だけ料金発生
  • API Gateway門番:お客さんが来た回数だけ料金発生

2. どんなに混雑しても大丈夫!

突然たくさんのお客さんが来ても自動で対応:

  • Lambda精霊はコピーが何千体も作れる
  • S3倉庫は実質無限に広がる
  • DynamoDBは記録が増えても読み書きスピードが落ちない

3. どんどん進化できる!

この城は将来こんな風に進化できます:

  • 入場パスポート(ユーザー認証)の導入
  • 複数の画像でスライドショーを作る機能
  • テキストや特殊効果の追加
  • 有料貴賓室(プレミアムプラン)の設置
  • AIが自動で材料を用意してくれるサービス

将来の拡張:貴賓室と一般席を作るには?

将来、有料ユーザーと無料ユーザーを区別する「貴賓室」を作りたくなったとき、今の城の設計はどうなるでしょうか?

小さな城のままなら

DynamoDBの魔法の書に「ゴールド会員」「シルバー会員」といった情報を追加するだけでOK。シンプルな会員システムなら、今のままでも十分対応できます。魔法の書は柔軟に項目を追加できるのが特徴です。

大きな城に成長したら

お城が大きくなり、複雑な会員制度(家族割、法人プラン、ポイント制度など)が必要になったら、新しい図書館(PostgreSQLなどのリレーショナルデータベース)を建てるといいでしょう。

または、この中間として「Amazon Cognito」という専門の入場管理システムを導入し、「Amazon Aurora Serverless」という賢い図書館を徐々に取り入れていくのもアリです。これなら、サーバーレスの魔法を保ちながら、より複雑な仕組みも実現できます!

まとめ

この「YouTube作業BGM動画作成サービス」という魔法の城は、少ないお金で建てられて、使った分だけお金がかかり、いつでも大きくできる夢のような城です。サーバーレスという魔法で、管理の手間も最小限なので、城主(開発者)は城のデザインや新しいアトラクションの開発に集中できます。

将来、城が大きくなっても、段階的に拡張できる柔軟な設計になっているのも素晴らしいところ。まるでおとぎ話に出てくるような「思いのままに形を変える城」、それがAWSのサーバーレスアーキテクチャなのです!🏰✨

Discussion