振り返りシリーズ

セッションノート

Lambda の主な差別化要因:スピード

  • 最大の目標:顧客と開発者にスピードを提供する
  • スピードには、コード生成とリリースサイクル全体が含まれる
  • リリースの高速化により、より魅力的なアプリケーションとユーザーフィードバックにつながる
  • アプリケーションはデフォルトで Well-Architected となり、スケーラビリティ、可用性、信頼性に対応
  • 主な利点:管理すべきインフラストラクチャがなく、運用負荷を減らしてスピードを向上

3 つのグループに分類された新機能

1 新しいプリミティブ

  1. Lambda の managed instances を導入

2 Managed Instances

  1. メンタルモデル:Lambda はニードルポイント型ワークロード(トラフィックの急増)で真価を発揮
  2. 定常トラフィックでは、開発者はパフォーマンスとコストの最適化を目指す
  3. パフォーマンス最適化のため、コンピューティングインスタンス、ネットワーク、メモリを選択可能
  4. 完全な監視運用と開発者体験を維持
  5. イベントソース統合、パッチ適用、ルーティング、スケーリングは Lambda が処理
  6. リクエストをより効率的に処理するため、マルチコンカレンシーを導入
  7. コスト

最適化のため、EC2 の料金面での優遇措置(Savings Plans、Reserved Instances)を組み込む

3 Capacity Provider

  1. 追加要件:Capacity Provider を作成

10.コンピューティングインスタンス、メモリインスタンス、スケーリングプロファイルの希望を指定

11.必要に応じて Lambda に選択を任せ、料金パフォーマンスを継続的に改善

ユースケースと機能

  • 定常状態のアプリケーション:Lambda がシームレスに処理
  • ニードルポイント型のバースト/トラフィック管理:機能を Lambda に任せる
  • 定常状態/人気の高いアプリケーション:最適化のため managed instances へ移行
  • パフォーマンスが重要なアプリケーション:専用インスタンスを利用可能
  • 多様なアプリケーション:メディアデータ処理、ウェブアプリケーション、イベント駆動型アプリケーション
  • 規制要件:managed instances ではコンピューティングゾーンの希望を指定可能

テナント分離機能

  • ユースケース:リクエスト間の分離が必要なシナリオ
  • 利点:一意のテナント ID または JWT トークンを渡し、クリーンで分離された実行環境を実現
  • 改善点:CI/CD サイクルを改善し、カスタムツールを不要にする

デフォルトで Well-Architected

  • 価値提案:パフォーマンスとセキュリティの修正を含む最新のプログラミング言語
  • 最近の追加:Python 3.14、Java 2.5、Node.js 24
  • 利点:開発者の生産性を高め、安全かつ迅速なソフトウェアリリースを実現
  • メンタルモデル:コミュニティでのリリースから 90 日以内に新しいランタイムを利用可能にする

その他の機能と利点

ランタイムのアップグレード

  • 自動パッチ:Log4j のような脆弱性に対応
  • 課題:多数の関数のランタイムをアップグレードするには多大な労力が必要
  • 解決策:AWS Transform Custom(生成 AI ベースのアップグレード)
  • 利点:技術的負債を最大 85% 削減し、開発サイクルへシームレスに統合
  • SnapStart:
  • 問題:関数の初期化時に発生するコールドスタート
  • 解決策:実行環境のスナップショットを作成し、以降の呼び出しを高速化
  • 利点:コード変更やカスタムツールを必要とせず、コールドスタート時間を短縮
  • Fault Injection Service (FIS) との統合:
  • 目的:ストレス条件下でアプリケーションのレジリエンシーをテスト
  • 機能:レイテンシーの増加やダウンストリームサービスの利用不能などの条件を指定
  • 利点:停止の計画と防止に役立ち、本番シナリオへの信頼性を向上
  • オブザーバビリティの改善:
  • 課題:イベントソースのポーリングメカニズムを可視化できない
  • 解決策:カウント、ログ、スロットリングに関する追加の CloudWatch メトリクスを有効化
  • 利点:カスタムツールを必要とせず、問題を即座に検出して解決時間を短縮

AWS Transform custom

一般的なアップグレードシナリオ向けに事前構築され、AWS による審査を受けた、AWS マネージドですぐに使える変換。

追加のセットアップなしですぐに使用できる。

現在利用可能な変換

  • Java 8 から 17 への移行(Gradle と Maven の両方)
  • Node.js 12 から 22 へのアップグレード(Lambda 環境を含む)
  • Python ランタイムの 3.11/3.12/3.13 への更新(標準環境と Lambda)
  • AWS SDK の移行(v1 から v2)
  • 主な特徴:
  • AWS による検証済み - これらの変換は、高品質であることを AWS が審査済み
  • すぐに使用可能 - 追加のセットアップは不要
  • 継続的に拡充 - 変換が継続的に追加されている
  • カスタマイズ可能 - 事前構築済みの変換に、組織固有のニーズに合わせたルールを追加可能(例:社内ライブラリやコーディング標準を扱うルールの追加)
  • 実験的サポート - 一部の変換は、追加テスト中のため実験的と表示される場合がある

その他の機能と利点

追加の CloudWatch メトリクス

  • 問題:イベントソース(Kafka、SQS)のポーリングメカニズムを可視化できない
  • 解決策:ポーラーカウント、ラグ、スロットリングに関する追加メトリクスを有効化
  • 利点:カスタムツールを必要とせず、問題を即座に検出して解決時間を短縮
  • Avro 形式の Schema Registry サポート:
  • 問題:開発者が Avro のシリアライズ/デシリアライズ用ボイラープレートコードを手動で追加する必要があった
  • 解決策:Avro イベントを自動的にシリアライズおよびデシリアライズする機能を追加
  • 利点:コード量とエラーを削減し、スキーマ進化をサポート。カスタムツールは不要
  • SQS の Provision Mode:
  • 問題:ポーリングの高速なスケーリングと同時実行数の制御が必要だった
  • 解決策:Provision Mode ではキャパシティを事前ウォーミングし、急増へ即座に対応可能
  • 利点:急増時の遅延をなくし、SLA の達成とコスト最適化に貢献。カスタムツールは不要
  • 開発者の加速:
  • 目標:開発者がソフトウェアをより迅速にリリースできるよう支援
  • 開発者の希望:コンソールでの初期テスト後は、ローカルマシン/IDE で開発
  • 注力点:開発プロセスを効率化し、市場投入までの時間を短縮

開発サイクルを加速する機能

コンソールから IDE へのシームレスな移行

  • 機能:最小構成のアプリケーションをコンソール上でワンクリックで構築
  • 利点:依存関係をパッケージ化し、手作業なしでローカル IDE に表示してすぐにコーディング可能
  • LocalStack を使用したローカルテスト:
  • パートナー:LocalStack は AWS サービス(ストレージ、データベース、ネットワーク)をエミュレート
  • 利点:ローカルマシン上で完全にオフラインで開発およびテストでき、カスタムツールなしでビジネスロジックの反復を高速化
  • リモートデバッグ:
  • 機能:2 回のクリックでチェックポイント/ブレークポイントを有効化
  • 利点:コードが本番環境で実行されている間に変数とソースコードをローカルで分析し、IAM ポリシー、ロール、データベース接続、VPC、ネットワーク設定をカスタムツールなしでテスト
  • ベストプラクティスのための MCP Server:
  • 機能:ベストプラクティス(入力検証、エラー処理、ステータスコード)を組み込み
  • 利点:高品質で一貫したコードを生成し、コードレビューのサイクルを削減して開発速度を向上
  • サポート:ウェブアプリケーションとイベント駆動型アプリケーション(Kafka トリガー、イベント駆動型アーキテクチャ)