본문 바로가기
ETC

대용량트래픽 견디기 (Scale UP & Scale Out )

by SICDev 2021. 6. 11.
반응형

대용량 트래픽을 어떻게 처리할 것인가???



엄청나게 많은 사람들이 모두 request를 server에 보내면 우리가 흔히 쓰는 apache tomcat(WAS)으로 버틸수 있을것인가❓❓🤔

가장 간단하고 기본적으로 첫째로 webserver(apache) 와 was(tomcat - container)로 나눈다.

was에도 webserver의 기능이 포함되어있지만! 두개의 서버를 나누는것이 좋다!

static(정적)한 request가 오면 webserver에서 html을 바로 response해주고

동적인 request가 오면 webserver에서 처리가 불가능하니 was로 request를 넘기고 was에서 데이터를 처리한 후 html을 다시 webserver에서 던지고
webserver는 was에서 받은 html을 사용자에게 response해준다.

이것만으로 대용량 트래픽을 견딜까...❓ 당연히 아니다😢
이건 너무 기본적인것이고...


그렇담 어떤식으로 해야 서버에 부하를 덜어낼수 있을까❓❓

Scale Up vs Scale Out

- Scale Up
이름만봐도 뭔가 감이 오지 않는가??? 업❗ 업❗❗❗ 뭔가를 올리는것이다.
무엇을 올려야 서버가 더 많은 트래픽을 견뎌낼 수 있을까???
서버가 좋으면❗ 슈퍼 컴퓨터라면❓ 많은 트래픽을 견대 낼수 있을것이다.
Scale Up이란 수직적 확정이라고도 하며, 서버의 자원을 늘리는것이다(CPU, RAM, HDD->SSD로 교체 등등...)

- Scale Out
이건 이름만 봐서는 잘 모르겟다.. Out이라...내보낸다고...❓
Scale Out은 수평적 확장이라고도하며, 여러대의 서버를 증설 하는 것을 이야기한다.
음... 예를 들자면... 한강에 화장실이 단 1개... 그 안에서도 변기가 1개....
사람들은 볼일을 보기 위해 화장실에 들어가서 변기를 사용하기 위해 기다려야한다..🚽
근데! 화장실에 변기가 2개로 늘어나면?! 기다리는 시간이 줄어들지 않겠는가??? 3개로 늘어난다면?? 4개로 늘어난다면??
이것을 Scale Out이라고한다.


그럼 어떤 방식을 사용해야 더 효율적인가???
완벽히 정해진 답은 없지만...

- Scale Up
아주 간단하고 빠르게 서버를 확장하기 좋은 방법이다. 그렇지 않은가??? 더 좋은 CPU로 교체하고, RAM을 더 끼워놓고, 더 빠른 I/O 장비를 교체하면된다!
장비만 교체하면 되니 관리 비용이나 운영 비용이 거의 들지 않는다! 당연히 한대의 컴퓨터이기 때문에 라이센스도 기존에 사용하던 라이센스를 사용하면되서
추가로 구입하지 않아도된다!
한 대의 서버를 통해 모든 request를 받고 response를 주기 때문에 stateful한 서비스를 구현하는데 아주 좋을것이다! ( 정합성 보장!! )
대표적으로 DB서버에 적합하다!

- Scale Out
기존의 서버보다 낮은사양이거나 비슷한 사양의 컴퓨터를 여러대 두기 때문에 하나의 서버가 작동을 하지 않는다고해도 다른 서버로 request를 보내면 되기때문에
문제없이 서비스를 제공할 수 있다. SPOF가 발생해도 대처가 가능하다!!
서버를 새로 설치하고 연동을 해야하기때문에 많은 지식과 노하우가 필요하다. 
분산 서버 환경을 위해 로드밸런싱, 데이터 파티셔닝, 데이터와 서비스의 이중화 등 많은 지식이 필요하고 로드밸런싱은 필수다.
로드밸런싱은 하나의 서버에 부하가 몰리는것을 방지하기위해 균등하게 request를 분산시키는 것이다.
여러대의 was가 존재하기 때문에 session과같은 상태정보를 어떻게 관리할지도 고민해봐야한다!
분산 서버 시스템에서 session을 관리하기위해 Sticky Session, 세션 클러스터링, 세션 스토리지 등의 방법으로 session을 관리할 수 있다!

반응형