[AWS SAA] Scalability - Scale up

junghan·2023년 2월 3일
0

AWS SAA

목록 보기
5/51
post-thumbnail

Scale-UP이란?

수요에 탄력적으로 대응하는 방법으로 컴퓨터 수요가 늘어나면 더 좋은 컴퓨터로 업그레이드하는 방식입니다. 이를 위해서는 인스턴스의 유형을 t2.micro에서 더 좋은 성능을 가진 유형으로 바꿔주면 됩니다.
이번 포스팅에서는 Scale-up으로 확장성을 늘려주기 전, 서버에 스트레스를 가하는 테스트를 통해 사용자 경험이 떨어지는 상태를 만들어 Scalability가 필요한 상황을 직접 경험해보려합니다.



스트레스 테스트 준비

서버 인스턴스 세팅

  1. wordpress AMI 검색

가장 유명한 Bitnami을 준비, 프리티어의 경우 매월 750시간 무료입니다

  1. 서버 인스턴스 생성

이전 포스트와 같이 보안그룹을 세팅하여 인스턴스를 만들어 줍니다.

클라이언트 인스턴스 세팅

  1. ubuntu AMI 검색
  1. 클라이언트 인스턴스 생성
    위와 동일하게 세팅하여 인스턴스를 생성합니다.

생성완료!



스트레스 테스트 시작

서버 터미널 접속

1. ssh 로 접속

접속을 시도하려는데 아래와 같은 오류가 계속 뜰 경우

chmod 600 aws_saa.pem 명령을 통해 key파일의 권한을 변경해준 뒤,

ssh -i "aws_saa.pem" bitnami@YOUR_EC2_PUBLIC_DNS

명령을 통해 SSH로 접속하면 된다.

Bitnami 공식사이트

접속성공

2. top 명령어를 실행시켜 현재 인스턴스의 점유율 및 성능을 파악합니다.


클라이언트 터미널

1. ssh 로 접속

서버와 비슷한 방법으로

$ chmod 400 aws_saa.pem
$ ssh -i "aws_saa.pem" ubuntu@YOUR_EC2_PUBLIC_DNS

명령을 통해 접속한 뒤,

2. apt-get update 명령으로 패키지설치자를 업데이트해줍니다.

오류가 뜰 경우 sudo를 붙여서 실행시켜줍니다.


3. apache2-utils 패키지 설치

sudo apt-get install apache2-utils 명령으로 apache 패키지 설치 중간에 Y를 눌러 동의해줍니다.


4. 패키지를 통해 다운받은 ab라는 부하발생기 실행
ab -n [접속 횟수] -c [동시 접속자] [테스트하기 위한 주소]

-n : 접속 횟수
-c : 동시 접속자
접속하고자하는 주소에 접속

예)
ab -n 400 -c 1 http://ec2-3-35-8-246.ap-northeast-2.compute.amazonaws.com/


테스트 시작

테스트를 시작하게 되면 client는 아래와 같이 요청을 보내고

서버는 이전에 없던 프로세스들이 돌아가기 시작합니다.

테스트결과

  1. 동시접속자 수 1인 경우

아무런 딜레이 없이 웹페이지에 접속이 가능합니다.

  1. 동시접속자 수 200인 경우

벤치마크에 나온 것과 비슷하게 약 13초의 정도의 딜레이가 생겼습니다.

  1. 결과 해석

동시접속자가 많아져 서비스의 퀄리티가 낮아져 사용자경험이 떨어지게 됐습니다.
이를 해결하기 위해서 요청을 조금 더 쾌적하게 처리하도록 도와줄 Scalability가 필요합니다.



Elastic IPs

Elastic IPs는 해제하기로 선택할 때까지 특정 리전의 모든 EC2 인스턴스에 할당할 수 있는 예약된 퍼블릭 IP 주소입니다. scale-up을 하기 위해서는 무조건 알고 가야하는 개념입니다.

기존 EC2 인스턴스의 IP 주소는 IPv4 퍼블릭 IP로 확인할 수 있는데, 이 IP는 인스턴스를 중지했다가 다시 시작하면 유동적으로 계속 바뀐다는 특징이 있습니다.
IP 주소는 000.000.000.000 ~ 255.255.255.255까지로 약 40억 대까지 한정되어있어 고정된 IP를 사용하게 된다면, IP가 부족하기에 AWS에서는 IP주소 자원을 재활용하기 위해 중지된 인스턴스에 대해서는 IP를 회수하는 정책을 가집니다.

유동적으로 변하는 IP를 고정시키기 위한 방법은 Elastic IP를 발급받는 것입니다. 이는 아마존에서 제공하는 고정된 IP를 일컫는 말인데, 기본적으로 1개의 Elastic IPs에 대해 무료로 제공됩니다. 하지만, 무료로 발급한 IP가 인스턴스와 연결되지 않았거나 추가로 IP를 발급하는 경우에는 Elastic IP는 시간당 $0.005 (약 5원)이 과금됩니다. (대략 한 달에 3,600원).

아래와 같이 할당받은 Elastic IP인 52.192.43.106를 인스턴스와 연결 가능합니다.

하지만 구조적인 결정에서 좋지 않은 문제가 발생할 수 있으므로 Route53을 이용한 DNS설정이 관리에 훨씬 유리합니다.



인스턴스 교체

  1. 서버 인스턴스를 이미지화

    서버를 이미지화 할 경우 서버가 잠시 중지되는 동작이 있어 사용자가 웹사이트에 접속할 수 없어지는 문제가 발생하니, 트래픽이 적게 발생하는 시간으로 사전 공지를 한 뒤, 그 시간동안 이미지화 시키는 것이 좋습니다.

  2. 성능이 업그레이드 된 인스턴스를 생성

내 이미지목록에서 해당 이미지로 고성능 인스턴스를 다시 만듭니다.
(유료라서 직접하지는 못했습니다 ㅜ)

  1. 기존 서버에 사용하던 Elastic IPs를 새로 만든 고성능 인스턴스에 부착

  1. 스트레스 테스트로 성능이 개선된 것을 확인가능합니다.


https://opentutorials.org/course/2717/11294

profile
42seoul, blockchain, web 3.0

0개의 댓글