はじめに
こんにちは。@komasayukiです。
この記事は、むちゃぶりにも応える開発技術があるって?!〜3つのテーマで記事を募集〜 by V-CUBE Advent Calendar 2023 の15日目です。
V-CUBEさんはTencent Cloudの日本代理店で、Tencent Cloudに関わるカレンダーです。
Tencent Cloudを調べていたら、個人開発のサーバーに最適なTencent Cloud Lighthouseを見つけて、使ってみたので紹介します。
このAdvent Calenderには3つのテーマがあって、
③あの時Tencent Cloudがあったら苦労しなかった?おじさんエンジニアの昔話
を選びました。個人開発の昔話から書いてみます。
個人開発のサーバー、何を使ってきた?
〜2009年まで 自宅Linuxサーバー
もらった古いパソコンをサーバーにしていました。枕元でサーバーがうるさいので、ファンの回転数を落とし、静音HDDケースを自作し、紐で空中に浮かせるテクニックで乗り越えました。長い間運用していましたが、ラッキーなことに何一つ壊れませんでした。
2009年〜 Google App Engine + Java
2008年にGoogle App Engineが発表されました。PaaSです。最初はPythonサポートだけでしたが、2009年にJavaが実行できるようになり、そこから乗り換えました。
これが革新的だったのは、かなりの規模まで無料で利用できたことです。私のようなフリーライダー 節約家には最適でした。
当時、スマホアプリ向けAPIサーバーを運用しており、それなりのトラフィックをさばいてくれました。
2011年〜 Google App Engine値上げ、でも継続
2011年、GoogleからGoogle App Engineの値上げが発表され、無料での運用が困難になり、有料でもコストが3~10倍になりました。
私はAPIサーバーの仕様を縮小して、コスト構造にあわせて再実装、無料枠に押し込めるという 乞食根性 改善で乗り越えました。
2013年〜 Heroku、AWS、さくらサーバー、他
それ以降は、いろんなサービスを転々とします。
Herokuは個人開発者のヒーローでした。
しかし、Herokuも2022年に無料枠廃止を発表し、無料ユーザーへのサービス提供をギブアップします。以降はサーバーで月7ドル、+データベース5ドルとなり、難民が大量発生しました。
ユースケースによってはAWS Lambdaが有効でした。2018年にAPI GatewayがWebSocketサポートを追加したことにより、さらに使い道が広がりました。ただ、実装は独自になり、開発は大変でした。
Tencent Cloud Lighthouse
そして、今回初めてTencent Cloudを使ってみて、個人開発サーバーに最適なサービスを見つけました!
月5ドルです。
(現在、初回限定セールでここから更に60%オフをやっていて、月払い、年払い両方対象です)
スペックは、
- Linux
- 2コア
- 2Gメモリ
- 30Gディスク
- 30M Bandwidth
- データ通信量は1T/月
となっています。個人開発に良さそうです。今まで、このサービスを知らなかったのが不思議なぐらいです。
Lighthouseを買ってみる
Lighthouseのページからサーバースペックを選ぶと、次はサーバーイメージを選択します。
Dockerを選びましたが、他にもLAMPやNode.js、WordPressなど様々なテンプレートがあります。
この後、支払いをすると、すぐにインスタンスが立ち上がりました。
インスタンス画面
立ち上がったインスタンスを選ぶと詳細な情報やモニタリング画面が出てきます。
安価なPaaSなので、制限が多いのかと思いきや、インスタンスには普通にターミナルログインできます。(ブラウザ or SSHで)
ファイル転送はブラウザからもできます。
最初に選んだイメージは後から変更できました。購入時にイメージを選ぶので、変えられないかもと思ってDockerを選んだ自分がアホみたいです…
シェルからDockerコマンドを使う
シェルからdockerコマンドを使おうとすると弾かれます。
[lighthouse@VM-0-12-centos ~]$ docker images
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied
dockerグループにユーザーがいないためです。ユーザー権限でdockerを使えるようにするには以下のようにします。
$ sudo gpasswd -a $USER docker
$ newgrp docker
Dockerが使えるようになったので、ついでにGeekbenchをDockerで実行してみました。
$ docker run -it --rm davidsarkany/geekbench && docker rmi davidsarkany/geekbench
System Information
Operating System Ubuntu 20.04.6 LTS
Kernel Linux 3.10.0-1160.99.1.el7.x86_64 x86_64
Model Tencent Cloud CVM
Motherboard N/A
BIOS SeaBIOS seabios-1.9.1-qemu-project.org
CPU Information
Name Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz
Topology 1 Processor, 2 Cores
Identifier GenuineIntel Family 6 Model 94 Stepping 3
Base Frequency 2.49 GHz
L1 Instruction Cache 32.0 KB x 2
L1 Data Cache 32.0 KB x 2
L2 Cache 4.00 MB x 2
L3 Cache 27.5 MB
Memory Information
Size 1.95 GB
ベンチマーク結果は
- Single-Core Score 909
- Multi-Core Score 1069
となり、マルチコアが奮っていませんが、Raspberry Pi4程度の性能はありそうです。
以下はアップロードされたスコアです。
自分で開発したコンテナを使うには?
PublicなDockerイメージではなく、自分のイメージを使う場合は、Tencent Container Registry(TCR) IndividualにイメージをPushする必要があります。
これはAWS ECRみたいなレジストリで、SLAつきのEnterpriseと、SLAなし無料のIndividualが選べますが、LighthouseではIndividualのみが使えます。
TCR IndividualのInitialize passwordから、パスワードを設定することで、PCからdocker loginして、イメージをTCR IndivisualにPushすることができます。
コンテナの作成
Lighthouseのインスタンスを開いて、上部のContainer managementからコンテナを作成できます。
ここではnginxを立ち上げます。
Portバインディングもここで設定します。
インスタンス内には、コンテナを複数立ち上げることができます。
ファイヤーウォールの設定
Lighthouseのインスタンスから、上部のFirewallを選択すると、Firewall設定画面が開きます。
これはデフォルトのままですが、がっつり開いてるので設定してから利用したほうがいいでしょう。
ログを見る
様々な機能がありましたが、コンテナログをブラウザからは確認できませんでした。(できるのであれば是非教えてください!)
ブラウザからターミナルログインして、docker logsコマンドで確認はできましたので、そんなには困らないかと思います。
Tencent Cloudを初めて使ってみて
普段はAWSを使っており、GCPやAzureも少し経験があります。
Tencent Cloudを使ってみた思ったことは、ドキュメントが充実している、UIが洗練されている、ということです。
初めての人が使うなら、AWSより使いやすいんじゃないかと思いました。
何より、月5ドルでここまで使いやすいサーバーが使えるのは個人開発だけでなく、企業でも有用だと思います。
最後に
さて、この記事のテーマは以下でした。
③あの時Tencent Cloudがあったら苦労しなかった?おじさんエンジニアの昔話
5ドルでこんなに使えるサーバーが当時にあれば、
- 枕元の自宅サーバー騒音と戦ったり
- 無課金になるようにソフトをチューニングしたり
- 無料サービスがなくなってサーバーを乗り換えたり
とか、しなくて済んだのになぁ…