[AWS]아마존 웹서비스 기초지식 3

1 minute read

Scale out의 소개

적당한 규모가 되기전에는 Scale up으로 할 수 있는 것은 scale up으로 하는것이 좋다. Scale out은 복잡성이 너무 크고 그 복잡성은 다른 문제들을 야기할 수 있다.
Scale up을 하다보면 한계에 도달하게되는데(한 대의 컴퓨터에서 그치는 것이 아니라 여러대의 컴퓨터가 서로협력해서 일을하는 것이 필요할 때),
그때에 scale out이 필요하다. 간단한 해결책이 있으면 간단하게 해결하고, 중/장기적으로 scale out을 하기 위해서 scale up 단계에서 할 수 있는 것 들을 파악해뒀다가 scale out이 필요할때 빠르게 하는 것이 좋은 방법이다.

개발자는 불필요하게 시스템이 복잡해 지는 것을 경계해야 한다.

Scale out의 흐름

인스턴스 한 대에 설치되어있는 소프트웨어를 크게 3개로 나눈다.

스크린샷 2020-04-14 오전 8 58 30

Web server : nginx, apache 등 middle ware : php, Django, spring 등 DB : mysql, oracle, sql server 등

한 대의 컴퓨터에서 운영되는 Web Server, Middle Ware, Data Base등을 각각의 컴퓨터로 쪼갠다.

스크린샷 2020-04-14 오전 8 51 14

먼저 DB를 Scale Out 해서 사용하다가, Web Server , Middle Ware도 나눈다

스크린샷 2020-04-14 오전 8 52 24

Data base를 다시 master DB(쓰기)와 slave DB(읽기)로 나누고,

스크린샷 2020-04-14 오전 8 53 12

slave DB를 다시 나누기도한다.

스크린샷 2020-04-14 오전 9 00 13

샤딩(sharing)으로 DB를 더 분산시킨다.

스크린샷 2020-04-14 오전 9 00 24

Middle ware 도 마찬가지로 다른 컴퓨터로 쪼개서 부하를 분산 시킬 수 있다.

스크린샷 2020-04-14 오전 9 06 13

DNS SERVER에서 Web Server의 IP를 사용자에게 알려주는 방식에서

스크린샷 2020-04-14 오전 9 07 28

Web server를 다른 컴퓨터로 쪼갠 후 DNS서버의 설정을 바꿔서, 사용자에 따라 서로 다른 web server의 IP를 분배함으로써 부하를 분산시킬 수 있다.

스크린샷 2020-04-14 오전 9 09 12

더 좋은 방법은 Load Balancer(부하의 균형을 잡아주는 장치,서비스,시스템)를 두는 것.

스크린샷 2020-04-14 오전 9 11 44
로드밸런서가 각 web server의 IP를 가져셔, 사용자의 접속을 분산시키는 것이다. Web server의 장애나 성능상황을 감지해서 부하를 분산시키기도 한다. Load Balancer가 부하분산의 핵심요소이고, AWS에서는 ELB(Elastic Load Balancer)라는 서비스가 있다.

Leave a comment