티스토리 뷰
안녕하세요! 오늘은 개인프로젝트를 배포했던 경험을 작성해보겠습니다. 사실 배포는 5월 초쯤 했는데 그동안 이것저것 다른거 준비할게 많아서 이제야 블로그를 작성하네요..!
1. AWS란?
AWS는 Amazon Web Service의 약자로 고객에게 클라우드 컴퓨팅을 제공하고 있습니다. 클라우드 컴퓨팅 관련해서 정리한 내용입니다. 쉽게말해서 웹 서버를 배포하기위한 모든 자원을 제공해주는 서비스입니다. 로컬에서 개발한 웹 서비스를 다른 사용자들이 볼 수 있도록 배포하기 위해서 필요한 서비스입니다. 왜냐하면 우리는 웹서비스만 실행시키고 있을 컴퓨터를 하나 사서 사용하는 것보다는 대기업에서 이미 마련해둔 컴퓨터를 사용하는 것이 비용이나 관리 측면에서 훨씬 편하기 때문입니다.
https://hasumang.tistory.com/57
2. EC2란?
이번 서버 배포는 아마존의 EC2를 활용합니다. 서버 배포에 자주 사용되는 EC2는 무엇일까요? EC2는 Elastic Compute Cloud의 약자입니다. EC2는 독립된 가상의 컴퓨터를 임대해주는 서비스입니다. 배포를 하기 위해서는 매일매일 한시도 빠짐없이 서버를 돌려야합니다. 우리가 만든 코드를 pm2를 사용해서 계속해서 실행시켜야합니다. 개인 컴퓨터를 사용해서 하기에는 초기 구입비, 세팅비, 유지 관리 비용이 들기 때문에 힘듭니다.
그래서 대기업의 컴퓨터를 빌려주는 EC2를 사용합니다. EC2를 사용하면 바로 리눅스 컴퓨터를 사용할 수 있습니다. Amazon 콘솔에서 원격으로 제 입맛에 맞게 원하는대로 사용할 수 있습니다. 또한, 원하는 만큼 가져다가 사용할 수 있습니다. 1GB만 필요하다면 1GB만 사용하고 1GB에 해당하는 비용만 지불하면 됩니다.
<EC2의 장점>
- 요구에 맞춰 컴퓨팅 용량을 빠르게 변화할 수 있다 (탄력성)
- 이미 준비되어 있는 환경의 이미지(AMI)를 그대로 사용하여 빠르게 인스턴스를 프로비저닝 할 수 있다
- 사용한 만큼의 요금 또는 장기 계약 등 필요에 맞춘 비용 관리가 가능하다
- I/O, 네트워크, 스토리지 타입, 컴퓨팅이나 그래픽 등 요구 사항에 맞춰 다양한 인스턴스 타입을 선택할 수 있다
- Linux/Windows 중 원하는 운영체제를 선택할 수 있다
*AMI(이미지) : 컴퓨터 내에서 바뀌어진 상태(프로그램 설치, 파일 저장, 설정 변경)를 저장하고 불러오는 기능, 백업 기능과 유사
<EC2 구성>
- 인스턴스 : 서버의 컴퓨팅에 해당
- EBS : 서버의 하드디스크에 해당
- ENI : 서버의 랜카드에 해당
2 .1 인스턴스
인스턴스란 AWS EC2에서 사용할 수 있는 가상 컴퓨터입니다. 인스턴스 하나는 가상 컴퓨터 하나입니다. 요금을 지불할 수록 사용자는 더 많은 인스턴스를 사용할 수 있습니다.
<인스턴스 유형>
컴퓨터는 컴퓨터마다 쓰임새가 다릅니다. 컴퓨터의 쓰임에 맞도록 선택할 수 있는 기능이 인스턴스 유형입니다. 인스턴스는 CPU, 메모리, 스토리지 및 네트워킹 용량의 다양한 조합으로 구성할 수 있습니다. 웹 서버용, 데이터 저장소용, 게임용, 로봇 제어용 등 사용자는 원하는 유형의 가상 컴퓨터를 선택할 수 있습니다.
<인스턴스 사이즈>
인스턴스 유형으로 가상 컴퓨터의 목적에 맞게 인스턴스를 설정했다면, 인스턴스의 성능을 고를 수 있습니다. EC2는 nano 부터 micro, small, medium, large, xlarge, 2xlarge와 같은 사이즈를 고를 수 있습니다. nano가 가장 성능이 안좋고 2xlarge가 가장 성능이 좋습니다. 인스턴스 사이즈가 클수록 더 많은 메모리, 더많은 cpu, 더많은 네트워크 대역폭을 가질 수 있습니다.
<인스턴스 이름>
각 인스턴스는 이름이 있습니다. 위의 사진은 예시입니다.
1. m : 범용 인스턴스 타입
2. 7 : 7세대
3. g : Arm 기반 AWS Gravition3 프로세서로 구동
4. xlarge : 인스턴스 사이즈 중 xlarge 사이즈
2. 2 볼륨, EBS
AWS에서 볼륨이란 데이터를 저장하는 역할을 합니다. 볼륨은 EBS(Elastic Block Storage)의 가장 기본적인 형태를 의미합니다. EBS는 클라우드에서 사용하는 가상 하드디스크(HDD)입니다.
인스턴스는 로컬 인스턴스 스토리지와 EBS라는 외부 스토리지로 구성되어있습니다. 로컬 스토리지에 저장된 데이터는 인스턴스 수명에 따라 삭제되지만 EBS는 외부에 저장되어있기 때문에 수명과 상관없이 데이터가 유지됩니다. 따라서 인스턴스가 삭제되더라도 다른 인스턴스에서 사용이 가능합니다. 또한 암호화도 가능하며 snapshot을 생성해서 AMI와 같이 백업도 가능합니다.
<EBS 볼륨 유형 타입>
- 범용(General Purpose of GP3) : SSD
- 프로비저닝 된 IOPS(Provisioned IOPS or io2) : SSD
- 쓰루풋 최적화(Throughput Optimized HDD or st1)
- 콜드 HDD(SC1)
- 마그네틱(Standard)
2.3 네트워크
AWS는 AWS VPC라는 AWS 전용 가상 네트워크를 이용합니다. VPC의 cidr 범위에서 더 세밀하게 공간을 나눈 서브넷에 EC2를 작성합니다. 클라우드 컴퓨팅답게 네트워크 가용 영역을 다르게 사용할 수 있으며 여러개의 인스턴스를 여러개의 가용 영역에 걸쳐 생성할 수 있습니다.
인스턴스의 IP 주소는 VPC 내에서만 통신이 가능한 프라이빗 IP가 저장됩니다. 이때, 외부 인터넷과 통신하게 위해서 넷 게이트웨이(NAT Gateway)를 이용해서 통신해야합니다. 인스턴스의 퍼블릭 IP 주소의 경우 인스턴스가 생성되면 자동으로 만들어지거나 작성한 탄력적 IP주소를 인스턴스에 연결하여 부여할 수 있습니다.
3. AWS EC2 인스턴스 만들기
AWS에 회원가입을 한 후 AWS Console Home에 접속합니다. 콘솔에서 우측 상단 본인 이름 옆에 지역을 꼭! 자신이 위치한 지역으로 바꿔야합니다. 저는 서울로 변경했어요. 그리고 검색창에 EC2를 검색합니다. 그럼 다음과 같은 창이 뜹니다. 여기에서 EC2를 선택합니다.
그럼 이 화면이 나올텐데 인스턴스 시작! 버튼을 눌러줍니다.
인스턴스 생성 화면입니다. 이름은 원하는 대로 설정하면 됩니다.
어떤 운영체제를 사용할 것인지 선택합니다. 저는 우분투를 사용하겠습니다.
그 다음 인스턴스의 사이즈를 고르고 인스턴스에 접근할 키페어를 선택합니다. 처음이시라면 새로운 키페어를 만드시면 됩니다. 키페어는 잃어버리시면 절대 안됩니다.
그 다음 네트워크를 설정합니다. 보안그룹에서는 포트를 열어주는 작업을 합니다. 생성해놓은게 없으시다면 새로 하나 생성하시면 됩니다. SSH 트래픽같은 경우에는 다른 사람들과 함께 서버를 관리할 예정이면 위치 무관으로 선택하시면 됩니다.
볼륨 또한 기본으로 선택하시면 됩니다. 더 높은게 필요하시다면 선택하세요!
그럼 인스턴스가 생성되었습니다.
그 다음 포트번호를 열어줘야 합니다. 좌측에서 보안그룹을 누르면 인스턴스를 만들때 같이 만들었던 보안그룹이 있습니다. 인바운드 규칙 편집을 누르시고 원하시는 포트를 열어주시면 됩니다.
제 출석체크 자동화 서비스 보안은 다음과 같이 열어놨습니다.
4. 원격접속하기
인스턴스 화면에서 연결을 누릅니다.
그럼 이 화면이 나타날텐데요. 가장 쉽게 연결하는 방법은 바로 EC2 인스턴스 연결항목에서 연결 버튼을 눌러서 웹사이트에서 바로 접근하는 것입니다. 연결을 누르면 웹페이지에서 터미널 창을 들어갈 수 있을텐데요!! 거기에서 git clone을 통해서 배포한 서비스를 불러오고 pm2로 실행시키면 된답니다~! 로컬에서 실행시키면 localhost:3000에서 접근할 수 있었지만 인스턴스에서 실행시키면 퍼블릭 IP에서 개발한 것을 볼 수 있습니다!!!
이 방법 말고도 저는 제 노트북 터미널에서 SSH로 접근하기도 합니다~!!
이상으로 AWS EC2 배포하기 마치겠습니다!! 감사합니다!
제일 중요한건 포트를 잘 열어줘야한다는 점이에요!!!!!!! 저는 보안그룹에서 포트를 제대로 안열어서 애먹었습니다ㅠㅠㅠ
'👩🏻💻개발공부 > AWS' 카테고리의 다른 글
Java Spring Boot EC2에 배포하기 (0) | 2024.03.23 |
---|---|
[Nginx] NodeJS, React 서버 배포하기 (0) | 2023.07.24 |
데이터베이스(MariaDB,MySQL) 서버에 올려서 공용으로 사용하기 (0) | 2023.07.19 |
AWS EC2 인스턴스 인바운드 규칙 편집 (0) | 2023.07.18 |
클라우드 컴퓨팅(Cloud Computing)이란? (0) | 2023.06.01 |
- Total
- Today
- Yesterday
- AWS
- 운영체제
- 해커톤
- 백엔드 개발
- 스페인
- 프로젝트
- 혼공
- MySQL
- Linux
- 자바스크립트
- 혼공단 SQL
- JavaScript
- Signal
- nodejs
- 혼공단
- 혼공단 9기
- C++
- 교환학생
- 개발일지
- 혼공학습단
- 스페인 교환학생
- SQL
- googleapis
- JS
- 개발
- 공룡책
- 리눅스
- Process
- 깃 예제
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |