シェルスクリプトのかわりにGoで書くようになるまで(その2)


前回のあらすじ:

  1. シンプルではないものをシンプルに「してしまう」ためにシェルスクリプトが利用されてしまっている場合がある

  2. 適切な対処を行なおうとすると、何を使おうともそれなりに用意しないといけない

  3. いちいち毎回最初から書く必要は無い

さてでは実際に書いてみようと考えた場合に、どう準備をしたらいいでしょうか? 開発者視点で考えると、どのような言語・フレームワークでも良いように思えます。

ではこれを運用視点で考え、と、次のような条件への合致度が高い手段を優先的に採用することになるわけです。

  1. 運用ツールはOS・システム側言語・環境に影響されないこと

  2. システム本体と言語・環境を合わせることはできない前提とすること

  3. 並行処理・非同期処理が可能であること

  4. 導入とアップデートがシンプルに可能であること

  5. プログラミング/コーディング上の簡易さや記述量はもちろん重要ではあるものの最優先にはしない

  6. 便利であろうと事態を複雑化させるような仕組みは除外(言語バージョンや環境を複数並立させる仕組みなど)

  7. 自己実行形式にできるものは評価をプラス加算する

このように考えると、現実的には、選択肢はある程度絞られてくるわけです。 あとはもう決断の問題ですね。

…ということで最後すっとばした感が無くはないですが、Goで行こうということになったわけです。

最新記事

すべて表示

SQLite(sqlite3)で “no such table”

小ネタです。 SQLiteを使っていて "no such table" とエラーが出た場合、 DBファイル名の指定が空になっている、という凡ミスを起こしていないかを確認してみましょう。 ・・・ そういう凡ミスをしてしばし悩んだので… ファイル名の指定が空になっている場合、一時的なインメモリDBとして保存されます(※1)。 つまりDB接続を切断すると中身は消えます。 なので接続

アプリケーションサーバにポートを指定せずに起動すると?

最近、 Goで書かれたアプリケーションサーバが起動しない! ->原因: .env ファイルが欠けていた というドタバタがありました。 結局Goと関係ないですが、この時、 「あまりGoに慣れてないのでGoの問題かと…」「DockerまだよくわかってなくてDockerの問題かと…」 というような声があったのて、あえてGoで検証してみようと思ったわけです。 さて、Goでサーバサイドのシステムを作

GitLab 9.1.2 (MySQL) を 11.4.0 (PostgreSQL) にアップグレード

弊社ではかなり前からGitLab(CE)を自社環境で運用しているのですが、ふと気付くと、バージョンがだいぶ先に行ってしまっていました。 とくに最近のバージョンでは Auto DevOps なども使えるようになっていたりするので、さすがにそろそろキャッチアップしたいと考えたわけです。 現行の環境は次の通りです: GitLab 9.1.2 sameersbn/gitlab 使用 MySQL 5.6