個人開発のWebサービスの技術紹介となると「こういうふうに作りました!」というのが多くQiitaのAdvent Calendarも含めると色々かぶる気がするため、運用周りについての色々を書いてみることにしました。(実際に作った系は自分が今まで書いた記事にもう既に書いてしまっているものも多く、そもそもそことほとんどかぶってしまうと思いますし)
個人開発サービスに用いられている技術 Advent Calendar 2018 の3日目です。昨日は @morix1500 さんの Nyaaanを支える技術 でした。
docker-composeを使っているのでとりあえずコンテナを起動し、ローカルのURLで開発を行います。1
フロント側も開発する場合、Node関連は全部WSLに入れているのでとりあえずwsl
を実行してあとはLaravel標準で入っているコマンドのyarn run hot
によるホットリローディング状態で開発していきます。
フロント側で何かしらを対応した時は、ビルドしておく必要があります。ビルドするとmix-manifest.json、js、cssファイルが更新されます。
Crieitの場合は現在これらをcommitしています。こうすることで本番ではpullするだけで全て完了しますし、なにか本番で問題が見つかった場合はpullする前の状態に戻せばすぐ復旧できます(バージョニングをしているため)。業務などでCIでデプロイまでしっかり作るのであればそれでいいと思いますが、個人開発であればこれがフットワークが軽くて一番良いと思います。
開発した内容をサーバーにデプロイする場合はssh接続します。今使っているのはGoogle Compute Engineなのですが、gcloudというシェルで色々操作することができます(予めインストールしてシェル上にログインする形です)
ログインのコマンドはGCPのコンソールのGCEインスタンス一覧のところでコピーしてこれるので、何も考えなくても簡単にログインできます。コマンドは下記のような感じです。
gcloud compute --project "プロジェクトID" ssh --zone "ゾーン" "インスタンス名"
あとは普通にユーザーを切り替えてフォルダ移動してgit pull
や必要であればマイグレーションを実行するだけです。
デプロイは前述の通り手動ですが、テストだけCIしています。Werckerという無料のものを使っていて、リポジトリはBitBucketを使っているのですが簡単に連携ができます。
とはいえ、個人開発ですしあまりテストにまでガッツリ時間を書けている余裕はないため、基本的には他のアプリケーションを作る時も含め、テストはほとんど書きません。一応CI成功して嬉しい~というところまでは味わいたいので最小限だけ書いており、例えばCrieitでは下記を書いています。
等。それ以外は、今後何かしら修正や機能拡張が必要だった時に、
という感じでテストを増やしていけばいいと思っています。
デプロイもすれば良いのですが、設定するのが面倒なのでやっていないだけだったりします。
データはMySQLで、元々は本番に適当にphpMyAdminを入れていました。むちゃくちゃ長いフォルダ名にしていたので問題はないと思うのですが、仕事でも何度かいつの間にか非公開URLがGoogleにインデックスされる現象を見てきたので一応今は削除してあります。
前述のsshとほぼ同じ方法でポートフォワーディングができるので、手動でそれを実行してPC上のクライアントで見ています。(下記を実行したあと接続)
gcloud compute --project "プロジェクトID" ssh --zone "ゾーン" "インスタンス名" -- -L 13306:localhost:3306
Windowsでよく使われるクライアントといえばWorkbenchだと思うのですが、見た目があまり好きではなくデータのセルも変なふうに見えるのであまり使っていません。(今回は関係ないのですが)sshトンネルができれば何でも良いので、適当に最近流行ってそうなクライアントを使っています。
今はHeidiSQLというやつで、Linux Mintの時はたしかTeamSQLとかだったと思います。
深夜0時まで起きてたら前日の参照元を見たりしてます。Search Consoleは更新が1時くらいで大体起きてないので翌日の朝に最新の日の流入キーワードとかを見てます。あまり変わり映えしないので飽きてきましたが。
ヒートマップも一応入れているのですが、サービスの特性上読まれるところが読まれて、クリックされるところがされて、という感じでたいして驚きのある結果にはならないのであまり見ていません。
個人開発なので超適当です!
時間もないですし適当に手を抜けるところはガンガン抜いてサービスの改善に努めましょう!!!
明日は @kame_f_no7 さんです!
1: 以前こちらに書いています。 Qiitaの様なサービス作成中 ローカル環境構築 連載(1)
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント