부하테스트를 진행하기 위해 EC2로 간단한 API 서버를 세팅한다.
먼저 aws에서 ec2를 검색하여 들어간다.

인스턴스를 생성하기 위해 인스턴스 시작을 클릭한다.

이름은 api-server로 하였다. Ubuntu를 선택한다.

인스턴스 유형은 프리티어로 사용이 가능한 t3.micro를 선택하였다.
키페어는 현재 테스트중이기 때문에 키페어 없이 계속 진행한다. (현업에서는 키페어를 사용한다고 한다.)

보안그룹으로 HTTP 서버랑 통신하기 위해 인터넷에서 HTTP 트래픽 허용을 체크해주도록 한다.

설정을 마친 후 인스턴스 시작을 클릭하면 인스턴스를 시작하게 된다.

인스턴스에서 연결을 클릭하면 인스턴스와 연결하게 된다.


aws에서 제공하는 웹 사이트를 통해 ec2 인스턴스에 접속해서 들어오는 방법으로 터미널에 접속한다.
ec2 인스턴스가 잘 생성된 것을 확인할 수 있다.

sudo su 로 권한을 바꾼다.
다음으로 노드 기반의 express 서버를 세팅한다.
express 서버를 실행시키기 위해 node.js 설치한다.
NODE_MAJOR=20
apt-get update && apt-get install -y ca-certificates curl gnupg
mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | \
sudo tee /etc/apt/sources.list.d/nodesource.list
apt-get update && apt-get install -y nodejs
명령어를 실행시킨 후 잘 설치되었는지 확인하기 위해 node -v 명령어를 입력한다.
버전명이 나오면 설치가 잘 된 것을 확인할 수 있다.

api 서버를 만들기 위해 my-server 폴더를 만든다.

my-server로 들어간 다음 (cd my-server)
npm init 입력한다.

엔터 계속 입력한다.


npm i express 설치한다.

다음으로 api 로직 작성을 한다.
로직을 작성하기 위해 vi app.js 명령어를 입력한다.

vi에 들어왔을 때는 i 버튼을 눌러서 insert로 변경해줘야 입력할 수 있다.
/boards 로 api 요청이 들어오면 응답하는 로직을 작성해준다. 80번 포트에서 express가 실행되도록 하였다.

const app = express();
const port = 80;
app.get('/boards', (req, res) => {
res.send([
{ id: 1, title: '첫 번째 게시글 ', content: '이 것은 첫 번째 게시글의 내용입니다.' },
{ id: 2, title: '두 번째 게시글 ', content: '이 것은 두 번째 게시글의 내용입니다.' },
{ id: 3, title: '세 번째 게시글 ', content: '이 것은 세 번째 게시글의 내용입니다.' }
]);
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
명령어 작성 후 esc 키를 누른다.
그리고 :wq 입력하여 빠져나온다.
cat app.js로 잘 작성되었는지 확인한다.

서버를 실행시키기 위해 pm2를 설치한다.
sudo npm install -g pm2

node 기반의 서버는 pm2를 활용해서 많이 실행시킨다. pm2는 서비스를 운영하는데 있어서 유용하고 편리한 기능들을 많이 제공한다.
pm2을 실행한다.

뭔가 실행이 된 듯 하다. 잘 작동하는지 확인한다.
각자 개인 아이피 복사해서 새로운 창을 연 다음

(PublicIPs)/boards 입력하면 응답이 온다.

참
https://www.youtube.com/watch?v=hxOW4ZKz7CQ&list=PLtUgHNmvcs6qAqWz-UhH-_ploSbK2eHwG&index=6
'Back-end' 카테고리의 다른 글
| [server] 부하테스트 - 3 + EC2 인스턴스 종료 (0) | 2025.09.17 |
|---|---|
| [server] 부하테스트 - EC2 부하테스트 툴 세팅 - 2 (0) | 2025.09.17 |
| [server] 대규모 트래픽 처리 (0) | 2025.09.17 |
| Entity와 DTO의 분리 (1) | 2025.08.09 |
| [Annotation] Id 어노테이션 차이 정리 (1) | 2025.08.04 |