お疲れ様です.Tomです.
表題の通り以前,AWSで簡易なWebアプリをインターネット環境にデプロイしました.
記録として,考えたことややったことなどを記載していきたいと思います.
記事全体としては編で構成されており,アプリのコンポーネントごとに詳細を書いております.ここではアーキテクチャや思ったことも含めて”全体”を振り返るマテリアルになっています.
下の【今回の動機】からは私の話になり,技術は関係なくなるので,飛ばしていただいて問題ありません.
概要
実施したことは大きく下記のようになっており,非常にシンプルです.
- アーキテクチャの構想と設計
-
インフラの構築
┗ サーバ構築: スペック選定から必要パッケージインストールまで
┗ DB関連: 構築からテーブル作成まで
┗ ネットワーク: VPC(ACL等も含む),ドメイン取得(Route 53),証明書関連 -
アプリケーションのビルド
※ Javaのソースをビルドしてテストを行い,不具合や改善点があればソースコードを修正するということを繰り返しました.言うなればなんちゃってアジャイルです.
直面したエラーやその対処法,技術的な詳細はそれぞれ個別の編でまとめようと思います.
Webアプリの概要とそのアーキテクチャ
アプリの概要としてはECアプリのようなものを想定しています.在庫管理はもちろん,ユーザがアカウントを作って出品し,購入することもできます.いろいろ自分なりに試行錯誤した結果,下記のようになりました.インターネットに公開したとはいえ,主にセキュリティ面でアプリそのものが本番のクオリティではないため,試験環境ということにし,凝りすぎずに自分で勝手に決めた納期ファーストで作りました.(※ サーバ名は念の為マスクしました.あしからず…)
玄人の方はいろいろ思うところがあると思いますが,RDSのレプリケーションの挙動を学習する時間を確保する前に納期が来てしまったことと,アプリケーション編
で後述するapplication.properties
にてDB接続を設定するのですが,このときにエンドポイントごとで設定を書き分けなければならず,今回はこのような設定と記載を落とし所としてみました.なにかアドバイスがありましたらコメントでご教示いただけますと幸いです.
それぞれの記事
これ以降,技術関係なくなります.
今回の動機
数年前に参加したHackathonでWebアプリを書いたのですが,そのチームのメンバーを驚かせたいと思ったことがきっかけです.
したがって今回3分クッキングのようにポッとアプリが出てきます(笑)
アプリに関して今回僕がやったのは,そのときに時間切れで実装できなかったデバッグや改修がメインです.
学生時代は授業にてやらされたC言語で挫折し,興味はあったものの「IT技術には縁がない人生なんだな」と諦めていました.しかし,Hackathonでプロダクト企画から実装までを行い,「こんなに夢中になれるものがあるのか」と自分でも驚くほどのめり込んでしまいました.結果決勝まで残ってプレゼンした記憶があります.
Hackathonが終わったあとも,「このアプリがスマホでアクセスできるようになったら,みんなおもろがってくれるだろうな」と思い,ちまちまインターネットの原理からサーバの原理まで学習しているうちに,年月が経ち,気がつくとエンジニアになっていました🤯
それが僕の技術キャリアを始めた原点です.ダラダラと生きていく予定だったのが,ハリと目的を与えてくれた気がします.そんなこともあって,恩返しではないですが原点のフラグを回収して,一つのチェックポイントとしてやってみようというのが今回の試みでございます.
またその調べていた一環でAWSやLPIC,Javaの資格をとっていたこともあり,その知識を自分なりにアウトプットしてみようというのも動機のひとつです.
P.S.) C言語は今思うととても大事な言語であり勉強中ですが,ただのしょうもない演算をさせたりするのはCSの入口としてふさわしくないと考えます.
実装を終えて(所感)
勉強を進めてなんとなく仕組みがわかるようになり,環境構築を終えて数年ぶりにアプリが動いたときはとても興奮しました.
屋根裏部屋のホコリかぶった箱を開けて,学生時代の思い出の品を眺めているようなノスタルジーがありました(笑)
今回自分でデプロイしてみて,サービスとして公開するのはこういう感じなんだと勉強になりました.うまく言葉では表現できないのですが,公開することは作業のほんの一部であって大したことではないものの,境界をまたぐ責任と興奮を感じました.
またぶっちゃけやりたいとは思っていたものの,「できないだろうし,できても何年もあとのことだな」と心のどこかで思っていました.しかし実際に実現させてみて,「難しそうだなと感じてしまっているものも,期限決めてやれば案外すぐにできることがある」ということも実感できました.私が漫画から学んだ大切な教訓を身を持って再認識しました.(※1)(※2)
編にまとめた記事でも体験して学んだことはあらかた書けました.これらが何か皆さんの活動のヒントになれば幸いです.
お読みいただき,ありがとうございました!
出典
(※1)「ジョジョの奇妙な冒険 Part7 スティール・ボール・ラン」より引用
(※2)https://note.com/nabeharuj/n/n1946d7a1ae0b