본문 바로가기
개발

[AWS] Scale Out - 흐름과 이론

by 마스터누누 2017. 5. 13.
728x90
반응형

Scale Out - 흐름과 이론






Scale out이라는 방법론은 여러대의 컴퓨터가 협력해서 동일한 목표를 달성하는,

컴퓨터를 위한 사회를 만드는 것이라고 할 수 있다.

위의 사진은 판도 라는 숲(나무)인데, 각각의 나무들이 아니다.

모든 나무가 같은 뿌리를 공유하며 자라는데, 하나의 나무 라고 할 수 있다.

즉 Scale out은 판도 나무와 같다고 할 수있다.


Scale up으로 규모를 늘리다보면 분명히 한계에 부딪히게 된다.

그 때는 규모를 수직적이 아닌 수평으로 늘리는 Scale Out으로 변경하게 된다.


Scale Out은 복잡하기 때문에 초기에는 반드시 Scale Up을 먼저 고려해주도록 하고

최대한 한계에 도달 했을 때 Scale Out으로 바꿔 주도록 하자.

왜냐하면 Scale Out은 복잡하기 때문에 작은 규모와 수준이라면 Scale Up으로 충분히 커버가 가능하기 때문이다.






Scale out 은 다음과 같이 흘러간다.

적은 사람들이 접속하다가 사용자가 점점 늘어나면서 많은 컴퓨팅 능력을 필요로 한다.

급하게 컴퓨터를 켜서 CPU를 모니터링 하면, 점유율이 100퍼센트에 육박할 경우

이를 해결하기 위한 대책을 내야한다.


먼저 Scale Up으로 서버의 능력을 키우다가 이것마저 한계에 부딪히면

Scale Out으로 해결 해야 한다.


일반적인 웹애플리케이션의 경우 서버에 3개의 프로그램이 깔려있다.


1) 웹서버 : 교환원, 문지기의 역할

2) 데이터베이스 : 가장 중요한 정보를 담고있는 저장소, 금고의 역할

3) 미들웨어: 웹서버와 데이터베이스 사이에 위치하며 웹 애플리케이션의 로직을 담당 하는 역할


따라서 Scale Out으로 컴퓨터를 확장할 경우

이러한 프로그램을 분할 하여 저장할 수 있는 것이다.







예를 들어, 컴퓨터 1대를 사용할 때 3개의 애플리케이션이 모두 1대에 들어있었다면

1대가 추가 될 경우 웹서버, 미들 웨어는 원래 컴퓨터에, 데이터베이스는 다른 컴퓨터에 저장할 수 있다.

사용자 입장에서는 변한것이 없지만 시스템은 조금 복잡해졌다.

그러나  부하를 견딜 수 있으므로 상당히 좋은 장점을 가져간다고 할 수 있다.


조금 더 부하가 늘어난다고 했을 때 컴퓨터를 1대 더 추가한다면

웹서버, 미들 웨어, 데이터베이스를 각각의 컴퓨터에 나눠서 사용할 수도 있을것이다.

여기서 조금 더 발전 시켜 컴퓨터 1대를 더 추가한다면

데이터 베이스를 2개로 나눠 각각의 컴퓨터 저장하고, 

쓰기 작업은 Master DB, 읽기 작업은 Slave DB에서 처리하도록 할 수 있다.


이 상황에서도 컴퓨터가 느리다면 데이터베이스를 더 복제해서 Slave를 늘리고

아직도 데이터 베이스가 느리다면 소위말해 샤딩 이라는 기법을 이용해서 

Master와 slave를 일정 구간 별로 담당하도록 할 수 있다.


데이터베이스는 잘게 쪼개는 것으로 속도를 상승시켰다.

이와 비슷하게 동일한 미들웨어를 여러대의 컴퓨터로 나누어 처리 속도를 상승 시킬 수 있다.







그렇다면 computer 1에 있는 웹서버의 경우는 어떻게 확장을 시킬 수 있을까

사용자가 구글이나 네이버 등의 주소를 주소창에 치고 접속하게 된다면,

컴퓨터는 DNS 서버에 접속해서 이 서버 안에 저장되어있는 도메인에 해당하는 IP로 서버에 연결하게 된다.

즉, DNS 서버는 전화번호 부와 비슷하다고 볼 수있다.


결과적으로 DNS 서버의 설정을 바꾸어서 어떤 사용자가 접속을 하면

위 그림의 Computer 1의 웹서버의 IP를 알려주거나 Computer 8의 IP를 알려주면 되는 것이다.







다른 방법으로 로드 밸런서(Load balancer)를 사용하는 방법이있다.

로드 밸런서는 부하의 균형을 잡아서 골고루 부하가 분산 될수 있도록 도와주는 장치이다.


우리 서버로 접속하는 IP는 각 웹서버가 아니라 로드 밸런서를 가리키는 IP가 된다.

그리고 도메인 역시 웹 서버에 대한 IP를 가리키는 것이 아니라 로드 밸런서를 가리키게 된다.


따라서 로드 밸런서로 들어오면 사용자들에게 제공하는 서비스 부하를 적절히 분산시켜준다.

또한,  computer 8이 죽었다면 이 컴퓨터로 요청을 보내지 않는 기능 등을 제공한다.


이를 위해 AWS 에서는 ELB(Elastic Load Balancer)라는 서비스를 제공한다




출처 : 생활코딩, 아마존 웹 서비스

반응형

'개발' 카테고리의 다른 글

[AWS] Scale Out - ELB 적용  (0) 2017.05.13
[AWS] Scale Out - ELB 생성  (0) 2017.05.13
[AWS] Scale Up - 인스턴스 교체  (0) 2017.05.13
[AWS] Scale Up - Elastic IP  (0) 2017.05.13
[AWS] Scale Up - 스트레스 테스트  (0) 2017.05.13

댓글