[AWS] AWS
5 분 소요
지역과 가용구역
- Region: 전 세계 아마존 컴퓨터가 존재하는 곳, 서울에도 존재
- 웹사이트 주 사용자의 분포가 중요: 주 소비자가 일본인 경우 일본 인프라를 사용하는 것이 유리
- 가용구역: 하나의 지역에는 여러개의 가용구역이 존재한다. 자연재해 등으로 인한 장애 방지를 위함이다.
CDN(Contents Delivery Network)
- CloudFront는 AWS에 제공하는 CDN 서비스이다. 캐싱을 통해 빠른 응답을 보장한다. 전 세계 Edge Server를 두고 Client에 가장 가까운 Edege Server를 찾아서 Latency를 최소화한다.
- Origin Server: 원본 데이터를 가지고 있는 서버(S3, EC2 등)
- Edge Server: AWS에서 제공하는 전 세계에 퍼져있는 서비스, 캐싱 기능
- 데이터 전송이 발생하는 과정
- 클라이언트로부터 Edge Server로의 요청이 발생한다.
- Edge Server는 요청이 발생한 데이터에 대하여 캐싱 여부를 확인한다.
- 사용자의 근거리에 위치한 Edge Server 중 캐싱 데이터가 존재한다면 사용자의 요청에 맞는 데이터를 응답한다.
- 사용자의 요청에 적합한 데이터가 캐싱되어 있지 않은 경우 Origin Server로 요청이 포워딩된다.
- 요청받은 데이터에 대해 Origin Server에서 획득한 후 Edge Server에 캐싱 데이터를 생성하고, 클라이언트로 응답이 발생한다.
- Edge Server의 기본 TTL은 24시간이고 사용자의 설정에 따라 변경이 가능하다. (TTL 수정 시 Edge Server에 반영되는 시간이 한 시간 가량 소요)
- 이러한 캐시의 설정 후 반영 시간 때문에 각 개별 데이터에 대해서 invalidation API(특정 파일을 캐시에서 삭제하는 기능)을 통해 캐시를 삭제한다.
EC2 (Elastic Compute Cloud) 시작하기
소개
- 독립된 컴퓨터의 임대
- 인스턴스는 컴퓨터 1대를 의미
- 지역은 서울로 선택
- 원격으로 접속하여 제어 가능
인스턴스 타입
- 여러가지 OS가 존재
- 여러가지 컴퓨터 사양: CPU, Memory, Network, 인스턴스 스토리지 (Type으로 구분)
인스턴스 장치 설정
- 임대 컴퓨터 설정
- 인스턴스 개수 설정
- 네트워크 설정
- 종료 방식: stop, terminate
- 스토리지 설정: 용량, 볼륨 유형, 인스턴스 삭제시 삭제 여부
태그와 보안그룹
- 인스턴스의 역할, 관리자 등
- 키값 형태
- 인스턴스 접근 권한
- 방화벽 역할
- 새로운 보안 그룹 생성 또는 기존 그룹에 인스턴스 추가
- 허용 가능한 여러가지 protocol 유형 선택 가능: SSH, HTTP, HTTPS, DNS 등
- Source를 통해 특정 IP 설정 가능
인스턴스 비밀번호 생성
- 파일로 비밀번호를 생성
- 인스터스 접속시 해당 비밀번호 필요
EC2 접속과 사용
OSX에서 리눅스 인스턴스로 접속
- 터미널을 통한 ssh 접속
chmod 400 aws_password.pem
: 특정 사용자에게 권한 부여 (UI 로도 가능)
- 인스턴스의 IP를 통해 접속
ssh -i "aws_password.pem" ID@IP
리눅스에서 웹서버 사용
sudo apt-get update
sudo apt-get install apache2
- 인스턴스의 IP 또는 DNS로 접속 가능
- 사용자의 접속을 위한 보안그룹 설정이 필요함(Source)
OSX에서 Windows 인스턴스로 접속
- 윈도우 운영체제로 인스턴스 생성
- 보안그룹 설정이 다름: RDP / HTTP 추가
- aws_password.pem 을 이용하여 password 생성
- App store에서 remote 앱 다운
- PC name: IP, User name: Administrator, password: …
- GUI로 원격 접속 가능
윈도우에서 웹서버사용
- iis 웹서버 install
- iis 웹서버 실행
- wwwroot에 index.html 생성
AMIs
- Amazon Machine Image: 이미지란 인스턴스의 특정시점의 스냅샷을 의미
- 해당 이미지로 새로운 인스턴스 생성 가능
- 이미지 생성시 인스턴스 중단
AWS Marketplace (Wordpress 설치)
- 다른 사람이 만든 이미지로 인스턴스 런칭
- Docker Hub의 이미지의 개념과 유사
- 운영체제도 aws에서 기본으로 제공하는 AMI이다.
- 이미지의 version, region 선택 가능
- 인스턴스 유형 선택 가능
- Key pair name 을 통해 ssh 인스턴스 접속 가능
- App 접속의 경우 App의 ID와 password 알아낸 후 접속
- DB도 마찬가지 방법으로 접속 가능
AWS를 이용한 자유로운 규모 확장과 축소
Scalability
- 가상머신: 물리적기계 + 운영체제 + 가상머신(소프트웨어로 만든 기계) + 여러가지의 운영체제
- VMWare, VirtualBox 등
- AWS도 물리적 기계가 필요
- 스타트업의 경우 여러가지 EC2의 사양을 선택 효율성 증대 가능
- 큰 회사의 경우 고유 서버 시스템을 갖고 있을수 있지만 여러개의 EC2를 생성하여 서비스 처리 가능
- AWS 활용시에 트래픽에 따른 융통성 있는 EC2 관리가 가능
스트래스 테스트
- 수비: wordpress(marketplace에서 이미지를 통한 EC2 생성)
- 공격:
sudo apt-get update
, sudo apt-get install apache2-utils
, ab -n 요청횟수 -c 동시접속자수 웹서버주소
- 요청, 동시접속, 총소요시간, 실패, 초당처리속도, 개별처리속도 -> 테이블 작성
- 동시접속이 커질수록 개별처리속도가 비례하여 증가
- 총소요시간과 초당처리속도는 유의미한 차이가 없다.
Elastic IPs
- 현재 인스턴스를 이미지화 하고 해당 이미지로 다시 높은 사양의 인스턴스 생성
- 인스턴스를 멈춘후 다시 시작시 새로운 IP 할당, 새로운 인스턴스 생성 후에도 마찬가지
- Elastic IP를 통해 위와 같은 문제를 해결 가능(단 유료이다.)
- Allocate New Address를 통해 IP 할당 가능
- Associate Address를 통해 생성된 EC2 인스턴스에 일관된 IP 부여 가능
인스턴스 교체
- 이미지 생성후 해당 이미지로 새로운 인스턴스 생성
- Elastic IP를 기존 인스턴스에서 뺏어온후 새로운 인스턴스에 부여
Scale out 소개
- 단일 컴퓨팅의 한계를 돌파
- 여러대의 컴퓨팅을 연결
Scale Out의 흐름
- Web Server -> Middle ware -> Database(톰캣 -> 스프링 부트 -> mysql)
- 트랙픽 처리의 가장 간단한 방법은 scale up
- Web Server, Middle ware, Database를 별도의 EC2로 변경
- 경우에 따라 Database, Middle ware, Web Server scale up 가능
- ELB를 이용하여 여러 http 요청을 각각의 Web server로 적절히 분산 가능
ELB 생성
- Elastic Load Balance
- 부하를 적절히 분배
- ELB(Load Balancer Port) 생성후 EC2(Instance Port)와 연결
- ELB와 EC2는 http 방식으로만 통신 가능
- Health Check: ELB에서 EC2와의 연결성을 검사(/index.html 다운 가부로 검사하므로 해당 웹서버에 해당 파일이 존재해야 한다.)
ELB 적용
- 웹서버가 설치된 EC2 여러대 준비
- 해당 EC2를 ELB와 연결
- ELB 주소로 접속
ELB 주의사항
- 각 인스턴스별 DB의 경우 하나의 DB로 통합 필요
AutoScaling 소개
- scale out 자동 설정
- 인스턴스화 이미지 필요
- 이미지로 인스턴스 생성: Launch Configuration
- Launch Configuration: 인스턴스 생성시 사용될 (내가 미리 생성해둔)이미지 선택, 인스턴스 유형 선택, 보안 그룹 설정
AutoScaling Group 생성
- 생성한 인스턴스를 어떠한 조건에서 생성할 것인지에 대한 설정
- 가용구역 설정
- Load Balacing: ELB에 연결
- Configure scaling policies: 그룹의 인스턴스 개수 설정(keep / adjust)
- adjust: CPU Utilization의 경계를 설정하여 알람 설정이 가능하고 세밀한 인스턴스 자동 생성 설정이 가능하다.
- CloudWatch에서 미리 설정한 알람 확인 가능
S3
- Simple Storage Service: 파일을 저장하는 서비스
- 내구성이 뛰어난 인프라, 중복 저장
- 융통성 있는 가격 정책
- Bucket: 하나의 저장소(uique해야함)
- 접근 권한 설정 가능
- 서비스 사용자가 업로드한 파일을 저장 가능
AWS RDS
RDS 소개
- Relational Database Service
- 안전하고 안정적인 DB 운영
- 관계형 데이터베이스: MySQL, MariraDB(MySQL과 완전 호환), Aurora(AWS에서 직접 만든 DB), ORACLE, SQL Server
RDS 서버 생성
- 지역 선택 가능
- Production(여러군데의 가용구역 제공), Dev/Test
RDS 백업 & 복원
- 안정성의 추구
- Multi-AZ: 서로 연동된 여러개의 DB를 생성, 하나의 DB가 죽을경우 standby중인(백업과 비슷한 개념) 다른 DB가 기능
- 백업: take snapshot
- 복원: restore snapshot -> 새로운 DB 인스턴스 생성
- Restore to Point in Time: DB 인스턴스를 특정 시점으로 되돌리는 기능
RDS Scale up & out
- Scale up: 하나의 DB 인스턴스의 사양을 높임
- DB instance type를 변경
- 언젠가는 한계에 도달
- Scale out: 여러대의 DB 인스턴스를 생성, master라는 DB 인스턴스 생성 후에 slave라는 별도의 인스턴스 여러대를 master와 동기화,
- 읽기 작업: select -> slave
- 쓰기 작업: insert, update, delete -> master(slave는 동기화 필요)
- master가 여러대 필요해진 경우 sharding이라는 스킬 필요(추후 포스팅)
- slave는 create read replica로 생성 가능
댓글남기기