탄력적인 컴퓨터 수요 대응에 가장 적합한 방식으로, 말 그대로 컴퓨터 요청(수요)이 많아질 경우 해당 성능과 기능을 증가시키는 과정을 일컫는다.
컴퓨터의 탄력적인 수요 및 요청을 대응하기 위해선 scale up 작업을 진행해야 한다. 이 경우 말 그대로 수요가 증가함에 따라 EC2 인스턴스의 규모 등이 향상되어 수요대응이 가능해진다.
인스턴스는 껐다 켜면 IP주소가 반환되고 이를 대여하는 과정을 반복하여, 최초의 IP주소를 영구적으로 보관하지 않는다.
Scale up 시 해당 인스턴스를 이미지 파일로 freeze하고, 이를 다시 다른 유형/type의 인스턴스로 생성하기 때문에 Scale up을 할 때마다 IP주소를 바꿔야 하는 번거로움이 생긴다.
따라서 Elastic IP address를 설정하여, 특정 인스턴스의 IP주소를 고정할 수 있다.
이미지 파일로 만든후, 인스턴스를 다시 생성할 때 type을 상향 버전으로 재설정하여 scale을 상향하면 된다.
단 scale up 시 인스턴스를 이미지로 만드는 과정에서 인스턴스 작동이 중지되므로, 신중하게 scale up 상황을 판단할 필요가 있다.
인스턴스를 다시 생성한 후 기존의 탄력적 IP를 상향된 인스턴스에 반영하게 되면, scale up 과정이 완료된다.
Scale up의 기능 상향에 한계가 있을때, 여러 대의 컴퓨터를 구축하여 그 이상의 성능을 구현하는 방법이다.
보통 EC2 인스턴스와 application을 구축한다고 하면, 크게 아래와 같은 3가지 요소로 나뉜다.
이때 scale up으로도 감당할 수 없는 request로 인해 web server가 응답하지 않을 경우, scale out으로 병렬적인 처리가 이루어지도록 구성한다.
scale out을 진행한다면, 아래와 같이 컴퓨터를 분리하여 각 과정을 처리하도록 한다.
본 process의 Web server와 Middleware의 경우, 다른 컴퓨터의 인스턴스에게 정보를 요청한다.
이러한 과정이 추가되면서 복잡도가 늘어나고 성능저하가 유발될 수 있지만, 전체적인 처리과정에서는 더 빠르고 scalability가 향상된 효과를 얻을 수 있으므로 scale out을 활용한다.
최종적으로는 여러대의 컴퓨터를 동작하게 하여 scale out의 목적에 근접한 성능을 구현하도록 한다.
Web server에 접속하는 것은 기본적으로 고정IP로 접속하기 때문에, scale out 과정이 다른 부분보다는 조금 특별하다.
DNS로 접속한 후(=주소입력), 해당 IP주소를 찾아갈때 web server를 병렬로 구축하여 처리하게 되면 동일 DNS에서라도 분산된 Web server를 거쳐 응답을 받을 수 있으므로 부하가 줄어든다.
이때 위와 같이 로드밸런서 과정을 거친다면, 웹서버 및 미들웨어로 향하는 요청을 적절하게 밸런싱할 수 있으므로 전체적인 부하도 줄이고 성능도 향상시킬 수 있는 scale out process를 구축할 수 있다.
생활코딩 - AWS 웹서비스 가입부터 활용까지
https://www.inflearn.com/course/aws-%EC%95%84%EB%A7%88%EC%A1%B4-%EC%9B%B9%EC%84%9C%EB%B9%84%EC%8A%A4-%EA%B0%80%EC%9E%85%EB%B6%80%ED%84%B0-%ED%99%9C%EC%9A%A9%EA%B9%8C%EC%A7%80/unit/2912?tab=curriculum