MercadoLibre、Goで成長

MercadoLibre
Quotation mark.

Goツアーは、私がこれまで見てきた中で最高の言語入門だと思います。非常にシンプルで、言語の80%程度の概要を把握できます。開発者にGoを学ばせ、迅速に本番環境に移行させたい場合、Goツアーから始めるように指示しています。

— Eric Kohan、  ソフトウェアエンジニアリングマネージャー  MercadoLibreにて

Goは、統合されたエコシステムが開発者を引き付け、eコマースを拡大するのに役立ちます

MercadoLibre, Inc.は、ラテンアメリカ最大のオンラインコマースエコシステムを運営し、18か国に展開しています。1999年に設立され、アルゼンチンに本社を置く同社は、エコシステムを拡大および近代化するためにGoを活用しています。Goは、MercadoLibreのオンラインコマースの成長に合わせて容易に拡張できるクリーンで効率的なコードを提供し、エンジニアがコードを少なくして増え続ける視聴者に対応できるようにすることで、開発者の生産性を向上させます。

MercadoLibreはスケールアップのためにGoを活用

2015年当時、MercadoLibreでは、既存のAPIフレームワーク(GroovyとGrailsを使用)が限界に達しており、スケーリングを継続するには別のプラットフォームが必要であるという認識が高まっていました。MercadoLibreのプラットフォームは指数関数的に拡大しており(現在も続いています)、開発者にとって多くの追加作業が発生していました。GroovyとGrailsの両方で、開発者が多くの決定を行う必要があり、Groovyは動的プログラミング言語です。これは、MercadoLibreが望ましいパフォーマンスを達成するために、この非常にリソース集約的な環境で非常に経験豊富な開発者を必要としていたため、急速な成長のスケーリングには適していませんでした。テストの実行時間が遅く、ビルドとデプロイの時間が遅かったのです。したがって、コードの効率性とスケーラビリティの必要性が、コード開発のスピードの必要性と同じくらい重要になりました。

Goはシステムの効率を向上

Goがネットワーク効率に貢献している一例として、コアAPIチームは、同社のマイクロサービスソリューションの中核となる最大のAPIを構築および保守しています。このチームは、MercadoLibre Marketplace、MercadoPago FinTechプラットフォーム、MercadoLibreの配送およびロジスティクスソリューション、その他のホスト型ソリューションで使用されるユーザーAPIを作成します。これらのソリューションが要求する高いサービスレベル(平均的なユーザーAPIは1分あたり800万から1000万のリクエストに対応)により、チームは1リクエストあたり10ミリ秒未満で処理するためにGoを採用しています。

APIチームはまた、Dockerコンテナ(Goで記述されたSoftware-as-a-Service(SaaS)製品)をデプロイして、開発を仮想化し、Docker Engineを介してマイクロサービスを容易にデプロイします。このシステムは、Goで1分あたり2,000万件以上のリクエストを処理する、より大規模でミッションクリティカルなAPIをサポートしています。

あるAPIは、いくつかのサービスからのIDを効率的に多重化するために、Goの並行処理プリミティブを重要に使用しました。チームはこれをわずか数行のGoコードで実現でき、このAPIの成功により、コアAPIチームはより多くのマイクロサービスをGoに移行することを確信しました。MercadoLibreにとっての最終的な結果は、コスト効率とシステム応答時間の改善でした。

拡張性のためのGo

歴史的に、同社のスタックの多くは、リレーショナルデータベースに支えられたGrailsとGroovyをベースにしていました。しかし、多層構造を持つこの大きなフレームワークは、すぐにスケーラビリティの問題に直面することがわかりました。

そのレガシーアーキテクチャをAPIを構築するための新しい非常に薄いフレームワークとしてGoに変換することで、それらの中間層が合理化され、大きなパフォーマンス上のメリットが得られました。たとえば、1つの大規模なGoサービスは現在、わずか20 MBのRAMで1台のマシンあたり70,000件のリクエストを実行できます。

「Goは私たちにとって素晴らしいものでした。非常に強力で学習も非常に簡単であり、バックエンドインフラストラクチャを備えており、スケーラビリティの点で非常に優れています。」

— Eric Kohan、  ソフトウェアエンジニアリングマネージャー  MercadoLibreにて

Goを使用することで、MercadoLibreはこのサービスに使用するサーバーの数を元の数の8分の1(32台のサーバーから4台に削減)に減らすことができ、さらに各サーバーはより少ない電力で動作できるようになりました(元は4つのCPUコアでしたが、現在は2つのCPUコアに削減)。Goを使用することで、同社はサーバーの88%を削減し、残りのサーバーのCPUを半分に削減し、莫大なコスト削減を実現しました。

開発者とクラウドプロバイダーの間で、MercadoLibreはFuryと呼ばれるプラットフォームを使用しています。これは、クラウドにとらわれない方法でサービスを構築、デプロイ、監視、管理するためのサービスとしてのプラットフォームツールです。その結果、Goで新しいサービスを作成したいチームは、さまざまなサービスタイプの実証済みのテンプレートにアクセスでき、スターターコード、サービスのDockerイメージ、デプロイパイプラインを使用して、GitHubにリポジトリをすばやく立ち上げることができます。最終的な結果は、エンジニアが新しいプロジェクトの面倒なセットアップ段階を回避しながら、革新的なサービスの構築に集中できるシステムです。同時に、ビルドおよびデプロイパイプラインを効果的に標準化できます。

現在、Mercadolibreのトラフィックの約半分はGoアプリケーションによって処理されています。

MercadoLibreは開発者向けにGoを使用

MercadoLibreのインフラストラクチャのプログラミング共通言語は現在、GoとJavaです。すべてのアプリ、すべてのプログラム、すべてのマイクロサービスは独自のGitHubリポジトリでホストされており、さらに、同社は新しい問題を解決し、クライアントがサービスと対話できるようにするためのツールキットの追加のGitHubリポジトリを使用しています。

これらの広範で丁寧にキュレーションされたGoおよびJavaツールキットにより、プログラマーは新しいアプリを迅速かつ優れたサポートで開発できます。さらに、2,800人以上の開発者のコミュニティでは、MercadoLibreには、さまざまな開発センターやさまざまな国でのGoのデプロイに関するチャットとガイダンスのための複数の内部グループが利用できます。同社はまた、MercadoLibreの新しいGo開発者向けのトレーニングセッションを提供するための内部ワーキンググループを育成し、ラテンアメリカのより広範なGo開発者のコミュニティを構築するのに役立つ外部開発者向けのGoミートアップを開催しています。

採用ツールとしてのGo

MercadoLibreのGo推進活動は、同社の強力な採用ツールにもなっています。MercadoLibreは、アルゼンチンで最初にGoを使用した企業の1つであり、おそらくラテンアメリカでこの言語を本番環境で広く使用している最大の企業の1つです。ブエノスアイレスに本社を置き、近くには多くの新興企業や新興テクノロジー企業があるため、MercadoLibreのGoの採用はパンパス全域の開発者の市場を形成してきました。

「私たちは、言語のより大きな哲学と本当に意見が一致しています。Goのシンプルさを愛しており、その非常に明確なエラー処理が、より安全で安定した本番環境のコードにつながるため、開発者にとってプラスになっていると考えています。」

— Eric Kohan、  ソフトウェアエンジニアリングマネージャー  MercadoLibreにて

ブエノスアイレスは現在、プログラマーにとって非常に競争の激しい市場であり、コンピュータープログラマーに多くの雇用オプションを提供しています。また、この地域でのテクノロジーの高い需要は、高額の給与、優れた福利厚生、雇用主を選択する能力につながっています。そのため、MercadoLibreは、この地域のエンジニアやプログラマーのすべての雇用主と同様に、刺激的な職場と強力なキャリアパスの提供に努めています。GoはMercadoLibreにとって重要な差別化要因であることが証明されています。同社は外部の開発者向けのGoワークショップを開催し、彼らがGoを学びに来ることができるようにします。そして、彼らが自分のしていることと話している人々を楽しんでいると、MercadoLibreを魅力的な職場としてすぐに認識します。

開発者を支援するGo

MercadoLibreは、大規模なシステムでのシンプルさのためにGoを採用していますが、そのシンプルさも同社の開発者がGoを愛する理由です。

同社はまた、Go by ExampleEffective GoなどのWebページを使用して新しいプログラマーを教育し、Goで記述された代表的な内部APIを共有して、理解と習熟度を向上させています。MercadoLibreの開発者は、言語を採用するために必要なリソースを入手し、次に自分のスキルと熱意を活用してプログラミングを開始します。

「Goはビジネスロジックを書くのに最適であり、私たちはそれらのAPIを書くチームです。」

— Federico Martin Roasio、  技術プロジェクトリーダー  MercadoLibreにて

MercadoLibreは、Goの表現力豊かでクリーンな構文を活用し、開発者が現代のクラウドプラットフォーム上で効率的に動作するプログラムをより簡単に記述できるようにしています。開発のスピードは企業のコスト効率につながる一方、開発者個人はGoがもたらす迅速な学習曲線から恩恵を受けています。MercadoLibreの経験豊富なエンジニアはGoを使って非常に重要なアプリケーションを迅速に構築できるだけでなく、入門レベルのエンジニアでも、他の言語ではよりシニアな開発者しか信頼できなかったようなサービスを記述できるようになりました。例えば、毎分約1000万件のリクエストを処理する重要なユーザーAPI群は、大学の最近のコースでプログラミングを学んだばかりの入門レベルのソフトウェアエンジニアによって開発されました。同様に、MercadoLibreでは、他のプログラミング言語(Java、.NET、Rubyなど)に精通している開発者が、わずか数週間でGoを習得し、本番環境のサービスを書き始めることができるようになりました。

Goを使用することで、MercadoLibreのビルド時間は3倍速くなり、テストスイートの実行時間は驚異的な24倍速くなりました。これは、同社の開発者が変更を加え、その変更を以前よりもはるかに速くビルドおよびテストできることを意味します。

さらに、MercadoLibreのテストスイートの実行時間が90秒からGoによってわずか3秒に短縮されたことは、開発者にとって大きな恩恵となり、はるかに高速なテストが完了する間も集中力(とコンテキスト)を維持できるようになりました。

この成功を活用し、MercadoLibreはプログラマーの継続的な教育だけでなく、Goの継続的な教育にも力を入れています。同社は毎年、主要なエンジニアリングリーダーをGopherConやその他のGoイベントに派遣し、MercadoLibreのインフラストラクチャチームとセキュリティチームはすべての開発チームにGoのバージョンを最新の状態に保つよう推奨しています。また、同社はGo-meli-toolkitという、Furyが提供するすべてのサービスと連携するための完全なGoライブラリを開発するチームを擁しています。

Goを企業で導入する方法

MercadoLibreがGoを実装するための概念実証プロジェクトから始めたように、他の多くの大企業もGoを採用しています。

世界中で100万人以上の開発者がGoを使用しており、銀行や商業、ゲームやメディア、テクノロジー、その他の業界にまたがり、American ExpressPayPal、Capital One、Dropbox、IBM、Monzo、New York Times、Salesforce、Square、Target、Twitch、Uber、そしてもちろんGoogleなど、多様な企業で使用されています。

GoがMercadoLibreで行っているように、御社が信頼性が高く、スケーラブルなソフトウェアを構築する上でどのように役立つかについて詳しくは、今すぐgo.devにアクセスしてください。

MercadoLibre MercadoLibre

MercadoLibreについて

Goは、MercadoLibreのオンラインコマースの成長に合わせて容易に拡張できるクリーンで効率的なコードを提供し、エンジニアがコードを少なく書きながら、増え続けるオーディエンスに対応できるようにすることで、開発者の生産性を向上させます。