自分で、でっかいベアメタル(物理)サーバーを作りたい方へ

# はじめに

[Link-U](https://www.link-u.co.jp/)でCTOをしています、山田です。
ちょっと変わってるんですが、Link-Uでは技術開発部長とCTOが別の人間になっています。
山田が主に外部への技術の売り込みや、技術開発の方針などを担当し、
このAdvent Calendarの[初日](https://qiita.com/ta2xeo/items/4636c83b27004a3e8e51)を書いている土屋が内部の統括をしています。

まあ、そんな社内の事情はさておいておきまして、
Link-Uの特徴でもある、でっかいベアメタルなサーバーについてお話しましょう。

__皆様、サーバーはAWSでしょうか？__

__皆さんAWSのようですね__、ありがとうございます。

そんな皆様がどこかで心変わりをして、__自分で高性能なサーバーを安価に作ってやろうやないか！__

という気持ちになった時に、__エンタープライズなサーバーを自作する参考__
になれば良いと思って書いておきます。

需要はひょっとすると、日本にはもう既にないかもしれません。

あるいは、我流なので、もっと詳しい方がいるかも知れません。

まあ、毎日3桁万人の方が利用する__マンガワン__のサーバーもそうやって作ったので、
それなりに信憑性はあるのではないでしょうか？

ボチボチ書き始めます(レベル的にはPCの自作ユーザーぐらいを対象に書きます)

# 作例

| 作例 | CPU | メモリ | NVMe SSD(NAND) | NVMe Optane |
|:-----------:|:------------:|:------------:|:------------:|:------------:|
| マンガワン | Xeon Gold 6244(8コア)×4 | 768GB | 8TB×3+1TB×1 | 1.5TB×2 |
| 仮想化基盤 | EPYC 7702P(64コア)×1 | 2TB | 16TB×10 + 2TB + 1TB | - |
| とあるマンガサービス | EPYC 7742(64コア)×2 | 1TB | 8TB×3+1TB×2 | 1.5TB×1 |

### マンガワンのサーバー

実は過去にプレスリリースの下の方に[しれっと](https://prtimes.jp/main/html/rd/p/000000012.000038982.html)スペックを書いたことがあります。

ベアメタルなサーバー大好きクラスタとかの人が話題にしてくれないかなーと思っていたのですが、
__私が観測可能な反響は無でした。__

もうこの記事の需要の無さが推測されるようではありますが、意図を解説しましょう。

[Xeon Gold 6244](https://www.intel.co.jp/content/www/jp/ja/products/processors/xeon/scalable/gold-processors/gold-6244.html)というCPUはコア数が少なく、クロックが高く、
最近Apple M1で話題のシングルスレッドの能力が高いモデルです。

マンガワンのサーバーではCPUを4つ搭載することで、コア数の少なさをゴリ押しで解決しており、
__会社のフラッグシッププロダクトらしい予算の潤沢さが伺いしれます。__

また、マンガアプリなのでSSDは搭載量が多いのですが、Optaneの1.5TBを2本搭載しており、
1本を/tmpやアクセスログ、DBのトランザクション一時ファイルの置き場所に、
もう1本をマンガのサムネやページデータなどの画像置き場に利用しています。
__マンガの画像を1msでも早く届けたいという熱い思いがOptane SSDに現れています。__

### 仮想化基盤

専用のサーバーを用意するほどの規模ではないプロダクト群を収容するサーバーです。

最近の弊社のプロダクトの傾向として、CPUは余りがち、メモリはあればあるだけ嬉しい、
ついでにいうとラックの電源容量が厳しい、という傾向があり、
それを反映してCPUは1個、メモリが2TBとかなりメモリに寄せた構成になっています。

CPUの[EPYC 7702P](https://www.amd.com/ja/products/cpu/amd-epyc-7702p)はシングルソケットにしか対応しない代わりに、
価格が2ソケット対応の[EPYC 7702](https://www.amd.com/ja/products/cpu/amd-epyc-7702)に比べると割安になっています。

またSSDも1サービスに付き16TBのSSDを1本割り当てる、シンプルな構成になっています。

### とあるマンガサービス

こちらは打って変わって、とにかくCPUのマルチスレッド性能を最大化したサーバーです。
CPUの[EPYC 7742](https://www.amd.com/ja/products/cpu/amd-epyc-7742)は当時は、というかEPYC 7003シリーズが出ていない今も、
マルチスレッドは最強のCPUであり、それを2個搭載しています。

__htopも夢が広がります。__
![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927108/13984bef-b7c6-68b2-4225-3b1c4830bf6f.png)

このように、自分でサーバーを作れば、上で動かしたいものの特徴に合わせて、
自由自在にスペックを決めることができます。

# 買い方

もう皆様、サーバーを作りたくてしょうがなくなってきたと思うのですが、
こういうパーツはさすがの秋葉原でも在庫していません。

### 完成品、ベアボーンで買いたい場合

いきなり趣旨から外れている気がするのですが、
パーツを指定してBTOみたいな感じで購入することもできます。

国内であればGigabyteやSupermicroが購入しやすいでしょうか。

[Gigabyte](https://www.gigabyte.com/jp/Rack-Server)の方が安いのですが、安定性では[Supermicro](https://www.supermicro.com/ja/home)だなと思うことがあります。
このあたりの選択も予算とご相談ですね。

弊社は[NTTPC](https://www.nttpc.co.jp/)からベアボーンのような形で購入して、
オフィスでSSDやネットワークカードなどを組み込んで利用しているサーバーが最近は多いです。
GigabyteもSupermicroもNTTPC経由で購入できます。
両社のHPに乗っている機種はオーダーストップになっていない限りは発注可能です。
CPUなどもEOL(End of Life)になってない限りは全種類選択可能です。
そういう意味では普通のBTOよりはかなり選択肢があります。

勿論完全な完成品として購入することも可能ですが、
メーカー側でバリデーションが取れているパーツ以外はオーダーできないので、やや選択肢がせばまります。
バリデーションが取れていなくても自作PCと一緒で大体動きますが、
たまにサーバーが起動できなくなっちゃうお茶目なSSDもあったりします。
(中がRAIDになってるようなやつで、普通のは大丈夫です)

### パーツから買う場合

弊社だと海外の[Wiredzone](https://www.wiredzone.com/)からパーツ等を買うことがあります。
サーバーのベアボーンを購入する場合は電源ケーブルは付属のものを利用せず、
PSEマークが付いているものを別途購入して使ってください。

WiredzoneはSupermicro製品なら大体何でも揃ってる米国のショップです。
最安値というわけではないのですが、この手の製品で購入実績が公表されることはレアでしょうから、
参考にしてください。

また、大体の値段感を掴んだり、

「あのシャーシとこのシャーシの価格差はこのくらいか」

みたいなことを知るのに便利です。

メモリやSSDはある程度の量、もっと具体的に言うと大きいサーバー3台作るぐらい、の規模があれば、
サムスンの代理店のトーメンデバイスから購入することが可能になるので、
__Wiredzoneの英語に悪戦苦闘したり、国際送金を依頼して管理部に嫌な顔をされずに済みます。__

# FAQ

### 普通にメーカーから完成品を買うのと比較したときのメリットは？

低価格品は正直、量産が効いているメーカー品と比較して価格メリットはないです。
が、メモリがTB単位とかSSDが数十TBとか誰もオーダーしないようなものは価格メリットがかなりあります。
というより、そんな変なモデルはカタログにないことも多いです。

またメーカー製サーバーはコスト管理が行き届いており、
マザーボードに液体電解コンデンサーとかが使われていたりして、
自作er的には「この値段で液コンかー」という気持ちになります。
メーカー製サーバーでも保証の延長とかできるんで多分壊れないんだと思いますが。

後、メーカー製サーバーは電源ユニットの容量が限られていることが多く、
拡張余地が少なかったりします。

### なぜでかいサーバーを買うのか？

これはプログラミングをする人しかわからないと思うのですが、

__「サーバーの台数を増やせばリニアに処理能力が増える」分散システムは簡単には作れない！__

のです。

Link-Uはメーカーのカタログにも存在しないような超高パフォーマンスなサーバーを買うことで、
できるだけ1台で捌き、__分散非対応システム__を作ることでプログラムを単純化し、
おまけとして、サーバー間の通信を減らすことで、高速化もしています。

__マンガワン__などもAPIリクエストで月間2桁億APIアクセス、CDNを使ってないので画像配信もありますが、
1台のサーバーで捌いています。(サーバーは冗長化の都合上3台あります)

### パーツ選定時に気をつけることは？

ネットワークはIntelイチオシ、まあ自作PCでもそうですが。
別にMellanoxでもいいんですけど、入手性と安定性を考えるとIntelかなーという気がします。
この規模のサーバーになればネットワークも10Gbpsあったほうが良いと思います。
Link-Uの最近のサーバーはIntelの10GbpsのSFP+です。

SSDはエンタープライズのNVMeがいいです。
Gaming SSDとかも使ったことがありますが、壊れます。SATA SSDはもっと論外に壊れます。
さすがに、24時間365日ガリガリする用途向きではないのでしょう。
逆にエンタープライズ向けのSSDはほとんど壊れません。

後Gaming SSDとかは瞬間性能で書いてありますが、
エンタープライズのSSDは持続性能で書いてあることが多いので、
一瞬「Gamingの方が高性能？」と思うことがありますが、そんなことはありません。

また、Gamingはサーマルスロットリング食らってギャフンということもあります。

### 設置時に気をつけることは？

このクラスのサーバーはさすがに空調があるところで、ラックに入れると思いますが、
意外と細い電源ケーブルとLANケーブルにすると空気の通りが良くなって、
サーバーの排熱がうまくいくようになります。

サーバーの排熱がうまくいくと、FANの回転数を落として静か&低消費電力にしたり、
ターボブーストで性能を引き上げることもできます。

勿論、ラックのブレーカーをふっとばさないようにしましょう！

### EPYCで困ったことある？

全部第2世代EPYCのサーバーで、シングル、KVM、LXDと3種類9台導入事例がありますが、
特に困ってないですよ。

Full HDのディスプレィだとhtopが画面に収まりきらないことぐらいでしょうか(笑)