|
[51CTO.com クイック翻訳] GoogleのGoプログラミング言語は10年前から存在し、間違いなくその名を馳せてきました。豊富なライブラリと抽象化によって並列分散(クラウド)アプリケーションの開発が簡素化され、軽量でコンパイルしやすいGoは大きな注目を集めています。 しかし、プログラミング言語の真の成功は、開発者がその言語で作成するプロジェクトによって測られます。Goは、Webサービス、ソフトウェアインフラプロジェクト、そして強力でコンパクトな様々なツールを迅速に開発するための最適な選択肢であることが証明されています。 この記事では、Goで書かれた注目すべきプロジェクトを10件紹介します。その多くは、Go言語自体よりも有名です。これらのプロジェクトはすべて、それぞれの分野で重要な役割を果たしてきました。紹介されているプロジェクトはすべてGitHubでホストされているため、Goに興味のある方は誰でも、これらのプロジェクトを成功に導いたGoコードに簡単にアクセスできます。 ドッカー Docker以上にGoの成功例を見つけるのは難しいでしょう。わずか1年余りで、このソフトウェアコンテナ化技術は、大規模分散ソフトウェアプロジェクトにおけるGoの応用のパラダイムとなりました。Dockerチームは、依存関係のない静的コンパイル、強力な標準ライブラリ、包括的な開発環境、そして最小限の労力で複数のアーキテクチャ向けにビルドできる機能など、Goの多くの利点を高く評価しています。 Kubernetes DockerがGoで書かれているのであれば、論理的に他の主要なクラウド指向コンテナプロジェクトもGoで書かれているはずです。GoogleのコンテナオーケストレーションプロジェクトであるKubernetesはGoプロジェクトであり、そのサブコンポーネントやエコシステムのほとんどもGoで書かれています。その好例が、Kubernetesの超軽量派生版であるk3です。これは、Kubernetesの基本コンポーネントのみを必要とするユーザーに適しています。 GoogleはKubernetesの開発に他の言語(C/C++、Java、Pythonなど)の使用を検討しました。しかし、Kubernetesの共同創設者であり、元テクニカルリードで現在はVMwareのチーフエンジニアを務めるジョー・ベダ氏によると、これらの言語はどれもGoほど「満足できる」ものではありませんでした。ベダ氏の言葉を借りれば、「Goは高レベルすぎることも低レベルすぎることもありません」。 フェドラコアOS CoreOS(現在はRed Hatプロジェクト)は、Dockerを使ってLinuxを疎結合なコンテナ群に変換し、Linuxパッケージ管理の根幹を成す依存関係の複雑さを解消できる可能性があります。そのため、CoreOSがこの魔法を実現するためにDockerを活用しているのは当然のことです。CoreOSのコアサービスであるEtcdとFleetはどちらもGo言語で記述されています。Fleetを使うと、「CoreOSクラスタを単一の共有初期化システムのように扱うことができます」。Etcdは、DockerアプリケーションとCoreOSインスタンス間のセットアップ同期を処理する分散キーバリューストアです。どちらもGo言語で記述されており、「優れたクロスプラットフォームサポート、小さなバイナリ、そして強力なコミュニティ」を誇ります。 インフルックスDB InfluxDBは「外部依存性のない分散型時系列データベース」です。「時系列」とは、InfluxDBが主にメトリクスやイベントの取得を処理し、それらをリアルタイムで分析できることを意味します。「外部依存性がない」とは、InfluxDBを使用するために他のソフトウェアを必要としないことを意味します。InfluxDBは完全に自己完結的です(Goアプリケーションではよくあることです)。データベースへのデータの書き込みや読み取りは、JSONを送信するREST呼び出しを介して実行でき、クエリは正規表現も使用できるシンプルなSQLで実行できます。InfluxDBは非常に耐障害性と水平スケーラビリティに優れており、Go言語を選択したことで、これらの機能が実現可能かつ容易になったと考えられます。 イスティオ Kubernetesエコシステムの一部であるIstioプロジェクトは、多くのエンタープライズアプリケーション環境で見落とされ、適切に対処されていない問題、つまり、サービス同士、そして外部世界と接続するネットワークアーキテクチャをどのように管理するかという問題に取り組んでいます。Istioは、Kubernetesクラスター内の各コンテナ間、そしてコンテナと外部世界の間に、プログラム可能な「サービスメッシュ」、つまりネットワークプロキシ層を提供し、共有コントロールプレーンを通じてネットワークをプログラム的に変更することを可能にします。KubernetesもGoで記述されているため、Goはこのタスクに最適です。また、分散型ネットワークプロジェクトにも適していることも理由の1つです。 トラエフィク Go言語で書かれたもう一つのネットワークプロジェクトは、ネットワークサービス向けのリバースプロキシおよび負荷分散システムであるTraefikです。Traefikは、KubernetesやDocker SwarmからAmazon ECS、Azure Service Fabricまで、幅広いオーケストレーションオプションと連携するように設計されています。Traefikは、これらのオーケストレーターの下で実行されるマイクロサービスが外部と通信するために必要なルートを自動的に作成します。また、オーケストレーターに適したトレースデータと統計情報も生成します。 ヒューゴ 静的ウェブサイトジェネレーターは、最近大流行しています。静的なHTML、CSS、JavaScriptのみを使用して、高速で安全なウェブサイトを簡単に作成できるからです。Hugoは、Goの多くの機能(HTMLレンダリングツール、ウェブライブラリ、国際化機能、そして単一の再配布可能なプラットフォームネイティブバイナリとしてデプロイできる機能など)を活用した静的ウェブサイトジェネレーターで、高速かつスムーズに動作します。これらのGoの機能により、Hugoは簡単に解凍、実行でき、ウェブサイトを迅速に構築できます。 テラフォーム Vagrant(Rubyベースの開発環境管理ツール)の開発者によって設立されたHashiCorpは、Goのスピードと機能を活用して、より大規模で野心的なプロジェクトを構築しています。Terraformは、定義ファイルをコードに変換することで、ローカルまたはクラウドでITインフラストラクチャを構築するためのシステムです。変更はロールフォワードまたはロールバックでき、コードが呼び出される前に、何が起こるかの完全な概要(実行プラン)を取得できます。 コックローチDB Goは、様々な分散型クラウドネイティブアプリケーションの構築に利用されています。CockroachDBは、その優れた耐障害性で知られています。この分散データベースは、あらゆる種類の災害(データセンターの障害も含む)に耐えながら、SQLクエリへの応答を継続するように設計されています。CockroachDBは完全にGoで記述されており、前身であるRocksDBから継承された、パフォーマンス重視のコア機能にわずかなC++コードのみを使用しています。 重力テレポート Goは、多くのWebプロジェクトや、それらを基盤とする下流プロジェクトにおいて、デフォルト言語として採用されています。その好例がSSHのGo実装です。SSH自体は非常に有用であり、Gravitational Teleportのようなプロジェクトの基盤となっています。Gravitational Teleportは、ユーザーがシェルを介して安全にサーバーにアクセスすることを可能にします。シングルサインオンによるセキュリティ保護を、鍵管理やローテーションといったトランザクションに通常必要となる管理オーバーヘッドなしに実現します。 原題: Google Go の威力を証明する 10 のオープンソース プロジェクト、著者: Serdar Yegulalp [この記事は51CTOによって翻訳されました。提携サイトへの転載の際は、元の翻訳者と出典を51CTO.comとして明記してください。] |
Google Goの魅力を証明する10のオープンソースプロジェクト
関連するおすすめ記事
-
HandBrake: あらゆる形式のビデオを変換できる無料ツール。
-
エンタープライズ レベルのナレッジ グラフ拡張検索強化生成 (RAG) プロジェクトをお勧めします。
-
Oracle LibreOffice とは別の OpenOffice は統合されません。
-
最も強力な無料のオープンソース 3D グラフィック ソフトウェア、Blender 3.3 LTS が正式にリリースされました。
-
HarmonyOS オープンソースサードパーティコンポーネント - VideoCache ビデオキャッシュコンポーネント
-
中国で初めて再現可能な RLHF ベンチマークである PKU-Beaver が、北京大学のチームによってオープンソース化されました。