<멋쟁이사자처럼> 7번째 벨로그

장수빈·2026년 5월 23일

1. AWS 가입하기

허허.....
생각해보니 나 해외결제 카드가 없었구나...........
뒤늦게 해외결제 카드를 신청했지만 주말에 신청해서 다음주중에나 받아볼 수 있을 듯 하다..

그래서 일단 부모님 카드로 해보려고 했는데ㅜ 그랬는데..

문제점 1.


카드 비밀번호를 입력하다 어쩌다 3회 이상 틀리게 되었는데(근데 틀렸을 리가 없는데) 그때부터 비밀번호 입력하는 창으로도 안넘어가고 이 창만 뜬다..
제미나이한테 물어봤더니 창 다닫고 시크릿모드 켜고 AWS 다시 들어가서 해보라고 해서 해보았는데 그래도 똑같은 창이 뜨고 다른 카드도 써봤는데(해외결제가 되는지 잘 모르겠는..) 똑같은 오류창이 뜬다
비밀번호 오류 너무 많이 내서 이런건지 그러면 어떡해야 하는지 모르겠어서 물어봤더니 오류 창 보면 그게 아니고 정보가 잘못된 거 같다고 하고 그런데 잘못된 정보가 없는데ㅜㅜ

2. AWS EC2 배포 해보기

1. 배포란?

: 다른 사용자들이 인터넷을 통해서 내가 만든 웹 페이지에 접속할 수 있도록 하는 것

-> 현재 우리가 만든 게시판 페이지는 localhost로 만들어져 있기 때문에 다른 사람들이 접근이 불가능한 주소이다. 하지만 배포를 하고 나면 다른 사람들도 내가 만든 게시판 페이지에 접속이 가능하게 된다.

2. EC2란?

: Elastic Computer Cloud, AWS에서 빌려 쓰는 가상 컴퓨터

-> 내가 만든 게시판 페이지는 localhost:8080으로만 접속이 가능하다. 하지만 EC2에 올리면 인터넷 주소를 통해 다른 사람들도 접속이 가능하게 된다.

백엔드 서버를 배포할 때 주로 사용하고 프론트엔드 서버를 배포할 때는 주로 다른 방법을 사용한다고 한다.

3. EC2 기본 설정

1) region 설정하기

region이란?
: 인프라를 지리적으로 나누어 배포한 각각의 데이터 센터를 의미

쉽게 말해 EC2를 통해 빌려서 쓸 수 있는 컴퓨터들이 전 세계적으러 다양하게 분포해 있는데, 이 컴퓨터들이 위치한 위치들을 region이라고 한다.

EC2를 실행시키고 제일 먼저 설정하게 되는 것이 region인데 그렇다면 어떤 기준으로 선택하는 것이 좋을까?
-> 웹의 주된 사용자들의 위치와 가장 가까운 region을 선택하는 것이 좋다.

지리적으로 멀면 멀수록 속도가 느려진다.

내가 한국 사람이니까 region 아시아 태평양 서울로 설정해야지! (X)
내가 한국 사람일지라도 나는 도쿄에 있는 사람들이 주로 사용하는 웹을 만들 거니까 아시아 태평양 도쿄로 region을 설정해야지! (O)

2) 기본 설정

1. 이름 및 태그

2. OS 선택하기

: 어떤 OS를 가진 컴퓨터를 사용할 것인가?
-> Ubuntu

왜 Ubuntu를 사용해야 하는가?

Windows나 MacOS 같은 경우 컴퓨터를 모르는 사람들도 쉽게 쓸 수 있도록 하기 위해 편한 기능들을 너무 많이 넣어 놓음
-> 서버의 성능과 속도가 느려짐

3. 인스턴스

: EC2에서 빌리는 컴퓨터 1대를 의미]
인스턴스 유형: 컴퓨터 사양을 의미
-> t2.micro: 프리 티어가 사용가능한 인스턴스 유형
(딱히 안좋다거나 하지 않음.)

4. 키 페어(로그인)

: EC2 컴푸터에 아무나 접근하지 못하도록 거는 암호
-> 키 페어 이름은 직관적으로 알아볼 수 있게 설정, 이름 이외 나머지는 설정할 필요 X

이 파일을 통해 EC2에 접근할 수 있으므로 잃어버리거나 유출되지 않도록 잘 보관해 두어야 함!!!

3) 보안그룹 설정

1. 네트워크 설정

네트워크 설정 우측 상단 '편집' 클릭

2. 보안그룹

: AWS 클라우드에서의 네트워크 보안을 의미
IF. 인터넷에서 일부 사용자가 EC2 인스턴스에 접근하려고 한다.
-> EC2 인스턴스 주위의 보안 그룹을 만들고 보안그룹에 규칙이 지정되어 있으면 트래픽의 출입을 설정할 수 있다.

인바운드 트래픽: 외부에서 EC2 인스턴스로 들어오는 트래픽
아웃바운드 트래픽: 내부에서 EC2 인스턴스 바깥으로 나가는 트래픽

어떻게 보안그룹을 설정해야 하는가?

  • 보안 그룹 생성 선택
  • 보안 그룹 이름 설정
  • 인바운드 보안 그룹 규칙
  • 보안 그룹 지정 추가
    사용자 지정 TCP -> HTTP
    포트 80 / 사용자 위치 미정

IP와 Port

IP: 네트워크 상에서 특정 컴퓨터를 가리키는 주소
Port: 한 컴퓨터 내에서 실행되고 있는 특정 프로그램의 주소
ex) localhost:8080에서 8080이 포트 번호이다.

브라우저 창에 포트번호를 입력하지 않는 이유는 무엇일까?


기본적으로 80번 포트로 통신을 보내게 설정되어 있다.
포트를 명시한다면 기본 80번 포트가 아니라 다른 곳으로 갈 수도 있다.

잘 알려진 포트

포트 번호는 0~65,535번까지 사용할 수 있다.
그 중에서도 0~1,023번 까지의 포트 번호는 주요 통신을 위한 암묵적 룰에 의해 이미 정해져 있다.
이렇게 이미 역할이 정해져 있는 포트 번호를 '잘 알려진 포트'라고 한다.

  • 22번(SSH, Secure Shell Protocol): 원격 접속을 위한 포트 번호
  • 80번(HTTP): HTTP로 통신할 때 사용
  • 443번(HTTPS): HTTPS로 통신할 때 사용

4) 스토리지 구성 설정

: EC2도 컴퓨터처럼 저장공간이 필요함 = EBS(Elastic Block Storage)
EBS와 같은 저장 공간을 조금 더 포괄적인 용어로 '스토리지'라고 한다.

  • 스토리지 크기: 프론 티어에서 무료로 제공하는 최대 기가바이트는 30
  • 볼륨 유형: 제일 최근의 것. gp3 사용

우측 하단 인스턴스 시작

4. EC2 접속하기

  • 퍼블릭 IPv4 주소: 빌린 컴퓨터의 IP주소
  • 인스턴스 상태: 인스턴스 중지 / 시작 / 재부팅 / 최대 절전 모드 / 종료(삭제)

모니터링
실제 서버를 운영할 때 자주 보게되는 창으로

우측 상단 '연결' 클릭
인스턴스에 연결
이름 ubuntu로 설정 후 연결 클릭
EC2 인스턴스 서버 들어감

5. 탄력적 IP 연결하기

왜 탄력적 IP가 필요할까?

EC2 인스턴스를 생성하면 IP를 할당받게 된다. 하지만 이렇게 할당받은 IP는 EC2인스턴스를 중지시켰다가 다시 실행시켜보면 바뀌어있다. 따라서 중지시켰다가 다시 실행시켜도 바뀌지 않는 고정 IP를 할당받아야 한다.
-> 탄력적 IP

탄력적 IP라 유동적으로 상황에 맞게 변화하는 IP인가 생각했는데 그 반대라서 머쓱했다ㅎ

탄력적 IP 설정하는 법
1. '네트워크 및 보안 그룹'에서 '탄력적 IP' 들어가기
2. 우측 상단 '탄력적 IP 주소 할당' 선택
3. 세부사항 건드리지 말고 할당 클릭
4. 식별이 쉽도록 이름 바꾸어 준 후 작업에서 '탄력적 IP 주소 연결' 선택
5. 인스턴스 선택 후 연결 클릭

EC2 종료하는 법

  1. 인스턴스 상태 -> 종료
  2. '네트워크 및 보안' -> '탄력적 IP'
  3. 작업 -> '탄력적 IP 주소 릴리스' -> 릴리스

7. RDS

1) RDS란?

:관계형 데이터베이스 서비스

왜 사용하는가?

로컬 환경에서 개발할 때에는 로컬 환경에 설치된DB를 연결해서 사용한다.
하지만 서버를 배포하고 나면 서버가 내 컴퓨터에 설치된 DB에 연결할 수가 없다. DB도 외부 인터넷에서 접근할 수 있게 같이 배포해주어야 한다.
-> AWS RDS 빌려서 사용

EC2에 DB를 직접 설치해서 쓴다면?
안되는 것은 아닌데 현업에서는 보통 분리해서 사용함

  • 별도의 비용이 나오지 않기 때문에 비용 절감은 good
  • 백엔드 서버에 문제 발생 시 DB도 같이 문제가 생길 수 있음
  • RDS가 제공하는 부가적인 편리한 기능

2) RDS 생성하기

  1. AWS 서비스에서 RDS 검색
  2. 데이터베이스 생성(표준 생성)
  3. DB 선택(Maria DB) 탬플릿 선택(프리 티어)
  4. DB 인스턴스 식별자 -> 이름 설정
  5. 마스터 암호(데이터 베이스에 접속하기 위한)
  6. 퍼블릭 엑세스 '예'
  7. 데이터베이스 생성

MySQL / Maria DB

영상에서는 MySQL로 하는데 MySQL 따라가는 것이 좋을까요 아니면 Maria DB 쓰는게 좋을까요ㅜㅜ 괜히 다르게 했다가 쌤 화면이랑 안맞을까봐 두렵습니다..

3) 보안그룹 세팅

  1. 네트워크 및 보안 -> 보안 그룹 -> 보안 그룹 생성
  2. 보안 그룹 이름, 설명 설정(복붙)
  3. 인바운드 규칙: 유형에서 DB검색 후 설정
  4. 소스 Anywhere-IPv4 설정
  5. 보안 그룹 생성
  6. RDS 검색해서 돌아간 후 DB 인스턴스 선택
  7. 수정 -> 밑으로 내려서 '연결' 찾기
  8. 보안 그룹에서 아까 만들었던 보안 그룹 선택 후 Default 삭제
  9. 밑으로 내려서 '계속' 누르기
  10. '즉시 적용' 선택 후 DB 인스턴스 수정

4) 파라미터 그룹 추가

  1. 좌측 파라미터 그룹 클릭
  2. 파라미터 그룹 생성 클릭
  3. MySQL 8.0 선택
  4. 이름, 설명 설정 -> 생성
  5. 방금 만든 파라미터 그룹 들어가서 '수정' 클릭
  6. 'character' 검색
  7. character_set_server와 skip-character-set-client-handshake 제외하고 utf8mb4로 설정하기
  8. 변경사항 저장 -> 수정
  9. 'collation'에서 utf8mb4_unicode_ci로 전부 수정하기
  10. 수정 -> 'time_zone' 검색
  11. Asia/Seoul 수정
  12. RDS 들어가서 DB 인스턴스 클릭 -> 수정
  13. 밑으로 내려가서 '추가 구성' 찾기 -> 아까 만든 파라미터 그룹으로 수정
  14. '즉시적용 설정'
  15. 작업에서 재부팅

utf8mb4?

데이터베이스에 글자를 저장할 때 사용하는 인코딩(문자 표현) 방식 중 하나
기존에 쓰던 utf4는 이모지를 쓰기에는 바이트가 너무 작게 설정되어 있음
utf8mb4를 사용하면 이모지를 안깨지게 쓸 수 있음

utf8mb4_unicode_ci

: 데이터베이스가 문자를 비교하고 정렬할 때 사용하는 기준

  • utf8mb4 - 이모지까지 저장할 수 있는 Character set
  • unicode - 문자를 비교할 때 유니코드 표준 규칙을 따르겠다
  • ci - 대소문자를 구분하기 않겠다.

time_zone

맞추어주지 않으면 글이 작성된 시간, 댓글이 달린 시간 등이 전부 엉뚱하게 기록되기 때문

5) RDS 종료

작업 -> 삭제

중요!!!

  • 최종 스냅샷 생성
  • 자동 백업 보존
    반드시 해제하기

8. S3와 CloudFront

1) S3란?

: AWS에서 제공하는 파일 스토리지 서비스

왜 사용하는가?

우리가 만드는 웹 서비스에는 많은 파일이 들어감 ex) 이미지, 동영상, 로고...
이러한 파일들을 EC2에 그냥 저장하면 EC2의 용량이 금방 차고 컴퓨터가 느려질 수 있음
-> 글이나 회원 정보같은 가벼운 데이터는 RDS에 저장하고 무거운 이미지와 같은 파일은 S3에 따로 모아서 저장

  • 무제한 용량
  • 안정성
  • 저렴한 비용

2) CloudFront란?

: 스토리지에 있는 파일을 사용자에게 빠르게 전달해주는 역할

  • 컨텐츠 전송 성능을 향상시키기 위해서
  • HTTPS를 적용하기 위해서
  • 보안적으로 한층 더 강화가 가능

3) S3 버킷 생성하기

  1. AWS에서 S3 검색 -> 버킷 만들기
  2. 이름 설정
  3. '모든 퍼블릭 엑세스 차단' 풀어주기
  4. 버킷 만들기
  5. '권한' 페이지 들어가서 권한 정책 편집 선택
  6. '새 문 추가' 'S3' -> 'GetObjest'
  7. 리소스 추가, 유형 Object 선택
  8. 리소스 ARN - / 뒤에 * 쓰기(파일 전체 접근)

3. 배운점 및 느낀점

자꾸 과제를 다음 주차로 미루는 것 같아서 마음이 좋지 않다........ㅜㅜ
진작 신용카드 발급받았으면 이런일이 없었을 거 같은데 미리미리 좀 하는 습관 좀 들이자..
자꾸 과제 미루어서 죄송합니다..ㅜㅜ 앞으로는 이런일 없도록 하겠습니다💧

영어 세글자 줄임말이 왜이렇게 만아요ㅜ 아 헷갈려 RDS 언젠가 스터디 공부할 때 들어본거 같은데.. 기억이 가물가물 ERD랑 헷갈린건가 싶기도 하고.. EC2랑 헷갈린건가 싶기도 하고..


제미나이 똑똑하네 utf8mb4가 뭔지 물어보려고 했는데 내 화면을 분석해서 다른 고민까지 해결해줬어..

TMI 이번주 과제를 하기 전에 지인님 벨로그를 우연히 둘러보게 되었는데 지인님 벨로그에 AWS EC2 배포가 있어서 반가웠다!!
지인님도 고생 많이 하신 것이 벨로그에서 느껴져서 신기...
여러분도 지인님 벨로그 구경하세욤ㅎㅎ

2개의 댓글

comment-user-thumbnail
2026년 5월 25일

다음에 배포 작업할 때, 수빈님 벨로그 보면서 진행해야겠어요... 같은 문제로 주말동안 고민하고 고통받던 1인으로,, 여름방학 전에 해결해보아요! 과제하시느라 수고했습니다!!

답글 달기
comment-user-thumbnail
2026년 5월 25일

배포한 저보다 더 자세히 쓰셔가지고 저도 참고좀 하겠습니다....ㅎㅎ 처음부터 트러블 슈팅이 생겨서 배포가 안됐음에도 불구하고 개념 정리를 정말 잘 하셨어요!!! 수고 많으셨어요~~~

답글 달기