김데이의 개발공부

[ TIL ] Day 88~90 - AWS 사용하기 - EC2, PM2, Nginx, ELB 본문

코드잇 Node.js(BE) 부트 캠프/TIL (Today I Learn) 📑

[ TIL ] Day 88~90 - AWS 사용하기 - EC2, PM2, Nginx, ELB

theday365 2026. 2. 2. 11:43
반응형

🗓️ 수업 일자 : 2026.1.29 ~ 2.2

✨ 오늘의 수업 평가 :  [ HARD ]  좌절 연속… 그래도 기록은 남긴다 🥲✍️

 

1.29

배우면 배울수록.. 점점 목표에서 멀어지는 기분이 든다..

내가 만들고자 했던 서비스가 이렇게 어려운 작업이었나 싶다..

수업도, 목표도 모두 좌절하는 날이다..

 

2.2

자꾸 학원을 빠지고, 점점 블로그 올리는 횟수가 줄어들고.. 

많이 게을러진 기분이다.. 

이 글도 수업일에 제대로 정리 못해서 결국 한참이 지나서야 올리게 됬다 ㅎㅎ 

다시 부지런해져야지!! 💪

 

 

📝  오늘 배운 내용  

- EC2 

- 프로세스 매니저 PM2

- 리버스 프록시 Nginx

 

 


1. EC2 

EC2란?

 

  • AWS 데이터센터에 실제로 존재하는 물리 서버를 가상화 기술을 사용 해 여러 조각으로 쪼개고
    그중 한 조각을 컴퓨터처럼 빌려 쓰는 것
  • OS 설치 (리눅스, 윈도우 등), CPU / 메모리 / 디스크 용량 설정 등 실제 컴퓨터 셋팅과 동일하게 적용 가능
  • AWS 클라우드에 존재하는 "내 전용 컴퓨터" 

 

EC2 세부 기능

  • AMI (Amazon Machine Image)
    • EC2에서 사용 할 운영체제(OS)기본 설정이 셋팅되고, 운영에 필요한 추가 프로그램이 함께 설정 된 OS 묶음 
    • 인스턴스를 새로 생성할 때 복제본처럼 재사용 가능
    • 구성요소 3가지
      1. Root Volume 스냅샷(EBS) : 실제 디스크 내용
      2. 런치 권한 : 개인 전용 or 공유용 설정
      3. 블록 디바이스 매핑 : 디스크 구조 정의
    • AWS Marketplace AMI : OS + DB + WAS + 보안툴 등 이미 세팅된 묶음 마켓,
      특정 용도로 인스턴스를 활용해야 할 때, 추가 기능을 구매하여 커스텀 할 수있음 (일부 무료 버전도 있음)
    • Custom AMI : 개인이 셋팅한 EC2를 AMI로 저장하고 복제하여 사용하는 방식

AMI 선택 영역

  • 인스턴스
    • AMI로부터 생성된 “실행 중인 가상 컴퓨터 1대
    • 웹 서버 실행(Node.js 실행), DB 설치, 배치 및 테스트 서버 운영
    • EC2 자체는 인스턴스를 생성하는 서비스이고,  EC2 서비스 안에서 인스턴스를 여러 개 생성하여 사용 가능
      (EC2라는 큰 그룹 안에 인스턴스라는 소규모 모임이 있는것이 아님) 
  • 키페어 & SSH
    • 키페어 : 인스턴스에 로그인하기 위한 디지털 열쇠, .pem으로 제공
    • SSH : 내 PC 터미널 ↔ AWS 서버를 연결하는 전용 통로, 22번 포트를 고정으로 사용
    • AWS는 보안 때문에 비밀번호 로그인이 불가하고 , SSH 키 방식만 허용
    • SSH = 접속 방식 (출입구) / 키 페어 = 신분증(출입증)
    • 접속 명령어 (예시) : ssh -i my-key.pem ec2-user@13.xxx.xxx.xxx
  • VPC (Virtual Private Cloud)
    • 사용자 전용 프라이빗 네트워크
    • 여러 EC2들이 서로 연결되어 사용될 때 사용되는 네트워크가 기본이 되지만,
      외부에서 접속이 가능해야 하므로 각 EC2마다 퍼블릭 IP를 가지고 있음 
    • 일부 EC2만 퍼블릭 IP 설정을 하여 외부의 요청을 받을 서버를 선택 가능
    • 서브넷 : VPC를 세부적으로 나누어 사용하는 세부 네트워크 공간, 특정 공간만 퍼블릭 네트워크로 설정 가능

 

+ 추가 네트워크

  • 네트워크 : 각종 장지가 자신의 IP를 가지고 통신을 하는 공간
  • 퍼블릭 네트워크 : IP 주소만 알고 있다면 누구나 접속 가능한 오픈 된 네트워크(쉽게 생각하면 인터넷).
                               퍼블릭 IP 주소는 전 세계의 유일
  • 프라이빗 네트워크 : 회사나 가정처럼 접속이 제한 된 네트워크.
                                  집에서 쓰는 모뎀을 통해 컴퓨터, 프린트, 휴대폰, 기기 IoT 등이 연결 구조가 일종의 프라이빗 네트워크

 

CMD 에서 내 로컬 컴퓨터와 AWS EC2 컴퓨터 연결 성공 화면

 

 

 

2. 프로세스 매니저 PM2

PM2란? 

  • Node.js 애플리케이션을 안정적으로 운영하기 위한 프로세스 매니저
  • 주요 기능
    • 프로세스 관리 : 서버 실행·중지·재시작
    • 자동 재시작 : 에러 나도 바로 복구
    • 백그라운드 실행 : 터미널 닫아도 서버 유지
    • 로그 관리 : stdout / error 로그 분리

 

주요 명령어

npm install -g pm2   // 설치
pm2 start app.js     // 실행

pm2 list    // pm2의 현재 상태 확인
pm2 logs    // stdout / error 로그 확인

pm2 restart app   // 즉시 재시작
pm2 reload app    // 사용자 요청이 종료 된 이후 재시작

pm2 stop app      // 중지, 잠깐 서버 내리는 정도
pm2 delete app    // 삭제, 완전 삭제

pm2 startup       // 서버 켜질 때 pm2 함께 실행
pm2 save          // 현재 실행중인 앱 상태 저장

 

 

재시작 방식 비교 : restart vs reload

🔴 pm2 restart 🟢 pm2 reload
  • 실행 중인 프로세스 즉시 종료
  • 코드 다시 로드해서 새로 시작
  • 처리 중이던 요청 ❌ 끊김
  • 현재 요청은 끝까지 처리
  • 새 프로세스를 미리 띄움
  • 요청이 없을 때 조용히 교체

 

 

+ 추가 chmod 파일 권한 설정

  • 파일이나 폴더를 누가, 무엇까지 할 수 있는지 정하는 규칙
  • 권한 표기 방식
    • r : read, 읽기, 숫자 4 , CRUD 중에서 R(읽기) 기능 권한
    • w : write, 쓰기, 숫자 2, CRUD 중에서 CUD(생성, 수정, 삭제) 기능 권한
    • x : execute, 실행, 숫자 1, 명령어 등으로 동작 시기는 권한
  • 권한 범위 
    • 소유자 : 해당 파일을 생성한 계정
    • 그룹 : 소유자가 속해있는 그룹 또는 같은 서버를 쓰는 동료 계정
    • 기타 : 이 외에 서버로 접속한 나머지 모든 사용자
  • chmod 권한 설정 방법
    • Mac Os : cmd 창에서 "chmod + 숫자 조합 + 특정 폴더 / 파일" 명령어를 사용해 설정 가능
    • Window : 원하는 폴더 / 파일의 "속성" 에 접속하여 "보안" 탭에서 "고급" 설정을 활용해 설정 가능
  • chmod 예시
    1. 숫자 모드 : 사람이 치기 편한 방식, 보통 권한 설정용으로 사용
    2. 문자 모드 : 시스템에서 권한 상태를 보여주는 방식
숫자모드 문자모드
(명령어 : ls -l app.js)
설명
chmod 755 app.js -rwxr-xr-x 소유자 7(r+w+x = 4+2+1, 모두 가능), 그룹 5(r+x = 5), 기타 5(r+x=5)
chmod 644 app.js -rw-r--r-- 소유자 6 (r+x = 4+1), 그룹 4(r, 읽기만 가능), 기타 5( r, 읽기만 가능 )
chmod 777 app.js -rwxrwxrwx 모든 사용자에게 모든 권한 부여 → 최악의 셋팅

 

 

+ 추가 리눅스 패키지 관리자 yum

  • 리눅스에서 프로그램을 설치·업데이트·삭제해 주는 도구
  • AWS EC2 (Amazon Linux)는 RedHat 계열 리눅스
  • 소프트웨어 설치와 의존성 관리를 자동으로 처리
yum install git      # 설치
yum remove git       # 삭제
yum update           # 전체 업데이트
yum search nginx     # 검색

 

 

 

3. 리버스 프록시 Nginx & AWS ELB

리버스 프록시란?

  • 리버스 프록시 : 서버 앞단에서 클라이언트 요청을 받아 내부 서버로 전달하는 구조
  • 보안, 로드 밸런싱, SSL 인증서 적용 등 처리 가능

 

Nginx란? 

  • 리버스 프록시 역할을 수행할 수 있는 대표적인 웹 서버
  • 직접 설치해서 쓰는 구현체
  • 주요 기능
    • HTTPS(SSL) 처리
    • 서버 IP / 포트 숨김
    • 요청 분산 (로드 밸런싱)
    • 비정상 요청 차단(방화벽)

 

Node & PM2 & Nginx 관계

  • Nginx → 앞에서 트래픽 정리
  • PM2 → 뒤에서 서버 생명 유지
  • Node → 비즈니스 로직만 담당

 

Nginx 사용법

  1. 설치 : sudo yum install nginx
  2. 환경설정 파일 열기 : sudo vi /etc/nginx/nginx.conf

 

 

AWS ELB란?

  • Nginx와 동일하게 리버스 프록시 및 로드 밸런서 역할을 수행
  • 인프라 운영을 AWS가 대신 관리해주는 관리형 서비스
  • 가용성과 확장성이 좋으며, 트래픽 크고 운영 안정성 최우선인 경우 적용하기 위한 서비스 

 

 


 

📃 내일은 뭘 배울까 🤔

- AWS 다시 복습!

반응형