Introduction
Use SPA (Single Page Application) serve strategy to deploy data on web.
- 단일 페이지 애플리케이션...단일 페이지로 구성. 서버 사이드 렌더링 보다 배포가 간단.
- 모든 정적 리소스를 최초에 한번 다운로드. 이후 요청시 갱신에 필요한 데이터만을 전달 받아 갱신. 트래픽 감소.
- 트래픽 감소와 속도, 사용성, 반응성 향상.
- 사용자 경험 향상
- 단점
- 초기 구동속도: 최초에 한번 다운로드하기에 초기 구동 속도가 상대적으로 느림.
- SEO(검색엔진 최적화): 자바스크립트 기반 비동기 모델(클라이언트 렌더링 방식). 웹페이지보다는 애플리케이션의 적합.
How should we deploy then?
S3
- Amazon Simple Storage Service 는 인터넷용 스토리지 서비스.
- 웹 서비스 인터페이스를 사용해 웹에서 데이터를 저장 및 검색.
- 데이터 스토리지 인프라에 액세스도 가능.
- 기능 세트를 사용하여 구현.
- 버킷 만들기
- 데이터 저장
- 데이터 다운로드
- 권한
- 표준 인터페이스
- 데이터 일관성 모델
- PUT에 대한 한 가지 주의 사항을 제시 => 읽기 후 쓰기 일관성 제공.
- Provides eventual consistency
- Updates to a single key are atomic. Will never return corrupted or partial data.
- Replicating changes in data after storage can take some time...may list the deleted object before all process is finished.
- Does not support object locking. When two same requests are made, the one with the latest timestamp wins.
버킷
- S3에 저장된 객체에 대한 컨테이너. 포장 박스? 담은 박스
- 네임 스페이스를 최상위 수준으로 구성
- 스토리지 및 데이터 전송 요금을 담당하는 계정 식별
- 엑세스 제어에 사용
- 사용량 보고를 위한 집계 단위
객체
- 저장되는 기본 개체.
- 객체 데이터와 메타데이터로 구성. (데이터는 S3에서 볼 수 없음)
- 메타 데이터는 객체를 설명하는 이름-값 페어의 집합.
- 키 및 버전 ID를 통해 버킷 내에서 고유하게 식별
키
리전 (Regions)
- 버킷을 저장할 지리적 AWS 리전을 선택 가능.
- 사용자가 명시적으로 객체를 다른 리전으로 전송하지 않는 한 해당 리전을 벗어나지 않음.
Features
- 스토리지 클래스: 사용 사례에 따라 다양하게 설계된 스토리지 클래스가 있음.
- S3 Standard: 자주 액세스 하는 데이터의 범용 스토리지 용
- S3 Standard_IA: 수명이 길지만 액세스 빈도가 덜한 데이터
- GLACIER: 장기적 아카이브
버킷 정책
- 버킷 및 객체에 대한 중앙 집중식 액세스 제어를 제공
작업
일반적인 작업
- 버킷 만들기: 객체를 저장할 고유한 버킷을 만들고 이름 지정
- 객체 작성: 객체를 만들거나 덮어써서 데이터 저장. 버킷 네임스페이스에 고유한 키를 지정. 엑세스 제어를 지정하는 것도 굳.
- 객체 읽기: 데이터를 다시 읽기. HTTP 또는 BitTorrent로 데이터 다운로드 가능.
- 객체 삭제
- 키 나열: 버킷 중 하나에 포함된 키 나열. 접두사로 목록 필터링 가능.
REST 인터페이스
- REST API => HTTP 인터페이스: 표준 HTTP 요청으로 버킷과 객체 생성, 가져오고 삭제
- HTTP를 지원하는 임의의 도구 키트로 REST API 사용 가능. 객체를 익명으로 읽을 수 있어야 함.
- *SOAP 지원은 중단되었지만 (HTTP), HTTPS 를 통해 계속해서 사용할 수 있다. 하지만 새로운 Amazon S3 기능은 SOAP 에 대해 지원되지 않는다.
Amazon EC2
- Amazon Elastic Compute Cloud 는 AWS에서 확장식 컴퓨팅을 제공.
- Works the role of localhost.
- 가상 서버 구축, 보안 및 네트워크 구성 및 스토리지 관리.
- 규모를 확장하거나 축소도 가능.
기능
- 인스턴스: 가상 컴퓨팅 환경
- Amazon 머신 이미지 (AMI): 서버에 필요한 운영체제와 여러 소프트웨어들이 구성된 상태로 제공되는 템블릿을 사용해서 인스턴스를 쉽게 만들 수 있다.
- 인스턴스 유형: 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러가지 구성 제공
- 키 페어를 사용하여 인스턴스 로그인 정보 보호(AWS는 퍼플릭 키 저장 후 개인 키를 안전한 장소에 보관)
- 인스턴스 스토어 볼륨: 임시 데이터 저장용 스토리지 볼륨. 인스턴스 종료시 삭제.
- Amazon Elastic Block Store(Amzon EBS 볼륨)을 사용해 데이터 저장.
- EC2의 리소스를 다른 장소에서 액세스 할 수 있게 리전 및 가용 영역 제공
- 보안 그룹 사용, 방화벽 기능
- 탄력적 IP 주소 (EIP): 동적 클라우드 컴퓨팅을 위한 고정 IPv4 주소
- 태그: 사용자가 생성하여 Amazon EC2 리소스에 할당할 수 있는 메타데이터
- 가상 네트워크 (Virtual Private Clouds)
RDS
- Amazon Relational Database Service(Amazon RDS): 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹서비스
- 데이터베이스 서비스 관리 작업을 해줌.
개요
- CPU, 메모리, 스토리지 및 IOPS가 따로 분할 돼 독립적으로 확장 가능.
- 백업, 소프트웨어 패치, 자동 장애 감지 및 복구 관리.
- DB 인스턴스에 대해 shell 액세스를 제공하지 않음
- 자동화된 백업 수행 혹은 고유한 백업 스냅샷을 수동으로 만들 수 있음. 데이터 베이스 복원 가능.
- 동기식 보조 인스턴스에서 가용성을 높일 수 있음.
- MySQL, MariaDB, PostgreSQL, Oracle 및 Microsoft SQL Server 같은 데이터 베이스 제품 사용 가능.
- DB 패키지 보안 외에 AWS Identity and Access Management(IAM) 을 사용해 RDS 데이터 베이스에 액세스할 수 있는 사용자 제어 가능. 가상 사설 클라우드에 넣어 데이터 베이스 보호 가능.
DB 인스턴스
- RDS의 기본 빌딩 블록.
- 격리된 데이터 베이스 환경
- 생성하고 수정 가능.
- 계산 및 메모리 용량은 해당 DB 인스턴스 클래스에 의해 결정
리전 및 가용 영역
- 가용성이 높은 데이터 센터 시설에 하우징.
- 리전마다 가용 영역은 분리 되어 다른 영역의 장애에서 격리.
- 가용 영역은 다른 영역에 대해 저렴하고 지연 시간이 짧은 네트워크 연결 제공
보안
- DB 인스턴스에 대한 액세스 제어.
- 지정 IP 주소 범위 또는 EC2 인스턴스에 액세스 할 수 있도록 허용하는 방법으로 제어
- DB 보안그룹 & VPC 보안 그룹 & EC2 보안 그룹
RDS 작업 방법
- AWS Management 콘솔
- 웹 기반 사용자 인터페이스
- 콘솔에서 DB 인스턴스 관리
- 명령행 인터페이스
- Amazon RDS 사용 프로그래밍
- RDS API 레퍼런스
- AWS 소프트웨어 개발 키트 사용
- 인증, 재시도 로직, 오류 처리 등 저레벨 정보 처리.
- 애플리케이션 로직에 집중 가능