-
TIL.76 AWSTIL 2020. 12. 23. 16:51728x90
AWS란?
AWS는 Amazon Web Service의 줄임말 입니다. AWS는 소위 클라우드 서비스라고도 합니다. 클라우드 서비스는 서버 등의 인프라스트럭쳐를 필요한대로 on demand로 사용할 수 있는 서비스 입니다. 즉, 유저가 직접 서버를 구입하고 설치할 필요 없이 AWS상에서 클릭 몇번으로 서버를 구축하고 사용할 수 있습니다.
웹서비스 배포를 위한 AWS 필수 개념
AWS가 제공하는 기능들은 굉장히 방대하고 다양합니다. 그 중 일반적으로 많이 사용되는 개념과 기능들은 다음과 같습니다.
- EC2
- Security Group
- RDS
- Load Balancer (ALB)
- Route 53
- S3
EC2
- Elastic Compute Cloud
- AWS 상에서 사용하는 Server. EC2 서버에 API를 배포하게 된다.
- EC2는 다양한 사양 옵션을 제공한다. t2.nano (CPU 1, 0.5 GB memory) 부터 x1.32xlarge (CPI 128, 1952 GB) 까지 다양하게 제공함으로 필요한 사양의 EC2 인스턴스(instnace)를 선택해서 사용하면 된다 (물론 사양이 좋을 수록 비싸다).
Secuirty Group
- EC2 인스턴스에 대한 네트워크 트래픽을 제어하는 가상 방화벽 역활을 한다.
- 즉 security group 설정을 해줘야 EC2 인스턴스에 HTTP와 SSH 접속이 가능하다.
RDS (Relational Database Service)
- AWS의 database 서비스
- RDS를 사용하면 사용자가 직접 서버를 생성해서 데이터 베이스를 설치하고 설정하고 관리 하지 않아도 된다.
- 그러면서 동시에 비용도 더 저렴하다. 사용자가 직접 데이터 베이스를 설치하고 운영하는 것보다 RDS를 사용하는것이 더 저렴함. 즉, RDS를 사용 하지 않을 이유가 거의 없다.
Load Balancer
- 로드발란서는 HTTP 요청들을 여러 서버에 분산할때 사용된다.
- HTTP 요청이 많을때는 서버 하나만으로 모두 처리 하기 힘들기 때문에 서버 수를 늘리는것이 일반적이다. 그럼으로 여러 서버를 실행하고 로드발런서가 HTTP 요청들을 서버들에 분산 해주는 형태로 시스템이 구성된다.
Route 53
- AWS의 DNS 서비스.
- API 시스템을 실제 도메인과 연결 시키주는 기능을 제공한다.
AWS S3
- AWS S3(Simple Storage Service)는 이름 그대로 파일을 쉽게 저장할 수 있는 공간을 제공하는 서비스.
- 파일을 저장 할 수 있을 뿐만이 아니라 파일마다 고유 주소를 부여해주기 때문에 S3에 저장한 파일을 웹상에서 쉽게 읽어들일수 있다.
- 주로 사이트상의 이미지들을 저장하고 사이트에서 읽어들여 렌더링 해주는데 사용한다.
AWS Service
AWS에서는 아래 말고도 다양한 서비스를 제공하고 있다.
EC2(Elastic Compute Cloud) - 몇 분안에 구동 가능한 가상 서버.
VPC (Virtual Private Cloud) - AWS 네트워크 망안의 사용자 전용의 사설 네트워크망.
S3(Simple Storage Service) - 파일 업로드 및 공유
RDS(Relational Database Service) - 클라우드에서의 데이터베이스 관리
ELB(Elastic Load Balancing) - 서버로 들어오는 트래픽을 골고루 여러개의 머신으로 전달 (여기서 Load = 내 서버가 받는 부하)
RDS(Relational Database Service)
AWS RDS는 여러 데이터베이스를 제공한다. 그중 MySQL 사용법을 알아보도록 하자
(다른 데이터베이스들도 크게 다르지 않다).
MySQL
1.RDS 서비스를 선택한다.
2. 먼저 MySQL 설정 파일을 만들어야 한다. 직접 안만들어도 default 설정 파일이 있지만
utf-8 인코딩 설정을 해줘야 한국어가 저장 가능하다. 먼저 "Parameters groups" 페이지로 가자.
3. "Create parameter group" 옵션을 선택하자.
4. "Parameter group" 설정 파일을 생성하자. Group name과 Description은 자유롭게 정하면 된다.
"Paramter group family"는 생성하는 데이터 베이스와 버전에 맞게 지정해야 한다.
우리의 경우 mysql5.7 데이터베이스를 생성할 예정이니 "mysql5.7"로 하자.
5. 방금 생성한 설정 파일을 수정 하자.
6. 우리가 설정할 parameters는 다음과 같다.
- chracter_set_client
- utf8mb4로 변경
- chracter_set_connection
- utf8mb4로 변경
- chracter_set_database
- utf8mb4로 변경
- chracter_set_results
- utf8mb4로 변경
- chracter_set_server
- utf8mb4로 변경
- collation_connection
- utf8mb4_general_ci로 변경
- collation_server
- utf8mb4_unicode_ci로 변경
위의 파라미터를 다 설정 하였으면 "Preview changes"를 눌러서 수정사항 리뷰를 하자. 아래와 같이 나와야 한다.
모든게 정확하면 "Save Changes"를 눌루자
7. 이제 MySQL 데이터 베이스를 새로 생성하자
8. MySQL을엔진으로 선택하자. "Only enable iptions eligible for RDS Free Usage Tier" option을 체크해서
무료로 사용할 수 있는 사양이 자동으로 선택되도록 하자.
9. DB 세부사항 설정을 하자. 거의 대부분 default 값 그대로 두면 된다.
맨 아래 settings 섹션에서 master username과 비밀번호 그리고 데이테베이스 이름만 설정하면 된다.
10. 고급설정 페이지로 넘어가자. 먼저 Publc accessability 옵션을 yes로 설장하자.
그리고 Database options 세션에 "DB parameter group"을 방금 생성한 파라미터 설정 파일로 변경해주자.
나머지는 default 값 그대로 하면 된다. 끝나면 "Create database" 버튼을 눌루면 마무리 된다.
11. 이제 "Instances" 페이지에 가서 방금 생성한 데이터 베이스 대쉬보드 페이지로 가자.
참고로 데이터 베이스가 사용 준비되기 까지 몇분 이상 소요 될 수 있다.
12. 먼저 Endpoint를 확인하자.
이 주소로 database에 접속 할 수 있다. 그리고 Security groups링크를 클릭하하자.
13. Security group 설정을 변경하여 어디서든 접속이 가능하게 하자.
원래는 데이터베이스를 이렇게 어디서든 접속 가능하게 열어놓으면 안된다. 해킹의 위험이 있다.
14. 생성된 데이터베이스에 접속한후 데이터베이스와 테이블들을 생성하자.
mysql -h temptest.cj5v1k6zfree.ap-northeast-2.rds.amazonaws.com -u root -p
용어 정리
가상 머신 : 서버를 의미한다
스토리지 : 저장소 --> 대표적 AWS 스토리지 "S3" 가 있다 (구글드라이브와 비슷한 역할을 한다)
네트워크 인프라 : 인터넷, 전화, 공유기등등 --> 백업 혹은 파워 서플라이를 신경쓰지 않아도 된다.
SaaS : Software as a Service - SES, SQS
출처 : wecode /stackoverflow
> wecode | 위코드 | 코딩 부트캠프 | 코딩교육
728x90'TIL' 카테고리의 다른 글
TIL.78 JWT Token 유효시간 설정 (1) 2020.12.26 TIL.77 List Comprehension의 속도가 빠른이유 (0) 2020.12.24 TIL.75 RSETfulAPI (0) 2020.12.22 TIL.73 Github / Git 충돌(Conflict) 발생 해결 (0) 2020.12.20 TIL.72 select_related 와 prefetch_related (1) 2020.12.19