이 페이지는 기계 번역되었습니다. 영어 원본을 읽어보세요. English

IBSurgeon 라이브러리

빠르고, 강력하고, 저렴한: 미화 1000달러 미만으로 소규모 비즈니스 데이터베이스에 충분한 성능을 제공하는 서버

(c) Alexey Kovyazin, IBSurgeon, 2017년 9월 21일 (마지막 업데이트 - 2017년 9월 29일)

많은 $$$를 지출할 준비가 되어 있다면 강력한 서버를 얻는 것은 쉽습니다: Dell, HP와 같은 선도적인 공급업체와 덜 알려진 하드웨어 회사들이 있으며, 그들은 기꺼이 강력한 머신을 판매할 것입니다(보통 4-6주 내 배송).

그러나 특히 소규모 비즈니스와 스타트업에게 돈은 항상 문제이므로, “충분히 좋은” 저렴한 솔루션에 대한 수요가 큽니다. 이 기사는 소규모 비즈니스를 위한 충분한 성능을 갖춘 “충분히 좋은” 데이터베이스 서버를 구축하는 실용적인 접근 방식을 설명합니다. 또한 계산과 우리가 추천하는 특정 제품에 대한 링크를 포함합니다.

우리 회사(IBSurgeon)는 Firebird 데이터베이스를 위한 데이터베이스 컨설팅 및 관리 서비스를 제공하며, 다양한 유형의 서버(또는 서버로 사용되는 컴퓨터)를 봅니다. 대규모 고객은 SSD 위의 SAN, 350GB 이상의 RAM, 듀얼 최상위 Xeon을 갖춘 하이엔드 구성을 사용하지만, 중소기업 고객은 많은 컴퓨팅 파워가 필요하지 않고 돈도 많지 않기 때문에 덜 강력한 머신을 사용합니다.

우리는 많은 서버가 실제로 일반 워크스테이션이며, 가장 흥미로운 점은 수년간 꽤 안정적으로 작동한다는 것을 발견했습니다. 2GB RAM을 가진 컴퓨터(2002년에 제작된 컴퓨터!)에서 Windows XP를 사용하는 것과 같은 정말 이국적인 것들도 있지만, 대부분은 그저 “충분히 좋은” 자체 조립 하드웨어 솔루션입니다.

물론 이것은 통계의 문제이며, 아무도 워크스테이션을 서버로 사용하는 것을 권장하지 않을 것입니다. 그러나 질문은: 안정성과 비용 사이의 균형은 어디에 있는가? 가격 대비 가치 측면에서 저렴한 자체 제작 서버를 사용하는 것이 좋은 접근 방식인가? USD$1000로 무엇을 얻을 수 있는가? 저렴한 하드웨어와 관련된 위험은 무엇인가?

USD$1000 미만의 데이터베이스 서버에 관심이 있을 수 있는 사람은 누구인가?

다음 상황을 고려해 봅시다: 20-25명의 직원이 있는 사무실, 사람들은 7x5로 일하며, 데이터베이스 크기는 약 50GB입니다. 이는 Firebird 기반의 소규모 비즈니스 앱을 위해 ERP, CRM 또는 특정 애플리케이션(예: 치과 자동화 시스템)을 사용하는 소규모 비즈니스 회사의 전형적인 상황입니다.

회사가 돈에 넉넉하지 않고 신뢰성을 잃지 않으면서 최대한 절약하고 싶어하며 충분히 좋은 성능을 달성하려 한다고 상상해 봅시다. 회사의 책임자는 모든 하드웨어가 조만간 실패할 것임을 이해하고 관련 위험을 줄이고 싶어합니다.

그러한 크기와 부하의 Firebird 데이터베이스에 어떤 종류의 서버가 필요한가? Firebird 하드웨어 가이드에 따르면, 데이터베이스에 가장 중요한 리소스는 디스크 IO이며, 그 다음이 RAM, 마지막으로 CPU입니다(흥미롭게도 SMB 고객이 대형 공급업체에서 서버를 구매할 때 CPU를 과대평가하는 마케팅 자료 때문에 강력한 CPU와 느린 디스크를 가진 서버를 선택하는 경우가 많습니다).

디스크

빠른 IO는 SSD(솔리드 스테이트 드라이브)가 필요함을 의미합니다. SSD는 랜덤 읽기/쓰기의 왕이기 때문입니다. 물론 SSD는 데이터베이스의 만병통치약은 아니지만 정말 높은 성능을 제공하며, 이제 데이터베이스에 적합한 선택입니다.

SSD는 엔터프라이즈급과 소비자급 디스크의 두 가지 종류가 있습니다. 이들 사이의 핵심 차이는 수행할 수 있는 IO 작업 수로 대략 계산되는 리소스입니다.

예를 들어, Samsung 850 Pro 256GB MZ-7KE256BW - 소비자급 SSD(MLC 기술 기반)는 TBW(총 쓰기 바이트) 150페타바이트, DWPD(일일 디스크 쓰기) = 0.16입니다. 더 간단히 말하면, 리소스는 10년 동안 매일 40GB의 쓰기로 설명할 수 있습니다.

업데이트: Samsung PM863a ($181.59) 또는 SM863a ($249)가 850 Pro보다 더 안정적이면서도 여전히 저렴하다는 제안이 있었습니다 - 본질적으로 추가 $60로 더 나은 안정성과 일종의 전기 서지 보호를 얻을 수 있습니다.

이것이 많은 것인가 아닌가? 우리는 소비자급 SSD가 장착된 테스트 서버에서 60GB 데이터베이스에 100개 연결의 집중 작업을 시뮬레이션하는 부하 테스트를 실행합니다. 매일 3시간씩 3번의 테스트가 시작됩니다 - 이는 9시간 근무일을 시뮬레이션함을 의미합니다. 테스트는 이미 2년 동안 실행되었으며, 남은 리소스(펌웨어에 따르면)는 54%입니다.

물론 ~50%의 리소스는 드라이브가 다음 해에 교체되어야 함을 의미합니다… 그렇게 나쁜가? 몇 년마다 SSD의 속도는 증가하고 가격은 하락합니다: 예제의 SSD는 6Gb/s이고 $137이며, 2-3년 후에는 같은 가격에 12G 드라이브가 있을 것입니다.

Amazon 가격 USD$124부터

엔터프라이즈급 SSD는 다른 기술(SLC)을 기반으로 구축되었으며, 같은 크기의 소비자급 SSD보다 약 30배 더 많은 작업을 수행할 수 있습니다. 또한 소비자급 SSD보다 약 3배 더 비쌉니다. 질문은: 3배 가격에 소규모 비즈니스 서버에 정말 30배 더 많은 IO 라운드가 필요한가?

빠르고 저렴한 솔루션을 찾고 있다면 저렴한 소비자급 SSD를 사용하고 정기적으로 교체하는 것(물론 펌웨어로 리소스를 모니터링)이 매우 매력적입니다.

SSD와 관련된 위험

적절한 사람으로서 우리는 소비자급 하드웨어가 더 적은 리소스를 가지고 실패할 가능성이 높다는 것을 이해하므로 이러한 가능성을 줄여야 합니다. 어떻게 줄일 수 있을까?

갑작스러운 하드웨어 실패의 가능성을 줄이려면 데이터베이스용 SSD 2개를 RAID1로 묶어 사용해야 합니다. RAID1이 별도의 RAID 컨트롤러가 필요함을 의미하지는 않으며, 현대 마더보드 칩셋의 RAID 기능을 사용하는 것으로 충분합니다 - 본질적으로 캐시가 없는 간단한 RAID 컨트롤러입니다.

업데이트: 마더보드의 저렴한 RAID 컨트롤러는 SSD의 TRIM 기능을 지원하지 않을 수 있으므로, 성능 저하를 방지하기 위해 소프트웨어 수준에서 동시 작업을 조율하는 소프트웨어 RAID를 설정하는 것이 권장됩니다.

캐시가 없다면 성능은 어떨까? 예제의 Samsung과 같은 현대 SSD는 내장 캐시와 매우 스마트한 컨트롤러를 가지고 있으므로 전용 RAID 컨트롤러 없이도 충분히 빠릅니다.

물론 디스크 상태를 확인하는 것이 필요합니다; 일반적으로 펌웨어는 디스크 수명에 대한 충분히 좋은 추정치를 제공합니다.

백업

물론 백업용 드라이브도 필요합니다. 가장 좋은 선택은 각각 2TB인 SATA 드라이브 한 쌍입니다 - 예를 들어, Seagate SkyHawk 2TB Surveillance Hard Drive, 5900rpm.

Amazon 가격은 $74.99입니다.

HDD 2개가 필요한 이유는 백업용 드라이브도 갑작스러운 하드웨어 실패로부터 보호하기 위해 RAID1로 묶어야 하기 때문입니다. 이러한 백업 드라이브는 꽤 느릴 수 있으며, 주요 목적은 백업을 저장하고 순차 읽기/쓰기의 적절한 속도를 제공하는 것입니다. 5900rpm 드라이브는 7200rpm보다 느리지만 더 안정적인 것으로 알려져 있습니다. 이 특정 시리즈의 드라이브(Seagate SkyHawk)는 선형 쓰기를 위해 설계되었습니다: 이것이 백업에 필요한 것입니다.

백업 드라이브의 위험

위험은 SSD와 동일하며, RAID1과 모니터링으로 동일한 방식으로 보호합니다. RAID1의 두 드라이브가 동시에 실패할 가능성은 거의 없어야 합니다.

시스템 드라이브

운영 체제용 별도 드라이브가 필요한가? 가장 저렴한 구성에서는 아닙니다 - OS와 데이터베이스를 같은 드라이브에 두는 것으로 충분합니다. 이는 SSD의 노후화를 약간 가속화하지만 그렇게 많지는 않습니다 - 우리 시나리오에서는 확실히 3년은 견뎌야 합니다.

CPU

Firebird 데이터베이스 서버의 경우 많은 코어와 가능한 낮은 주파수를 가진 CPU를 선택하는 것이 좋습니다. 네, 올바르게 읽었습니다 - 데이터베이스 서버에 고주파 CPU는 필요하지 않습니다. Firebird(제대로 구성된 경우)는 정상 작업에 모든 코어를 사용하지만 100% 비율로 로드하지는 않습니다.

예외가 있습니다: 고속 CPU의 이점을 받는 일부 유지 관리 작업(백업 및 복원)과 인덱스 사용이 잘못된 잘못 작성된 SQL 쿼리 - 이들은 코어의 100%를 소비하지만, 이는 데이터베이스 성능 최적화가 필요하다는 명확한 신호입니다. 일반적으로 하이엔드 CPU로 느린 쿼리를 보상하는 것은 불가능합니다: CPU가 3배 빠르더라도 느린 쿼리는 여전히 느릴 것입니다.

반면에, 여러 개의 코어가 있으면 그러한 CPU 소모가 많은 쿼리의 존재를 보완할 수 있습니다. 사용자 수가 25명 미만이고 코어가 8개라면, 모든 코어가 동시에 느린 쿼리로 점유될 가능성은 그리 크지 않습니다.

그리고 저렴한 솔루션을 찾고 있기 때문에 데스크톱 CPU로 제한됩니다. 유감스럽게도 AMD 칩으로 제한됩니다. 본질적으로, Intel이 AMD FX-8320E와 같은 가격이나 약간 더 높은 가격에 8코어 데스크톱 프로세서를 제공할 수 있다면 Intel도 사용할 수 있겠지만, 현재로서는 그러한 옵션이 보이지 않습니다.

이 AMD 칩은 그렇게 현대적이지도 빠르지도 않지만, 8개의 코어를 가지고 있고 저렴하므로 빠르고 저렴한 서버를 위한 최적의 선택입니다.

Amazon 가격은 USD$108입니다.

데스크톱 CPU와 관련된 위험

CPU와 관련된 잠재적 위험은 무엇일까요? 저주파수(즉, 오버클럭되지 않은) 칩과 적절한 쿨러의 경우 거의 위험이 없습니다. 데스크톱 CPU가 고장난 것을 마지막으로 언제 들어보셨나요? 2003년이었나요? 물론 서버 CPU가 훨씬 빠르지만, 우리는 충분히 좋은 솔루션을 찾고 있습니다.

가끔 발생하는 재부팅을 방지하기 위해 CPU 부하와 온도를 모니터링하는 것이 좋은 생각입니다.

RAM

필요한 RAM의 양은 데이터베이스 크기와 사용자 수에 따라 달라집니다. 우리 시나리오에서 데이터베이스 크기는 50Gb이고 최대 사용자는 30명입니다.

Firebird가 소비할 수 있는 최대 크기는 데이터베이스 크기(이 경우 RAM에 완전히 캐시됨)에 사용자당 200-300Mb를 더한 것입니다(Firebird 2.5 SuperClassic의 경우). 따라서 이상적인 최대 RAM 크기는 64Gb이지만, 비용을 절약하고 싶고 빠른 SSD가 있으므로 16Gb만 사용할 수 있습니다.

이러한 시나리오에서 일부 사용자는 8Gb로도 잘 작동하지만, 8Gb는 상당히 빠듯합니다. 이 경우 동일한 서버에서 다른 응용 프로그램을 사용해서는 안 됩니다. 16Gb가 권장되는 최소 최적값입니다.

Amazon 가격은 USD$59.99 x 2 = $120입니다.

RAM과 관련된 위험

RAM은 CPU보다 고장에 더 취약하지만 디스크보다는 덜 취약합니다. 엔터프라이즈급 RAM에는 패리티 검사와 같은 오류 가능성을 줄이는 특수 메커니즘이 있습니다. 메모리 오류의 위험을 어떻게 평가하고 줄일 수 있을까요?

첫째, 메모리 칩을 확인하는 방법이 있으며, 이러한 테스트를 성공적으로 통과하면 RAM 칩은 수년 동안 작동합니다. 둘째, RAM이 고장나면 일반적으로 매우 눈에 띕니다. 컴퓨터에 블루 스크린 오브 데스 또는 커널 패닉이 발생하거나 빈번한 재부팅이 발생합니다. 이러한 모든 증상은 확인이 필요하며, 결과가 좋지 않은 경우 RAM 교체가 필요합니다.

마더보드

마더보드는 모든 컴퓨터의 중요한 부분입니다. 다행히도 최신 데스크톱용 마더보드는 매우 안정적이며, 특히 4-5년 전에 출시된 마더보드는 필요한 모든 업데이트가 있고 안정적입니다. 그리고 - 네, 저렴합니다.

RAID 지원, 내장 비디오 칩, 충분한 SATA 포트가 있는 마더보드가 필요합니다. 다음과 같은 제품입니다:

ASUS M5A78L-M Plus/USB3 DDR3 HDMI DVI USB 3.0 760G MicroATX 마더보드

Amazon 가격은 USD$74,99입니다.

매우 긍정적인 리뷰가 있으며 RAID1을 쉽게 구성할 수 있습니다.

데스크톱 케이스

모든 컴퓨터 구성 요소를 연결하고 충분한 전원 공급 장치를 갖춘 데스크톱 케이스가 필요합니다. 다음과 같은 제품입니다: $76,82 http://amzn.to/2ydeYs1

UPS

서버의 일부는 아니지만 중요한 데이터가 있는 모든 컴퓨터에는 반드시 갖춰야 할 것이 하나 있습니다 - 무정전 전원 공급 장치(UPS)입니다.

UPS는 정전 및 전압 변동으로부터 컴퓨터를 보호합니다. 우리 경험상, 전력 서지 또는 컴퓨터의 비정상적인 전원 손실은 데이터베이스 손상의 주요 원인입니다.

$117.97에 판매되는 CyberPower CP1200AVR과 같은 제품이면 충분할 것입니다.

총계

결과적으로 모든 컴퓨터 구성 요소와 UPS의 총 가격은 USD 855,27입니다 - USD1000보다도 적습니다. 그러나 이러한 구성 요소가 작동하는 컴퓨터가 되기 전에 조립되고 OS가 설치되고 테스트되어야 합니다.

항목 가격 수량 합계
SSD Samsung 850 Pro 256 Gb MZ-7KE256BW $124,24 2 248,48
Seagate SkyHawk 2TB 감시 하드 드라이브 74,99 2 149,98
CPU AMD FX-8320E $86,02 1 86,02
RAM Corsair Vengeance 8GB $61,99 2 123,98
마더보드 ASUS M5A78L-M Plus $57 1 57
데스크톱 케이스 $69,99 1 69,99
CyberPower CP1200AVR $119.82 1 119,82
총계 855,27

서버 조립

이 모든 부품을 작동하는 서버로 조립하고 운영 체제를 설치하려면(저희는 CentOS7+ 또는 Ubuntu Server 16+와 같은 Linux 배포판을 권장합니다), 이러한 모든 구성 요소를 조립/올바르게 연결해야 합니다.

어렵지 않으며, 드라이버와 약간의 인내심, 지침을 주의 깊게 읽고 YouTube 동영상을 시청할 시간만 있으면 됩니다. 10년 전만 해도 거의 모든 개발자가 이러한 부품으로 컴퓨터를 조립할 수 있었지만, 요즘은 다르지만 여전히 어렵지 않습니다.

서버를 조립하고 싶지 않다면?

지름길이 있습니다 - 우리의 요구에 거의 맞는 유사한 구성의 컴퓨터를 구입하고 추가 구성 요소(예: 디스크)를 연결하는 것입니다.

이 컴퓨터를 살펴보는 것을 권장합니다 - 원래 게임 PC로 설계되었으며, 8코어 CPU와 16Gb RAM을 갖추고 있으며 가격은 USD$709에 불과합니다.

SSD 드라이브 한 쌍(+$248,48), 백업 드라이브 하나 더(+$74,99), 물론 UPS(+119.82)를 장착(케이스를 열고 연결)해야 합니다. 총액은 USD 1153입니다 - $1000 목표보다 높으며, 주로 비디오 카드와 멋진 데스크톱 케이스 때문입니다. BIOS에서 RAID1을 구성하고 사전 설치된 Windows 10 Home 대신 서버 OS를 설치해야 합니다.

이 접근 방식은 강력한 데스크톱 컴퓨터를 서버로 전환하는 데 사용할 수 있습니다 - 중복 SSD와 백업 드라이브를 추가하기만 하면 됩니다.

과거에는 많은 중소기업과 스타트업이 이러한 자체 구축 서버를 사용했지만, 현재는 클라우드 기반 가상 머신을 사용하는 추세입니다.

가상 머신은 자체 구축 서버와 어떻게 비교됩니까?

물론 자체 서버를 구축하고 유지 관리하려면 약간의 기술이 필요하며(보기보다 높지 않음), 많은 회사가 모든 하드웨어 서버를 없애고 싶어합니다(그리고 서버를 담당하는 시스템 관리자를 해고할 수도 있음).

다음 기사에서는 중소기업을 위한 데이터베이스 서버로서 클라우드의 VM을 고려하겠습니다.

Firebird 데이터베이스 성능에 관한 더 많은 기사:

  1. Firebird 하드웨어 가이드
  2. 1.7Tb Firebird 데이터베이스 튜닝
  3. Firebird 성능 최적화 서비스
  4. Firebird 데이터베이스 속도를 높이는 45가지 방법
  5. 최적화된 Firebird 구성 파일 모음

문의하기

궁금한 점이 있으시면 언제든지 문의해 주세요: [email protected].

감사의 말

이 기사에 대한 제안과 개선 사항을 보내주신 분들께 감사드립니다:

  • Vlad Khorsun
  • Dmitri Kuzmenko
  • Pavel Zotov
  • Sergey Nikitin
  • Emil Mustea