LoginSignup
6
6

More than 3 years have passed since last update.

インフラ構築あるあるをGoで解決する!

Posted at

Goにはまってるインフラエンジニアです。インフラ構築あるあるをGoで解決したいと思ってます。

背景

その昔のワタシと後輩の電話
※後輩は現地のマシンルーム、ワタシは事務所にいました。

後輩:コマンド間違えました!よくわからんコトになってます!
ワタシ:よくわからんって何や!ログ見て!
後輩:マシンルーム圏外やから外から電話してます!ログ見れないっす!
ワタシ:とりあえずSSHでログ見るか...
ワタシ:何やったのかさっぱりわからぬ\(^o^)/
ワタシ:現地行くか....

ってことがよくありましたね。こういうときのミスない遠隔HELPって何かできないかな〜と思って、
chatサーバ作るぜ!って思いました。

巷にはwebsocketを使ったchatはあったのですが、↑みたいな場面ってSSHしかできないようなケースあるんで、
普通のsocketで作りました。あまり先行事例がなくて、結構ムズかったです。ゴルーチンとチャネルが難しい....

超絶参考にさせていただきました↓
https://blog.logicky.com/2017/06/16/go-%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F/

感想

slackすげーなって本当に思いました。
作り終わったあと、プログラミング言語Go読んだら、8章にチャットサーバあった.....
chatでテスト難しくね?それともワタシのアーキテクチャがダメなのか? ← このへん改善やな....

工夫したとこ

  • ターミナルからSSHでつなぐので、ルームでトークを分ける機能とかいらね!ってことでルームは公開ルーム1つだけっす!
  • 過去のトークはgrep検索したいやん!ってことでテキストファイルでトークを残すことにしました!

https://github.com/kuritayu/infra-tools/blob/master/cmd/tchat/main.go
go get github.com/kuritayu/infra-toolsでも取れます

とりあえず使い方。

  1. 作業サーバにSSHでログイン
  2. tchat &でサーバを起動(-pでポートを指定できる)
  3. 別ターミナルからSSHでログイン
  4. tchat -cでサーバに接続
  5. 名前を聞かれるので適当に入れる
  6. メッセージ入れると接続している人全員に配信する
NAME:
   tchat - chat tool by terminal

USAGE:
   tchat [global options] command [command options] [arguments...]

VERSION:
   1.0

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   -c             (default: false)
   -p value       (default: 7777)
   --help, -h     show help (default: false)
   --version, -v  print the version (default: false)
6
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6