클라우드 서비스 모델
1) IaaS (Infrastructure as a Service)
클라우드에서 인프라를 제공해주는 서비스
- 인프라는 가상머신(Ubuntu, Amazon Linux, Windows Server 등), 네트워크(VPC, Subnet), 스토리지(S3)
- AWS에서는 HW, Network, Security 등만 책임지고, 나머지는 사용자의 책임 (OS, Application, Data, Platform 등등)
- 장점 : 대부분의 통제가 가능하고 가격이 저렴함
- 단점 : 사용자가 확장, 관리(백업, 용량, 보안, 장애 등)해야 함
2) PaaS (Platform as a Service)
클라우드에서 플랫폼을 제공해주는 서비스
- 플랫폼은 개발자가 개발할 수 있는 환경까지 제공해줌 (RDS)
- AWS에서는 HW, Network, Security + OS + Application설치 및 관리,
- 사용자는 Application을 사용하기만 하면됨, Data에 대한 책임
- 단점 : OS 및 Application에 대한 완전한 통제권을 갖기 어려움 (root권한이 없음, admin/girlsday 등을 만들어서 사용)
- 장점 : 관리를 해주는 부분은 신경을 안써도 됨 (백업, 용량, 보안, 장애 관리 등을 AWS에서 해줌)
Paas-ta : 정부에서 개발자들이 창업을 할 수 있는 환경을 만들어줌
3) SaaS (Software as a Service)
클라우드에서 소프트웨어를 제공해주는 서비스
- 사용자는 ID/PW등 인증만 하면 모든 서비스를 이용할 수 있음, Client용 SW만 있으면 됨.
- 단점 : 의존성 문제로 마이그레이션하기 어려움, 서비스가 많기에 가격이 비쌈, Customizing 하기 어려움.
- 장점 : IT인력이 많이 필요하지 않음
- 주로 커피/치킨/피자 프랜차이즈, 무역(의류, 수입차 등), 고객관련 Biz등이 이용
RDS
- RDS(Relational Database Service) 관계형 데이터베이스 서비스
- AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스
- Database 서버를 클라우드에서 동작, 이용자는 Database를 사용(PaaS)
장점 :
DB서버 관리필요하지 않음
DB는 Master DB에서 쓰기를 수행하여 데이터 일관성 때문 로드밸런서를 사용의 어려움, 그렇기에 Master & Slave 구조를 사용하지만 한계가 있기에 대용량을 사용한다. RDS를 사용하면 증축이 용이 하다는 장점이 있다. ★★★
Master & Slave 구조: Master는 등록/수정/삭제 쿼리 요청이 있을시 Binarylog를 생성하여 Slave로 전달, Slave DB는 Master DB에서 정보를 받고 사용자들이 읽기 쿼리를 처리해주며 Master의 정보를 복제해놓는 역할을 담당. 쿼리 요청을 분담함으로써 DB 부하를 분산
단점 :
- Database에 대한 root권한이 없고 권한이 높은 사용자 권한만 주어짐
- Database가 설치된 서버와 OS에 대한 권한 없음★★
사전 조건
- RDS는 가용영역이 2개 이상이 필요함
- VPC에서 DNS 호스트 이름 편집을 활성화해야 접속할 수 있는 URL을 생성이 가능하다. (VPC > DNS 호스트 이름 편집> 활성화)

RDS에 연결 방법
- Public IP 부여 : EC2와 연결 안됨
- EC2와 연결 : 지정한 EC2가 필요하므로 EC2를 미리 생성하고 연결해야 한다. 이 경우 Public IP를 Workbench 사용 불가하며 RDS를 접속하기 위해서는 EC2로 먼저 접근해야하며 접근방법으로는 SSH로 접속하고 VPN을 사용하는 방법이 있다.
만드는법
RDS > 데이터베이스 생성
-
표준생성
-
엔진 유형

-
설정

- 식별자는 DB인스턴스 전역에서 고유한 식별자 설정
- 마스터 사용자 이름과 암호 설정
-
연결

- 컴퓨터 리소스 > 지금은 EC2와 연결을 안함
- VPC설정
- 퍼블릭 엑세스 IPv4의 퍼블릭 주소를 할당의 여부
- EC2와 연결하게 되면 퍼블릭 엑세스를 하지못한다.
-
생성
3-tier 실습

Client
Server - EC2
Datavase - RDS
- EC2 생성
- RDS 생성
- 엔진 유형
- 설정
- 연결

- 생성 후 database 선택 후 endpoint 확인

- EC2에서의 작업
EC2 > 연결에서 ssh 클라이언트에서 퍼블릭 주소 확인

$ sudo apt update
$ sudo apt install vim
$ sudo apt install apache2
$ sudo apt install php php-mysql php-common php-gd php-fpm php-xml php-json php-curl git
$ cd /var/www/html
$ sudo git clone https://github.com/gnuboard/gnuboard5
$ cd gnuboard5/
$ sudo mkdir data
$ sudo chmod 707 data
$ sudo service apache2 restart
$ sudo apt install mysql-client
$ sudo mysql -h [엔드포인트] -u [RDS계정] -p
(gnuboard, board, 권한부여)
- vim php gnuboard 등만 설치 후 EC2 접속 상태에서 RDS 엔트포인트 접속 RDS계정은 RDS 만들 때 사용한 마스터 사용자
- RDS에서의 작업
$ sudo mysql -h [엔드포인트] -u [계정명] -p
mysql> create database gnuboard;
mysql> create user board@localhost identified by 'cyber12#$';
mysql> grant all privileges on gnuboard.* to board@localhost;
- 데이터베이스 gnuboard 생성 후 user 생성하여 권한 설정
- Gnuboard에서의 작업

- host는 [RDS의 endpoint]:[포트번호]