【レポート】【初級】AWSでのJavaアプリケーション開発 #AWSSummit

2019.06.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

本記事は2019年6月12日(水)から14日(金)に幕張メッセにて開催されている AWS Summit Tokyo 2019のセッションレポートです。

私が参加したセッションの中から、Day3 「【初級】AWSでのJavaアプリケーション開発」について簡単にご報告します。

※今回のAWS Summitでは写真撮影がNGとのことでしたので、文字だけのレポートとなります。メモが不完全な箇所は抜けもありますが、ご容赦下さい。

スピーカー

アマゾン ウェブ サービス ジャパン株式会社 技術統括本部

ソリューションアーキテクト 西谷 圭介  (敬称略)

セッションレポート

概要

AWSでJavaアプリケーションを開発・実行するにあたって活用できるプラットフォーム、ツールセットやエコシステム、SDKなどについて包括的にご紹介します。

メインテーマ

  • AWSを使ったJavaアプリケーションを開発する
  • AWSで動くJavaアプリケーションを開発・運用する

AWSを使ったJavaアプリケーションを開発する

  • フルマネージドサービスを活用したアプリ開発
    • AWSによって完全にマネージされてるサービスをコンポーネントとして用いる
    • 代表サービス: S3, DynamoDB, SQS, Cognito, etc.
  • よくある課題
    • インフラ構築
    • インフラ運用管理
      (キャパシティプランニング、スケール、デプロイ、耐障害性、モニタリング、ロギング、セキュリティパッチ適用)
  • ビジネスの差別化には直接つながらない機能の実装
    • 認証
    • スロットリング
    • スケーラビリティの確保
  • マネージドサービスを使うことで上記が不要に ⇒ アプリ開発に時間を割ける
  • AWS SDK for Java 1.x
    • S3 Encryption Client
    • DynamoDB Object Mapper
    • S3 Transfer Manager
    • Amazon DynamoDB Object Mapper
    • SQSのクライアント側バッファリング
  • AWS SDK for Java 2.x
    • 1.x コードベースから大幅に変更
    • JDK8がベースライン
    • ノンブロッキングIOサポート
    • Builderパターンを通じた不変性
    • プラカブルなHTTP Client
    • HTTP/2 イベントストリーミング
  • 1.xと2.xを平行利用可能

AWSで動くJavaアプリケーションを開発・運用する

  • Amazon Corretto
    • アマゾンがサポートするOpenJDKのディストリビューション
    • アマゾン内部では数千の本番サービスで利用されている
    • マルチプラットフォーム: Amazon Linux2, Windows, macOS, Docker, Ubuntu
    • 無料かつLTS
    • Corretto8は一般利用可能
    • 幅広いプラットフォームの選択肢: EC2, ECS/Fargate, Lambda
    • Lambdaの場合Java8があるが、カスタムランタイムでそれ以外のものを自分で用意することも可能
  • JavaのLambda関数の起動時間を短くするには
    • パッケージサイズを小さくする
    • 不要なコードの依存関係を減らす
    • SDKのコンポーネント単位で必要に応じたモジュールを使用
    • コード最適化ツールを使う
    • フレームワークはspringではなく軽量なDaggerなどを使用する

開発ツール

  • AWS Toolkit for IntelliJ IDEA
  • DevOpsのためのDeveloper Tool
    • CodeCommit
    • CodeBuild
    • CodeBuild Third Party
    • CodeDeploy
    • CodeStar

さいごに

月並みではありますが、AWSでの開発は開発コスト・運用コストともに下げられメリットが大きいと改めて感じました。 IntelliJ IDEAのツールキットなど、気になる開発ツールについてさらに調べてみたいと思います。

ご参考