2018-12-05に更新

Crieitの普段の運用方法について色々

個人開発の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

デプロイは前述の通り手動ですが、テストだけCIしています。Werckerという無料のものを使っていて、リポジトリはBitBucketを使っているのですが簡単に連携ができます。

とはいえ、個人開発ですしあまりテストにまでガッツリ時間を書けている余裕はないため、基本的には他のアプリケーションを作る時も含め、テストはほとんど書きません。一応CI成功して嬉しい~というところまでは味わいたいので最小限だけ書いており、例えばCrieitでは下記を書いています。

  • トップページのレスポンスが200か
  • 記事詳細ページのレスポンスが200か
  • 匿名コメントでユーザーの名前が表示されてしまったりしないか、というプライバシー面

等。それ以外は、今後何かしら修正や機能拡張が必要だった時に、

  1. 修正前に正常系のテストを書く
  2. 開発
  3. 開発完了したらテストがちゃんと動くか確認及び調整

という感じでテストを増やしていけばいいと思っています。

デプロイもすれば良いのですが、設定するのが面倒なのでやっていないだけだったりします。

データの閲覧や操作

データは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開発者

Crieitの開発者です。 主にLAMPで開発しているWebエンジニアです(在宅)。大体10年程。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel5, CakePHP3, JavaScript, RoR 趣味:Elixir, Phoenix, Node, Nuxt, Express, Vue等色々

Crieitはαバージョンで開発中です。進捗は公式Twitterアカウントをフォローして確認してください。 興味がある方は是非記事の投稿もお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか
関連記事

コメント