1. 스토리지 서비스 - S3
객체 : 버킷에 저장되는 단위
- 객체는 S3의 버킷에 저장되는 하나의 데이터 의미
- 키, 데이터, 메타 데이터로 구성
- 객체 하나의 크기는 1 byte ~ 5TB
- S3 스토리지 클래스에 따라 저장 비용/검색 속도 차이 발생
- S3는 별도의 파일 시스템에 의해 객체 관리 X
- 버킷에 별도 폴더 생성 가능
- 폴더는 일반적으로 말하는 디렉토리(directory)와는 다른 의미
버킷에 데이터 업로드
- S3 메뉴 -> 버킷 -> 사용자 버킷 -> 폴더 -> 업로드
- 필요시 폴더 생성하여 보관
데이터 보관시
- 대상 세부 정보
- 권한
- 속성 : S3 스토리지 클래스 결정
- 서버측 암호화
- 추가 체크섬
- 태그
- 메타 데이터 : 데이터에 대한 설명 정보, key:value 형식으로 작성
- 유형 : 시스템 정의 / 사용자 정의 중 택 1
- 키
- 값
- 버킷에 저장된 객체에 접근하기 위해서는 해당 객체의 객체 URL을 통해 접근
- 객체 URL 형식 : 버킷명.S3.리전.amazonaws.com/[폴더/...]/객체명
S3 기능
- 객체 저장
- 멀티 파트 업로드
- 버전 관리
- 수명 주기 관리
- 정적 웹 서비스(사이트) 호스팅
- 정적 웹 서비스 : Front-end 기술 (HTML/css/JavaScript)을 활용하여 작성
- 동적 웹 서비스 : Front-end + Back-end (JSP/php/Node.js/Python 등) 활용하여 작성
- 전송 속도 향상
S3를 이용한 정적 웹 서비스 호스팅
S3 메뉴 -> 버킷 -> 버킷 만들기
- 버킷 이름 : AWS 전체에서 고유한 이름 명시
- AWS 리전 결정
- 객체 소유권 : ACL 비활성화 선택
- 퍼블릭 액세스 차단 설정 -> 일반 버킷 생성과의 차이점
모든 퍼블릭 액세스 차단 - 해제 (비활성화)
퍼블릭 액세스 확인
- 버킷 버전 관리 - 비활성화
- 태그
- 기본 암호화 - 비활성화
- 고급 설정 : default값 사용
버킷 속성 변경
정적 웹 사이트 호스팅 편집
- 정적 웹 사이트 호스팅 : 활성화
- 호스팅 유형 : 정적 웹 사이트 호스팅 선택
- 인덱스 문서 : 기본 페이지 파일명 기술
버킷 권한 변경
버킷 정책 편집
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::버킷명/*"
]
}
]
}
- 버킷 정책은 JSON 형식, Bucket-Name을 정적 웹 사이트 호스팅에 사용할 버킷 이름으로 변경 후 저장
- 정책을 통해서 버킷에 대한 권한
- 파일 업로드
- 버킷 속성의 정적 웹 사이트 호스팅 항목의 버킷 웹 사이트 엔드포인트를 통해 정적 웹 사이트 접속 가능
- 버킷 웹 사이트 엔드포인트 형식 : <버킷이름>.s3-website.<리전>.amazonaws.com
- 필요시 별도 도메인과 연결하여 사용 가능 -> Amazon Route53 서비스 활용
(참고1) (참고2) (참고3)
S3를 이용한 정적 웹 사이트(서비스) 호스팅시 주의 사항
- public으로 content를 제공하므로 항상 보안 고려
- S3 정적 웹 사이트(서비스) 호스팅은 HTTPS 접속 허용 X
- S3 정적 웹 사이트 호스팅 주소가 일반적인 DNS에 비해 길고 S3를 사용하고 있다는 점이 노출되므로 Amazon Cloud Front (CDN) 또는 Amazon Route 53 (DNS Service)를 활용
AWS CLI를 이용한 S3 제어
AWS Command Line Interface
- 커맨드 라인(명령 줄)에서 AWS의 API (Application Programming Interface, 단위 동작 수행 함수/명령)를 직접 호출할 수 있게 도와주는 유틸리티
- Python으로 만들어짐 -> 파이썬 실행 환경 필요
but AWS CLI 2부터는 별도 파이썬 실행환경이 없어도 동작 가능하게끔 패키지 개선됨
- Amazon Linux AMI는 기본적으로 AWS CLI가 설치됨
AWS CLI 설치
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo (./)aws/install
aws --version
AWS CLI 환경 설정
- 사용자 인증, 사용 리전 정보가 미리 설정되어 있어야 한다.
환경 설정 정보 저장 위치 및 파일
- 사용자 홈 디렉토리 : ~/.aws (히든 디렉토리)
- 환경 설정 파일
credentials
config
AWS CLI 환경설정을 위해서는 IAM 서비스의 사용자 인증정보 필요
- IAM 서비스 사용자 인증 정보 생성
- IAM 메뉴 -> 사용자 메뉴 -> 사용자 선택 -> 보안 자격 증명 탭 -> 액세스 키 만들기 선택 -> .csv 파일 다운로드
- .csv 파일을 다운로드 받지 않으면 해당 액세스 키는 사용 불가능
참고
- AWS Access Key ID : 액세스 키 파일 내용 입력
- AWS Secret Access Key ID : 액세스 키 파일 내용 입력
- Default region name : 사용 리전 이름 입력
- Default output format : 소문자로 입력 - JSON / YAML 중 택 1, 출력 결과 표시 형식
- AWS CLI 환경설정 파일
credentials 파일 : access key id / secret access key 저장
config 파일 : region 및 output format 저장
- 환경설정 파일에 프로파일 추가 가능
- 추가 프로파일 등록시 [프로파일명], 다음줄에 key=value 형식 (hash 형식)으로 등록 가능
- AWS CLI 명령 사용시 --profile 옵션 다음에 프로파일명을 적어주면 해당 프로파일 내용 적용
- 환경변수를 등록하여 환경설정 가능
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY_ID
AWS_DEFAULT_REGION
AWS_DEFAULT_OUTPUT
AWS CLI 명령으로 S3 제어
참고
- aws s3 ls : default region의 S3 bucket list 출력
- aws s3 sync s3://<버킷명><다운로드 위치> : S3 bucket으로부터 지정 위치에 데이터 다운로드
- aws s3 cp <업로드할 파일명> s3://<버킷명> : 지정한 파일을 S3 bucket에 업로드
- aws s3 rm s3://<버킷명>/<객체명> : 지정한 객체 삭제
버킷 삭제
버킷에 저장된 객체가 없어야 삭제 가능
S3 사용 적합한 경우
- 한번 쓰고 여러번 읽어야 하는 경우
- 데이터가 다양하고, 데이터 양이 지속적으로 증가하는 경우
- 사용자가 많고 데이터 접근이 일시적으로 급증하는 경우
S3 사용 부적합한 경우
- 여러번 쓰기 작업을 해야하는 경우
- 블록 스토리지가 필요한 경우
2. Database 개요
Database
- 데이터를 일정한 형식으로 저장 관리 like excel
- 테이블 형식 (2차원 구조)으로 저장 -> 테이블 집합
- 테이블은 필드(1차원 구조) 집합 -> 필드 집합
- 필드는 데이터 성격에 따른 자료형 (데이터 형태, 숫자/논리/문자/날짜)으로 데이터 저장
- DBMS (DataBase Management System)는 데이터베이스를 관리하는 시스템, DB Engine이라고도.
Database 종류
관계형 Database (Relational Database, RDB)
- 관계 이론에 따라 데이터 관리
- 정형화된 데이터를 관리할 때 편리
- SQL (Structure Query Language)을 이용하여 데이터 처리 (CRUD, 쓰기/읽기/수정/삭제) script
DDL (Data Definition Language) : DBA (Database Adminstrator) 사용
DCL (Data Control Language) : DBA (Database Adminstrator) 사용
DML (Data Manipulation Language) : CRUD 처리
비관계형 Database (No-SQL Database)
- 비정형 데이터 (이미지, 동영상, 음성, 자연어)에 대한 관리에 편리
- 프로그램에 의한 처리가 쉬움
- 별도의 처리용 script 부재
Database 사용 절차
- Domain에 대한 이해 -> 문제 이해
- Database 설계 -> Data Modeling
- DBMS 설치
- DBMS 유형
RDBMS : Oracle, MySQL, MariaDB, SQL Server, PostgreSQL
No-SQL DMBS : MongoDB
- HW 사양
- 설치 방법에 따른 설치
- DBMS 환경 설정 및 유지 관리
- Database 구축
- Applicaion을 이용한 Database 활용
AWS Database 사용
EC2 instance에 직접 DBMS 설치
전통적인 방법
- DBMS 설치 가능 사용의 EC2 instance 생성
- DBMS 환경 설정을 직접 수행해야 함
- DBMS 관리를 직접 수행해야 함
AWS RDS 서비스를 통한 Database 사용
serverless 방식 (완전관리형 서비스)
- AWS DynamoDB / Amazon DocumentDB : 비관계형 Database 서비스
3. Database 서비스 - AWS RDS
Amazon RDS (Relational Database Service) (참고1) (참고2)
- 관계형 DBMS를 AWS 환경에서 사용할 수 있도록 지원하는 완전관리형 Database 서비스 (serverless, Saas)
- DBMS에 대한 관리는 AWS에서 담당, 사용자는 DBMS 활용에만 집중
- RDS를 사용하면 EC2와 별개로 시스템 구성 가능
- DB instance : RDS에서 생성하는 DBMS
shell 사용 불가능, 별도 OS 지원 X인 AWS에서 관리하는 완전 관리형 서비스
RDS 서비스를 이용한 DB instance 생성
RDS 메뉴 -> 데이터베이스 메뉴 -> 데이터베이스 생성
- 데이터베이스 생성 방식 -> 표준 생성 선택
- 엔진 옵션 (DB 엔진 결정) 선택
- 템플릿 결정 -> 프리 티어 선택
- 설정
- DB instance 식별자 입력
- 마스터 사용자 이름 입력
- 마스터 암호 입력
- 인스턴스 구성 : DB instance HW 사양
- 스토리지 : Database가 실제로 저장되는 스토리지 사양
- 연결 : DB instance 네트워크 위치 결정
- EC2 컴퓨팅 리소스에 연결 X 선택
- VPC 선택
- VPC의 DNS 확인과 DNS 호스트 이름이 활성화되어야 함!
- RDS 생성 위해서는 VPC에 서로 다른 가용영역의 2개 이상의 서브넷 구성 필요
- 퍼플릭 액세스 : 허용
- VPC 보안 그룹 : 새로 생성
- 데이터베이스 인증 : 암호 인증
- 추가 구성
4. TIF
오늘도 실습 초반에 버벅댔지만 그래도 금방 수습하고 따라잡을 수 있었다. 갈수록 대처능력?이 올라가는 기분. 간만에 이론이나 실습이나 크게 어려운 내용이 없는 하루였다.