티스토리 뷰

1. Scale Up & Scale Out


서비스 운영의 효율성을 위해 서버의 규모를 조절하는 것을 Scalability, 확정성이라고 부른다. 사용자의 요청이 많아지면 서버를 증설하고, 요청이 적어지면 

서버를 줄일 수 있는 구조를 가진 서비스는 Scalable 하다고 부를 수 있다. 그리고 확장성을 지원할 수 있는 두가지 방법이 존재한다.


 Scale Up

Sclae Out 

 서버 자체의 저장 공간을 늘리거나 성능 향상시키는 것을 의미

서버의 수를 늘려 요청을 분산함으로써 요청에 대한 처리능력 향상 의미 

 하나의 서버에서 운영되는 프로그램을 작성하면 되므로 구현 난이도와

 운영에 대한 부담감이 낮음

 서버 성능 향상에 따른 기존 서비스 코드의 수정 부분이 적음

 필요에 따라 서버를 증설, 제거 가능 → Scalable 운영

 비용이 상대적으로 적게 발생

 서버의 장애가 발생해도 다른 서버를 통해 연속적인 서비스 지원 가능

 적은 비용의 서버를 추가하는 것이기 때문에 비용이 상대적으로 적세 발생

 하나의 서버에서 운영되기 때문에 서버 장애 발생 시, 연속적인 서비스

 지원 불가. (분산처리가 불가하므로, 자원효율성 저하)

 → Scalable 하지 못한 운영

 하드웨어 성능이 향상될 수록 비용이 증가하는 비율이 큼 

 (n대의 서버로 증설 <= 한대의 서버의 성능 향상)

 서버 운영에 대한 부담감 증가 (n 대의 서버 운영에 대한 고려 필요)

 서버간의 통신이 필요할 경우 (Scale up에 비해 성능 저하)

 서버 증가에 따른 기존 서비스의 수정이 필요 (그러나, 2대까지는 많은 

 고려가 필요할 수 있지만 그 이후부터는 고려사항이 2대와 같음)


2. SPOF (Single Point Of Failure)


시스템을 구성하는 다양한 요소들 중에 하나의 요소라도 정상적으로 수행하지 못했을 경우, 시스템 전체의 중단을 야기시킬 수 있는 장애 발생 포인트를

SPOF 라고 부른다. SPOF는 네트워크 영역에서도 발생 가능하지만, 물리적인 영역에서도 발생 가능하다. 물리적인 영역이라면, 화재를 예를 들 수 있다.

안정적인 서비스를 계속해서 지원하기 위해서는 SPOF를 파악하고 제거하는 것이 필요하다.


일반적으로 클라리언트가 서버로부터 데이터를 조회할 경우, '웹 브라우저 → WEB 서버 → WAS 서버 → DataBase' 순으로 데이터가 조회된다.

그리고 각각의 영역에서 시스템 전체의 중단을 야기시킬 수 있는 SPOF가 각각 존재할 수 있다. 그리고 일반적으로 서버를 이중화를 통해 관리하지 않으면

SPOF 발생 가능성이 크다. 각 영역에서 발생할 수 있는 SPOF를 확인해보자


 (1) 웹 브라우저 → WEB 서버

  웹 브라우저가 WEB 서버에 요청을 할 때, 네트워크 영역을 경유해서 요청을 한다. 그리고 네트워크 영역은 통제 가능한 자원이 아니기 때문에 SPOF를 

  완벽하게 제거하는 것은 쉽지가 않다. 그렇기 때문에 장애가 발생을 대비해서 대처하는 것이 중요하다. 그렇기 때문에 하나의 WEB 서버가 아닌 n대의 

  WEB 서버를 통해 WEB 서버 하나가 장애가 터져도 다른 WEB 서버를 통해 서비스를 지원할 수 있게 해야 한다. 이를 위해 각각의 WEB 서버에 도메인을 

  등록할 수 있지만 네트워크 장비인 L4, L7 (하드웨어)를 활용해서 Load Balance를 할 수도 있다. 이 경우에는 L4에 대표 IP를 부여하고, 클라이언트는 

  L4 IP로 접근하고, L4는 Load Balance를 통해 각각의 WEB 서버에 요청을 전달하게 할 수 있다.


 (2) WAS 서버

  WAS 서버는 개발자가 작성한 코드에 의해 애플리케이션에 문제가 발생할 수 있다. (예 : Out Of Memory Error) 그렇기 때문에 WEB 서버와 같이 n 대의 

  서버를 구축하여 부하를 분산시켜주는 것이 필요하다. 이때 WEB 서버의 대표적인 예중 하나인 NginX가 Load Balance도 같이 지원해주고 있다.


 (3) Database

  Database도 용량 부족을 통해 장애가 발생할 수 있다. 그리고 Database가 장애가 났을때 데이터를 원할하게 제공할 수 없기 때문에 중단시 치명적이다.

  그리고 Database 자체에서 RAID 기술을 활용하여 물리적 디스크의 장애를 대응 가능하다. 여기서 RAID란 Redundant Array Of Inexpensive의 약자로서 여러 

  드라이브 집합을 하나의 장치처럼 사용하는 것을 의미한다. 결국은 여러개의 디스크 공간에 데이터를 분산해서 저장하는 기술을 의미한다. 두개 이상 

  드라이브를  연결하여 하나의 큰 고속 드라이브인것 처럼 사용하거나, 실시간 백업을 위해 데이터르 즉각적으로 복제 및 미러링을 하여 데이터의 안전성도 

  지원이 가능하다.

'기타' 카테고리의 다른 글

티스토리 이전 에디터 사용법  (0) 2019.03.30
자바 가상머신 JVM  (0) 2019.01.30
서버 성능 향상 - 2  (0) 2019.01.24
티스토리 글에 코드 입력하기 (Syntaxhighlighter)  (1) 2018.09.28
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함