System.out.println("Java学習中");

【Java / Spring Boot】UI/UXの視点を活かしたバックエンド開発の学習ポートフォリオ

【AWSデプロイ奮闘記:第1回】未経験者がAWS EC2でSpring Bootアプリを本番公開するロードマップ

Adobe Fireflyで作成

🟢 はじめに

前回の記事では、

未経験から挑んだAWSデプロイ奮闘記:Spring Bootタスク管理アプリを本番公開するまでの軌跡

について書きました。

📝前回の記事はこちら👇

blog.kenichikamoi.com

今回の記事では

AWS EC2の構築手順

について解説したいと思います。


⚖️ PaaSとIaaSの違い

🤔 なぜPaaSではなく、あえてAWS(IaaS)を選んだのか?

いよいよインターネットの世界への公開(デプロイ)作業のスタートです。

ローカル環境で動いていたアプリが、世界中のスマホやPCから見られるようになる

開発において一番感動する瞬間ですね。

アプリを24時間稼働させるための「サーバー(土地)」選び

は、個人開発者にとって「料金」「学習コスト」の面で非常に重要なポイントになります。

方法は大きく分けて2つあります。

☁️ 選択肢A:PaaS(自動化された土地)

RenderFly.ioなどに代表されるサービスです。

🔹メリット

コードを渡す(GitHubと連携する)だけで、面倒なインフラ設定をシステムが全自動でやってくれます。

無料枠(Free Tier)があるサービスも多いです。

🔹デメリット

しばらくアクセスがないとサーバーが「休眠状態」になり、

次にアクセスした時に画面が表示されるまで数十秒〜1分ほど待たされる

という大きな罠があります。

さらに、Java(Spring Boot)メモリを多く消費するため、

無料枠の少ないメモリ環境(512MBなど)**だとアプリが重くなったり、最悪の場合は途中で落ちてしまう

ことがあります。

🏗️ 選択肢B:IaaS / VPS(自由な開拓地)

AWS(EC2)や、さくらのVPSなど、自分でLinuxサーバーを借りて、一からJavaMySQLをインストールする環境です。

🔹メリット

カスタマイズ性が抜群です。

AWSの場合は

アカウント作成から1年間は強力な「無料利用枠(t3.microなど)」が用意されている

ため、設定さえ間違えなければ最初の1年間はほぼ0円で本格的なサーバーを動かすことが可能です。

🔹デメリット

自分でLinuxコマンドを叩いて土地を開拓する必要がある

ため、インフラの知識が求められます。

また、設定を間違えて有料サービスを放置すると、後で恐ろしい金額の請求が来る「クラウド破産」のリスクもあります。

🧭 私が「AWS(IaaS)」での本格デプロイを決断した理由

手軽に公開して完成の喜びを味わうなら「ルートA(PaaS)」一択です。

しかし、私は今回、あえてエラーとの激しい戦いが予想される「ルートB(AWS)」を選択しました。

その理由は、

インフラからアプリまで、システム全体を俯瞰して構築できるエンジニア

としての証明になるからです。

私はこれまで、サーバーヘルプデスクテスターとしてITインフラの後方支援(運用や品質保証)を担ってきました。

その現場経験があるからこそ、

Linuxの黒い画面(ターミナル)からコマンドを叩き、ゼロからWebサーバーやデータベースを構築して安全に運用する知識

がいかに実務で重要かを痛感しています。

開発とは全く違う「インフラの壁」に立ち向かうことになりますが、ここを乗り越えればポートフォリオのデプロイができます。

クラウド破産を防ぐための「請求アラート」

もしっかりと仕掛けつつ、安全第一AWSという広大な土地の開拓を進めていきましょう。


🛡️ 0円で構築する「鉄壁のAWSアーキテクチャ」

AWSはお金がかかって怖い

というイメージがあるかもしれませんが、設定するサービスサイズさえ間違えなければ、

1年間完全に0円(無料枠内)

で動かすことが十分に可能です。

ただし、AWSはあくまで「プロ用のインフラ環境」です。

初心者向けの安全装置はないため、ボタンを1つ押し間違えるだけで

有料サービスが動いてしまうトラップ

が潜んでいます。

ポートフォリオを安全に公開するために、私が徹底的に調べ上げた

これだけは守るべきAWS無料枠の鉄則

をご紹介します。

1️⃣ EC2(Webサーバー)は「t3.micro」一択と「スワップ領域」

🔹無料枠の条件

t2.micro または t3.micro というサイズを1台のみ(月間750時間=24時間稼働OK)

🔹プロの対策

実は、無料枠のEC2メモリが「1GB」しかありません。

Java(Spring Boot)はメモリを多く消費する大食漢なので、そのまま起動するとメモリ不足でアプリが落ちてしまいます。

そこで、

サーバー構築時にハードディスクの一部をメモリ代わりに使う「スワップファイル(仮想メモリ)」を作成して補強する

のが、無料で安定稼働させるための絶対条件になります。(具体的な手順は後述します)

2️⃣ RDS(データベース)の「マルチAZ」トラップ

🔸無料枠の条件

db.t3.micro などのサイズを1台のみ。

🔸プロの対策

ここがAWS最大の初見殺しです。

RDSを設定する際、「可用性と耐久性」という項目で「マルチAZ(予備サーバーを作成する)」を選ぶと、一発で無料枠から外れて課金が発生します。

※実を言うと、私はこの「マルチAZ」の罠などの複雑な設定に阻まれ、今回はRDSの分離を見送ってEC2の中にMySQLを同居させる決断をしました。もし皆さんがRDSに挑戦する際は、必ず「シングルAZ」を選んでください。


💀 絶対に回避すべき「3つの課金トラップ」

上記のサーバーサイズを守っていても、油断すると少額の課金が発生する罠があります。

1️⃣ 宙に浮いたIPアドレス(Elastic IP)の罠

URLを固定するための「Elastic IP」という機能は、

EC2サーバーに関連付けて動かしている間は無料

です。

しかし、節約しようとして「EC2サーバーを停止(ストップ)」させると、IPアドレスだけが宙に浮いた状態になり、

使っていないIPアドレスの保持料

として少額の課金が発生し始めます。

一度設定したら、サーバーは止めずに動かし続けるのが無料の鉄則です。

2️⃣ ストレージ(EBS)の容量オーバー

EC2RDSにくっつけるハードディスク(EBS)は、合計で30GBまで無料です。

例えば

EC2に20GB、RDSに20GB(合計40GB)

などと欲張って設定してしまうと、超過した10GB分に課金が発生してしまいます。

3️⃣「1年後」の切れ目

AWSの無料枠の多くは「アカウント作成から12ヶ月間」です。

1年と1日目からは、無料枠だったサーバーにも容赦なく通常の利用料金がかかり始めます。

転職活動ポートフォリオとしての役割を終えたら、忘れずにリソースを削除(または停止)しましょう。


✉️ 最大の防御:「AWS Budgets(請求アラート)」

トラップを色々とお伝えしましたが、これらを恐れて立ち止まる必要は全くありません。

AWSには、誤って設定を間違えてしまった時に備えて

1円でも(あるいは100円でも)料金が発生したら、すぐにスマホにアラートメールを飛ばす機能(AWS Budgets)

が用意されています。

インフラ構築の最初のステップとして、サーバーを建てるよりも何よりも先に、まずはこの「請求アラート」を設定することが大切です。


✍️ おわりに

次回の記事では、この鉄壁の防御の設定を含めた「準備編」からスタートしていきます。

最後までお読みいただき、ありがとうございました🙇‍♂️


【プロフィール・作品置き場】

kenichikamoi.com


🎵 Youtube(楽曲一覧)はこちら

www.youtube.com