AWS 문제 풀이를 위한 AWS 개념 설명-스케일아웃-1
AWS 클라우드에서 애플리케이션의 로드를 처리할 수 있는 정확한 수의 EC2 인스턴스를 유지할 수 있게하는 인스턴스 모음을 Auto Scaling Group이라고 한다.
위 그림처럼, Auto Scaling Group를 구성하기 위해서는 최소 1개 이상의 인스턴스가 있어야 하며, 서비스 구동에 필요한 최소한의 요구량 정보가 있어야하며, 최대 몇개의 인스턴스까지 확장 될 것인지 설정이 필요하다.
오토스케일링이란 기술은 개인적으로 클라우드의 핵심이라고 생각한다. 오토스케일링은 On-Premise 환경에서 구현하기 어려운 기술이며 이를 통해 성능적으로 안정성적으로 그리고 비용적으로도 높은 훌륭한 아키텍처를 완성할 수 있다.
Auto Scaling group은 Scale In / out을 한다.
컴퓨팅의 성능을 늘리고 줄이는 방식에는 여러 측면에서 여러 방면이 있겠지만, 하나의 컴퓨터에서만 본다면 크게 2가지가 있다. Scale UP / DOWN과 Scale OUT / IN 이다.
1) Scale UP / DOWN
한 컴퓨터의 구성 요소들을 변경하는 것이다. 더 높은/낮은 성능의 CPU로의 변경, 더 큰/작은 메모리 크기로의 변경, 더 빠른/느린 속도의 & 더 큰/작은 디스크로의 변경등이 Scale UP/Down 하는 것이다.
2) Scale OUT /IN
이에 반해 Scale OUT / IN은 한 컴퓨터의 구성 요소를 변경하는 것이 아니라, 그 컴퓨터의 수량을 늘려 컴퓨터의 성능을 늘리는 것이다. 5의 컴퓨팅 성능을 가진 컴퓨터가 있다면 이 컴퓨터를 2대를 두어 10(9+)의 컴퓨팅 성능을 가진 환경을 구현하는 것이다.
Scale UP / Down은 클라우드 환경에서 할 수 있다라는 것은 조금 애매한 부분이 있지 않을까 싶다. On-premise 환경에서는 기존 장비에 CPU, 메모리, 디스크 등을 증설을 기존 장비에 CPU, 메모리, 디스크 등을 추가하면서 진행한다. 클라우드 환경에서는 성능이 부족한 인스턴스를 종료하고, 필요한 성능에 맞는 EC2를 다시 만들면 된다. Scale Up / Down이 된다 안된다를 말하기 애매한 이유는 그럴 필요 없이 새로 만들면 되기 때문에 저 개념을 고려할 필요가 없다.
다만, Saving Plan이나 RI를 통해서 EC2를 사용하고 있다면, 이 개념이 비슷하게 적용된다.
Compute saving plan이나, Convertible RI를 사용하고 있다면 인스턴스 패밀리 변경이나, 인스턴스 사이즈 변경이 가능하여 Scale UP / Down 등이 가능하지만, EC2 Instance Saving Plan이나 Standard RI를 사용하고 있다면 Scale UP / Down이 불가능 하다.
https://multitasker-sh.tistory.com/80
scale out 정리 - 글 쓴 것이 있을 텐데
Scale in out 정리 Scale up down 정리
multitasker-sh.tistory.com
Scale In / Out 은 똑같은 인스턴스의 수량을 조절한다. Auto Scaling은 더 많은 성능이 필요하면 인스턴스 수를 늘린다. 그리고 많은 성능이 더 이상 필요하지 않게 되면, 그 인스턴스를 제거한다.
이는 On-Premise와 비교해서 상당히 좋은 기능이다. 그 이유는 아래와 같다.
1) 즉각적인 성능 증가
서버를 주문한다고 해서 수초, 수분, 수 시간 내로 당연히 오지 못 한다. 하지만, 클라우드 환경에서 auto scaling 기능으로는 수초내로 서버를 늘릴 수 있고, 늘릴 서버를 통해 필요한 성능을 맞출 수 있다. 그것도 자동적으로. 따라서 선제적인 조치로 미리 쓸때 없이 고성능의 컴퓨팅 환경을 구축해두어 돈을 낭비할 필요 없다. 또한 예상치 못한 성능 증가 요구도 쉽게 수용할 수 있다.
2) 즉각적인 성능 축소
서버를 늘려서 필요한 성능에 맞추는 것은 시간이 많이 걸리더라도 기존 On-Premise 환경에서도 충분히 가능하다. 하지만 축소는 어렵다. 이미 사드린 장비를 환불할수도 없으며 단순비 장비의 전원을 뽑는 형식으로 장비를 뺄 수 있는 것도 아니기 때문이다. 최대 요구 성능에 장비를 맞추고, 최대 요구 성능이 특정 peak 시간에만 짧게 요구 된다면, 평상시에 장비는 쓸때 없이 고성능으로 돌아가고 있는 것이다. Auto Scaling에서는 성능이 줄어져도 된다고 판단되면, 늘려놨던 인스턴스를 삭제한다. 이럼으로써 가격 효율적으로 EC2를 사용할 수 있게 해준다.
예를 들어, 컴퓨터를 샀는데, 일주일에 한시간만 최신 컴퓨터 게임을 하는 상황이다. 게임을 안하는 시간에는 재택 업무로 엑셀만 사용한다. 게임을 제대로 즐기기 위해서 게이밍 모니터, 고사양 CPU, 고사양 그래픽 카드, 대용량 램... 그래서 500만원 상당에 컴퓨터를 샀다면, 게임은 제대로 즐길 수 있지만, 일주일에 1시간을 제외하고 평소에 하는 엑셀 작업은 50만원이면 충분하다.
게임은 포기하고, 50만원 컴퓨터를 사거나
300만원 컴퓨터를 사고, 게임을 버벅 거리면서 하거나
500만원 컴퓨터를 사고, 돈을 아까워하는 방식정도가 있을 것이다.
클라우드 환경이 아니라서 Auto Scaling 이란 기능이 없다면, 사용자는 위와 같은 고민은 해야 되지만, Auto scaling을 사용하면 위와 같은 고민 할 필요 없이 평소 엑셀 작업 할 때는 낮은 성능으로, 게임할 때만 고성능으로 사용하면 된다.
(물론, 50에서 500만원 사이에 컴퓨터 스펙 변경은 scale up/down이고, auto scaling은 Scale in/out이다. i3, 4gb, gtx 1060 5대가 묶이면, i9, 16G, gtx3080된다고 비유로 이해만 해보는 것으로..)
3) 비싸지 않은 가격
가격 효율적으로 사용할 수 있는 것은 즉각적인 증가와 축소로 볼 수 있다. 여기서 또 하나가 더 있다면, auto scaling 으로 늘어나는 인스턴스의 가격이 기본 인스턴스의 가겨과 동일하다는 것이다. 보통 대여용으로 짧은 기간만 사용하게 되면 일반적으로 사는 것보다 비싼 편이지만 기본 인스턴스 가격과 동일하게, 그리고 auto scaling 통해서 생성되고 사라질 때까지 사용된 금액만 청구된다.
글 준비