티스토리 뷰

반응형

우리 어플리케이션이 성공했다하자. (우와🤩🤩🤩) 많은 유저가 동시접속하는 서비스가 되어 기존에 사용하던 서버에 한계가 있을때, 인프라를 업그레이드하는 방법은 스케일 업과 스케일 아웃이 있다.

스케일업 스케일 아웃

스케일 업(= 수직 스케일링)

스케일 업이란, 우리가 현재 사용하고 있는 서버 자체의 성능을 증가시켜 처리 능력을 향상시키는 것으로 cpu, 메모리 업그레이드 등으로 서버의성능을 높이는 방식이다.

스케일업은 비교적으로 쉽고, 실천하기도 쉬운 방법이다.실제로 우리가 사용하는 컴퓨터가 느려졌다면, 성능이 더 좋은 새로운 컴퓨터를 구매하는 것이다.

  • 한 대의 서버에서 모든 데이터를 처리하기 때문에, 데이터 갱신이 빈번하게 일어나는 경우 적합하다.
    • 정합성을 유지하기 어려운 경우
    • OTLP
    • 데이터베이스 서버

aws 의 경우 버튼 하나만 클릭하면 scale up 을 할 수 있다.

  • 정합성: 데이터 정합성은 서로 모순없이 일관되게 일치해야한다는 의미이다. 즉, 어떤 데이터들의 값이 서로 일치해야한다.
  • OLTP : 트랜잭션을 기반으로 하는 데이터 작업
    • 트랜잭션: 데이터 베이스의 일관성을 보존하는 프로그램의 실행 단위

스케일 업의 장점

  • 단순히, 서버 교체작업이기 때문에, 구현과 설계가 쉽다.(하지만. 마이그레이션 비용이 든다는 것을 잊으면 안된다.)
  • 서버를 추가하는 방법이 아니기 때문에, 여러 대의 서버 보다 데이터 정합성 이슈에 자유롭다.
  • 컨트롤러나 네트워크 인프라 비용(소프트웨어 라이센스 등)이 추가로 발생하지 않는다.

스케일업의 단점

  • 용량, 성능, 확장의 한계가 있다. 가장 좋은 CPU와 메모리 RAM 을 사용해도, 그것을 초과하는 성능으로 업그레이드하는 것은 불가능하다.
  • 비용 대비 효과가 낮다.
  • 스케일 업의 일정 수준을 넘어가는 순간, 성능 증가 폭이 미미해진다.
    • cpu 의 예를 들자면, i3 에서 i5로 스케일업하는 경우, 1.5배 이상의 성능 변화가 있는 반면, i5 에서 i7로 스케일업하는 경우, 1.2 배의 성능 변화밖에 없다.
  • 가장 취약점으로 하나의 서버로 모든 클라이언트와 트래픽에 대응하기 때문에, 해당 한 서버에 문제가 생길 경우, 서버가 복구될 때까지 서비스를 중단해야하는 상황이 발생할 수 있다. 이것은 서비스 사용자 관점에서 최대 이슈이다. 내가 사용하려던 서비스가 중단된다면, 그에 안좋은 기억이 생기고 타 서비스로 이용을 바꾸거나, 서비스를 사용하지 않을 수 있는데, 이것은 엄청난 비즈니스 손실이 생길 수 있다.

스케일 아웃(scale out)(=수평 스케일링)

스케일아웃이란 기존 서버와 비슷한 사양의 사양의 여러 대의 서버를 두는 방법이다. 스케일 업보다 인프라 재구성에 있어 다소 유연한 방법이다.

  • 모든 서버가 동일한 데이터를 가지고 있기 때문에, 데이터 변화가 적은 경우 적합하다.
    • 높은 병렬성을 실천하기 쉬운 경우
    • 정합성을 유지하기 쉬운 경우
    • 웹 서버

스케일 아웃의 장점

  • 용량, 성능 확장에 한계가 없다. 하드웨어를 변경하는 것이 아닌 비슷한 성능의 서버를 여러 대 두는 방법이기 때문에, 확장이 무제한 가능하다.
  • 하나의 서버가 모든 트래픽을 관리하는 스케일 업과는 반대로, 여러 대의 서버를 두어 분산 처리를 하기 때문에, 장애 가능성이 감소한다.
  • 스케일 업에 비해 비용이 저렴하다.
  • 클라우드 환경 및 대규모 서비스 환경에서 권장되는 방법이지만, 항상 옳진 않다. 네트워크 서버 설계 및 소프트 웨어 변경 비용이 더 클 수 있다.

스케일 아웃의 단점

  • 여러 대의 서버를 관리하기 때문에, 운영 비용이 증가한다. ( 소프트웨어 라이센스 비용 등 )
  • 모든 서버에서 데이터 일관성을 유지해야하기 때문에 설계 및 관리가 복잡하다.
    (데이터의 불일치가 발생할 수 있다.)
  • 세션, 웹 이미지 등 서버에 저장되는 데이터를 어떤식으로 공유해야할지에 대한 기술적인 한계가 있다.
  • 병렬 컴퓨팅 환경을 구성하고, 유지하려면, 로드 밸런싱에 대한 높은 이해도가 요구된다.
  • 기본적으로 직렬화(단일 처리)되어야 할 부분이 존재할 수 있다.
  • 기술적으로 문제점(대역폭, 동기화 문제)이 있다.
  • 코어가 늘어남에 따라 마냥 성능이 증가하지는 않고, 코어 증가에 따라 대역폭은 증가해 지연이 발행할 가능성이 있다.

병렬 컴퓨팅 환경: 여러 개의 프로세서를 통해 하나의 프로그램을 처리하는 환경
로드 밸런싱: 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리한다.

 


 

장단점이 뚜렷하기 때문에, 각각의 서비스에 특징과 사용량을 생각해 최적의 방법을 생각해야한다.
우리 서비스의 경우, 장애가능성 측면과 비용, 그리고 확장 요소를 고려해 스케일 아웃을 선택했다.

 

참고 문헌

https://aws.amazon.com/ko/premiumsupport/knowledge-center/resize-instance/
https://devuna.tistory.com/73
https://www.kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=13&dbnum=185192&mode=detail&type=techreport
https://toma0912.tistory.com/87
https://itsandtravels.blogspot.com/2018/12/scale-up-scale-out.html https://www.slipp.net/wiki/pages/viewpage.action?pageId=26641264
https://www.slideshare.net/sunnykwak90/scale-up-and-scale-out
https://1-7171771.tistory.com/126

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함