Basecampの公式ブログ(Ruby on Railsの作成者)からのGoの会社での使用方法に関する記事の翻訳。BasecampはRubyベースの会社です。 すべてのクライアントアプリケーションはRuby on Railsで記述され、Rubyを使用してChefを自動化し、RubyをCapistrano経由でデプロイします。ほぼすべてのタスクについて、この仕事を行うRubyスクリプトを見つけることができます。
同時に、Go言語は、さまざまな方法でバックエンドサービスおよびインフラストラクチャの中で採用されています。

- データを受信および保存するためのデーモンは 、2013年1月にRubyからGoに書き換えられました。
- Rubyビルドスクリプトは、Dockerを使用してサーバー上に新しいRubyパッケージをビルドします
- Goプログラムのセットを使用して、Kafka、HDFS、およびHBaseでログの書き込みを解析および保存するシステム
- Goで書かれたユーティリティを使用して、DynectからDNSレコードをバックアップします
- Goのユーティリティを使用してNagiosをインストールするマルチウィザードを維持します
- Goプログラムを使用してGitHubのコミット後フックをサポートします
- 追跡システムのサーバー部分は、ユーザーとページビューをリアルタイムで監視し、完全にGoで記述されています
- Goプログラムを使用して、データベースバックアップの整合性を定期的にダウンロード、解読、および検証します。
同時に、Goにはまだ実稼働に至っていない多くの実験があります。パケットダンプ(?)からの同期でいくつかのmemcachedインスタンスをサポートする、Webソケットを介してCampfireを送信する、Railsアプリケーションをdockerコンテナーにパックするなどです。 また、サードパーティのGoアプリケーション(
etcdおよび
sentinel )を非常に積極的に使用しており、データセンター間での恋人を提供しています。
Goの使用は非常に自然です。 私たちはいつか座りませんでしたし、決めませんでした-それを使いましょう。 人々はGoで新しいことを書き始めました。
個人的には、データを処理するプログラムにとって非常に便利なチャネルとゴルーチンのセマンティクスのためにGoが好きです。Goプログラムの固有のパフォーマンスは、パーサーがサーバーに大きな負荷をかけることを心配する必要がないことを意味します。 言語自体でコードを書くのはとても良いことです-単純な構文、優れた標準ライブラリ、リファクタリングしやすいです。 Goが好きな理由を何人かに尋ねました。
Will :GoはOpsタスクの優れた発見です。 エラー処理は、システムソフトウェアの記述方法に非常に自然に適合し、同時にコードはマルチコアを効率的に使用でき、リリースごとに改善されます。 また、非常に単純な展開で、依存関係をパックしてRubyバージョンを構成する方法を考える前に、バイナリを入力することができます
テイラー :新しいプログラミング言語を学ぶとき、遅かれ早かれ、本当の問題を解決しようとして、言語とその長所についての知識を深めようとする瞬間がやってきます。 Goの優れたドキュメント、テストと展開の容易さ(一度コンパイルすればどこでも1つのバイナリを実行できます)により、初心者でもほぼ最初から生産的で信頼性の高いソフトウェアを作成できます。 Rubyプログラムのマルチスレッドバグのデバッグに何時間も費やすことができる場合、動作するチャネルを使用してGoで数分かけて書き換えることができます。 そして、競争力を必要とする単純なスクリプトであっても、これは大きな勝利です。
もちろん、GoでBasecampのバージョンが完全に書き換えられることはまずありませんが、Goがインフラストラクチャで確実に地位を占めていることは間違いありません。
Goを
試したことがない場合は、
今すぐ試してください!