2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[未経験者向け]AWSを使ったポートフォリオのデプロイ構成

Posted at

Web系未経験で転職活動を現在しています。
ポートフォリオのデプロイ構成を悩んでいる人向けに、私の構成を参考がてら載せます。
また私の面接対策に向けて、選定理由などもメモがてら載せておきます。

Node.jsを使っていてAWS上に公開したいけど、できるだけ構成は簡単にしたい人向けです。
ポートフォリオのレベル感は大目に見てください...。

作成ポートフォリオ

使用技術

Category Technology Stack
Frontend TypeScript, Next.js
Backend TypeScript, NestJS, Prisma
Infrastructure AWS Lightsail, Nginx, PM2
Database PostgreSQL
Development Environment Docker(PostgreSQL のみ)
CI/CD GitHub Actions
Design Tailwind CSS
Others ESLint, Prettier, Git, GitHub

Amazon Lightsail

初心者でも簡単に使いやすい仮想プライベートサーバー(VPS)サービス。

特徴

  • コンピューティング、ストレージ、ネットワークといったWebアプリ構築に必要なものを1つのパッケージとして提供
  • 月額固定料金でコスト管理しやすい
  • 設定が簡単な分、自由度は低い

選定理由

  • パッケージ化されていて、構築がシンプルで学習コストも低い
  • EC2などの他サービスへの移行も可能

関連用語

  • VPS
    1台の物理サーバーを仮想的に分割して使用するサーバー
    コンピューティング・ストレージ・ネットワークなどの要素で構成

  • コンピューティング(CPU / メモリ)
    プログラムを実行するためのリソース
    サービス例:Amazon EC2、AWS Lambda

  • ストレージ
    データの保存や共有
    サービス例:Amazon S3

  • ネットワーク
    外部との通信
    サービス例:Amazon VPC

  • EC2構成
    コンピューティングにEC2を使用して、ストレージやネットワークなどのサービスを組み合わせた構成

インスタンス構成

OS:Ubuntu

インストールしたミドルウェア:

  • Node.js / npm(アプリ実行環境)
  • Nginx(リバースプロキシ / HTTPS 終端)
  • PM2(プロセス管理)
  • PostgreSQL(データベース)
  • Certbot(SSL 証明書管理)

Nginx(エンジンエックス)

高性能な Web サーバー / リバースプロキシ として広く利用されるミドルウェア。 

Node.jsとの違い

Nginxは主にWebサーバやリバースプロキシとして、リクエストの受付や振り分け、通信制御を担当する。

一方、Node.jsはJavaScriptをサーバー側で実行するための実行環境であり、アプリケーションのロジックを担当する。

使用目的

リバースプロキシとして利用し、Node.jsアプリを前段で制御する。
これによって、フロントエンドとバックエンドのアプリを同一ドメイン・同一ポート(同一オリジン)で提供できる。

Nginxを使用しない場合、別オリジンとなり、CORS設定やCookieの扱いが複雑になる。

Node.jsだけでもWebサーバーとして使用できるが、リバースプロキシやSSL終端などもアプリケーション側で実装することになり構成が複雑。Webサーバソフトウェアに任せたほうが構成がシンプルかつ簡単。

選定理由

Apache(アパッチ)と比較して

  • リバースプロキシ用途の場合の設定がシンプル
  • Node.jsとの組み合わせでのドキュメントや事例が多い

PM2(ピーエムツー)

Node.jsのアプリケーションを永続化し、異常終了時の再起動やログ管理などを行うプロセスマネージャー。

使用目的

本番環境で Node.jsアプリを安定して運用するため。
ないと異常終了時に自動再起動ができない。

選定理由

  • Node.jsアプリのプロセス管理に特化
  • ドキュメントや事例も豊富

その他

certbot(サートボット)について

Let’s Encrypt の SSL/TLS証明書 を自動で取得・更新するツール
HTTPのままだとブラウザで警告が表示される、通信内容が暗号化されない。HTTPS対応するのが一般的。
無料で使えて、個人開発でのドキュメントや事例も豊富。

Dockerについて

本番環境で使用しない理由
・構成をシンプルにしたかった
・Linuxやミドルウェアの理解を優先したかった

開発環境でDBのみ使用した理由
・学何かしらは触っておきたい
・データの初期化を行いやすく、使用するメリットが大きい

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?