저는 여태까지 vercel을 사용해 왔기에, 백엔드 쪽 핸들러 함수(/pages/api) 포함 백/프론트 앤드 코드를 작성 후 git에 저장만 하면, vercel이 알아서 해당 코드를 통해 서버를 구축하고, 프로젝트를 배포해 주었습니다.
/pages/api에 작성해 둔 코드 속 함수들을 "서버리스 함수"라고 일컫는데, 여기서 서버리스란 사용자가 직접 서버를 운영하지 않고, 클라우드 제공자가 서버를 필요할 때 자동으로 생성해서 코드 실행을 처리하는 방식을 의미합니다.
( 서버리스 함수는 요청이 들어왔을 때에만 실행되므로 유연성과 확장성 측면에서 유리하다. )
따라서 어쨌든 지금까지는 서버를 직접 구축하지 않았으나, 지난 수업시간에 AWS의 EC2를 이용하여 간편히 나만의 서버를 구축하여 배포하는 내용을 배웠기에 해당 과정을 포스팅하려 합니다.
EC2(Elastic Compute Cloud)는 **AWS(Amazon Web Services)**에서 제공하는 가상 서버 서비스. EC2를 사용하면 클라우드에서 쉽게 서버(컴퓨팅 자원)를 생성하고 관리할 수 있다. 가상 서버(인스턴스)를 생성하고, 그 서버에서 애플리케이션을 실행할 수 있게 한다. 또한 인스턴스를 만들 때 원하는 운영체제(예: Ubuntu, Windows, Amazon Linux 등)를 선택할 수 있으며, CPU, 메모리, 스토리지 크기도 설정할 수 있다 !
*EC2에 가상 서버(인스턴스) 하나를 생성하였습니다. (name : 내 웹 서버)
다음 단계를 설명하기에 앞서 지금부터 요구되는 정보들을 먼저 짚어보고 넘어가겠습니다.
MobaXterm
- MobaXterm은 원격 서버와의 통신을 쉽게 하기 위한 원격 터미널 프로그램입니다. 이 프로그램을 사용하면 SSH(Secure Shell) 프로토콜을 이용해 원격 서버(예: AWS에서 생성한 서버)에 안전하게 접속할 수 있습니다.
- 주요 기능:
- SSH 클라이언트: AWS와 같은 원격 서버에 접속해 명령어를 입력할 수 있는 터미널 역할.
* vercel과 같은 서버리스 환경의 경우 pages/api에 있는 파일들이 각각 하나의 API 라우트로 작동하며, 이를 통해 서버 기능에 접속할 수 있음. ( HTTP 요청에 의해 서버 기능이 트리거 됨.)
Node.js
- Node.js는 자바스크립트 런타임 환경으로, 자바스크립트를 브라우저 외부에서도 실행할 수 있게 해줍니다. 원래 자바스크립트는 웹 브라우저에서만 실행되는 언어였지만, Node.js를 통해 서버에서도 자바스크립트를 실행할 수 있게 된 것.
npm (Node Package Manager)
- npm은 Node.js에서 사용하는 패키지 관리 도구입니다. 쉽게 말해, Node.js로 개발할 때 필요한 다양한 라이브러리, 플러그인, 도구를 관리하고 설치하는 시스템
가장 먼저 mobaXterm을 실행시킨 후 session 항목의 SSH 변수들을 아래 사진과 같이 설정해 줍니다.
그 후 mobaXterm의 터미널을 통해 저의 git에서 원하는 프로젝트를 clone 시켜줍니다. 그러면 git에 있던 저의 프로젝트 코드들이 불러와지는데요, 프로젝트를 실행시키려면 node와 npm을 설치해야만 합니다.
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash --
sudo apt-get install nodejs
mobaXterm의 터미널에 다음과 같은 명령어를 순서대로 입력하면, node와 npm 설치가 완료됩니다. ( npm은 Node.js와 함께 배포되는 패키지 관리자이므로 따로 설치할 필요가 없음 )
저의 경우 pnpm을 사용해 왔기에, 아래의 명령어를 통해 pnpm을 추가로 install 해 주었습니다.
npm i -g pnpm
** prisma 개념 설명
- Prisma: 데이터베이스와의 상호작용을 돕는 전체 ORM 시스템. 모델 정의, 마이그레이션 관리, 데이터베이스 연결을 설정하는 툴입니다.
- Prisma Client: Prisma가 제공하는 데이터베이스 클라이언트 라이브러리로, 자바스크립트/타입스크립트를 사용하여 데이터베이스에 쿼리를 날릴 수 있게 해주는 도구입니다. 예시 코드는 다음과 같습니다.
const user = await prisma.user.findUnique({
where: { id: 1 },
});
node와 npm 설치를 완료했다면, 다음은 prisma를 설치할 차례입니다.
Prisma CLI 설치
Prisma CLI는 프로젝트에 Prisma를 설정하고 사용하는 데 필요한 도구입니다. 다음 명령어로 Prisma CLI를 전역으로 설치할 수 있습니다:
npm install -g prisma
이 명령어는 Prisma CLI를 전역으로 설치하므로, 이제 터미널에서 어디서든 prisma 명령어를 사용할 수 있습니다.
Prisma 초기화
Prisma를 프로젝트에 설정하려면, 프로젝트 디렉토리로 이동한 후 다음 명령어를 사용하여 Prisma를 초기화합니다.
prisma init
이 명령어는 기본적인 Prisma 설정 파일(schema.prisma)과 환경설정 파일을 생성해 줍니다.
이제 pnpm과 prisma 설치를 마쳤으므로, 프로젝트 실행을 위해, 평소에 하던 것과 마찬가지로
pnpm prisma generate
pnpm prisma migrate dev
다음과 같은 명령어를 입력해줍니다. 이제 프로젝트를 실행할 일만 남았는데, 지금까지는 pnpm dev (: 주로 테스트할 때 사용) 를 통해 실행해 왔으나 여기서는 pnpm build 명령어 ( : 최종 사용자가 사용할 수 있는 형태로 코드와 자원을 준비 ) 를 사용하여 프로젝트를 실행합니다.
이제 (퍼블릭 ip):3000 을 통해 제 프로젝트를 실행시킬 수 있게 됩니다. 아래와 같이 말이죠 !
제가 배운 내용을 바탕으로 서버 구축, 배포 과정을 정리해 보았습니다. 저의 복습용 블로그지만 혹여라도 제 글이 조금이나마 누군가에게 도움이 되었길 바라며 포스팅 마치겠습니다. 읽어주셔서 감사합니다 !
'백앤드 수업복습' 카테고리의 다른 글
AWS Route 53 & vercel을 활용한 도메인 연결과 배포 방법 (2) | 2024.10.26 |
---|---|
HTTP 상태 코드 (status code) (1) | 2024.07.24 |
API ROUTER (예습) (1) | 2024.07.24 |
REST API URL 문제 풀이 (1) | 2024.07.24 |
API (Application Programming Interface) 란? / POSTMAN 기초 (2) | 2024.07.24 |