
"自宅サーバー"を動かしています。自分が作ったソフトウェアや、使ってみたいOSSを利用するためにコンテナ(Docker)を導入しようと考えているのですが、小規模環境でのベストプラクティスというものが分かりません。
今までは既存サーバーに同居させたりRaspberry Piをたくさん並べたりしていたのですが、環境がぐちゃぐちゃになるか、(負荷の関係で)Raspberry Piが1サービス1台になってお財布や管理がしんどいかのどちらかで、どちらにせよしんどいです。
Docker誕生の歴史を追体験しているような気がしますが、これらの理由から自宅サーバーにもDockerを導入したいと思っています。
「これからはクラウドだよ」という意見があるのも理解していますが、"自分が用意したサーバーで動かす"という行為を楽しんでいるので、今回はあくまで自宅サーバーで動かすという前提でお願いします。
(LEDがピカピカして、HDDがガリゴリ唸るの、見てて楽しいです。よね?)
検討したこと
目標としては、設定や運用に割く労力を軽減したいと思っています(ソフトウェアの開発に集中したいです)
可用性に関しては特に問いません(商売に使うわけではないので、ハード障害やちょっとした不具合を踏んだくらいであれば都度対応すればいいです。無停止で動く必要はありません)
そのために、自分なりにいくつかの方法を考えてみましたが、どの方法も一長一短です。
素のDocker
Dockerを素で使用する、という案です。
シンプルではありますがDockerサーバーが複数台になってきた時の労力を考えると……という感じです。
Swarm
Docker Swarmを使用する案です。
セットアップや管理運用がシンプルな所が良いですが、Kuberenetes一強時代にSwarm?という気がしています。
今から新規で導入しても廃れていく一方な気がしてなりません。
Kuberenetes
Kuberenetesを使用する案です。
Kuberenetesの勉強にもなりますし、個人的にも興味があります。使い始めることができればなかなか便利そうだな、とも思います。
ただ、セットアップやアップデートの手間を懸念しています。(労力を削減するためのコンテナ環境に労力がかかったのでは本末転倒です)
Rancharを使えばその辺りをカバーしてくれそうですが、情報の少なさが気になります。
データベースやストレージ
DockerにせよKubernetesにせよ、「データベースをどうするか?」という問題があります。
(Kubernetesであれば更に「永続化ストレージをどうするか?」という問題も増えます)
クラウドであればAWS RDSとかGCP CloudSQLみたいなものを使えばいいのでしょうが……おうちです。
主にMariaDBを使用する予定です。PostgreSQLやその他NoSQLなんかに関しては今のところ使う予定はないので、とりあえずMariaDBが良い感じに管理できれば、と思います。
コンテナで管理
サービスごとに別々のMariaDBを(コンテナで)デプロイする方法です。
コンテナ的には自然な感じがしますが、パフォーマンスが悪そうというイメージがあります。
また、Kuberenetesの場合は永続化ストレージとデータベースの相性が悪そうなのが……という感じです。
悪くない方法だとは思いますが、良い方法だとも思いません。
DBサーバーを用意
Dockerを使用しない素のMariaDBを1台用意して、コンテナからはそれを利用する方法です。
要はRDSとかCloudSQLっぽい事をやろう。という具合です。
SQL専用の調整が出来るのでパフォーマンスも悪くなさそうだとは思いますが、すこしやりすぎのような気もします。
今のところは
DBサーバー+Kuberenetesが一番使いやすく違和感のないシンプルな設計になるかな……とは考えています。
自分でも色々考えたりしてみるのですが、Dockerに精通しているわけではないのでさじ加減が分かりません。
「おうちじゃないけど、お仕事でやってたよ」みたいな方でも構いません、「こういう理由で、私はこっちをおススメします」というようなアドバイスを頂ければと思います。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/01/31 01:36
2019/01/31 02:04
退会済みユーザー
2019/01/31 08:28