MercadoLibreはGoで成長

MercadoLibre
Quotation mark.

「Goツアーは、これまで見た中で断然最高の言語入門だと思います。本当にシンプルで、言語の約8割を公平に概観できます。開発者にGoを学んでもらい、迅速に本番環境に移行してもらいたいときには、Goツアーから始めるように伝えています。」

— エリック・コハン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は毎分800万〜1000万リクエスト)に対応するため、チームはGoを使用して、リクエストあたり10ミリ秒未満でサービスを提供しています。

APIチームはまた、Docker Engineを介して開発を仮想化し、マイクロサービスを容易にデプロイするために、Goで書かれたサービスとしてのソフトウェア(SaaS)製品であるDockerコンテナもデプロイしています。このシステムは、Goで毎分2000万以上のリクエストを処理する、より大規模でミッションクリティカルなAPIをサポートしています。

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

スケーラビリティのためのGo

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

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

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

— エリック・コハン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を使用し始めた最初の企業の一つであり、おそらくラテンアメリカでこの言語を本番環境でこれほど広く使用している最大の企業です。ブエノスアイレスに本社を置き、多くのスタートアップ企業や新興テクノロジー企業が近くにあるMercadoLibreのGoの採用は、パンパのいたるところで開発者市場を形成しました。

「私たちはこの言語の大きな哲学と本当に意見が一致しています。Goのシンプルさが大好きで、非常に明示的なエラー処理があることは、本番環境でより安全で安定したコードにつながるため、開発者にとって大きなメリットだと感じています。」

— エリック・コハンMercadoLibre ソフトウェアエンジニアリングマネージャー

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

Goが開発者を可能にする

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

同社はまた、Go by ExampleEffective Goのようなウェブページを使用して、新しいプログラマーを教育し、Goで書かれた代表的な内部APIを共有して、理解と習熟を促進しています。MercadoLibreの開発者は、言語を習得するために必要なリソースを得て、自身のスキルと熱意を活用してプログラミングを開始します。

「Goはビジネスロジックを書くのに最適でしたし、私たちはそのようなAPIを書くチームです。」

— フェデリコ・マーティン・ロアシオMercadoLibre テクニカルプロジェクトリーダー

MercadoLibreは、Goの表現力豊かでクリーンな構文を活用して、開発者が最新のクラウドプラットフォームで効率的に動作するプログラムをより簡単に記述できるようにしています。開発速度が会社のコスト効率につながる一方で、開発者はGoが提供する迅速な学習曲線から個別に恩恵を受けています。MercadoLibreの経験豊富なエンジニアは、Goを使用して非常に重要なアプリケーションを非常に迅速に構築できるだけでなく、エントリーレベルのエンジニアでさえ、他の言語ではMercadoLibreがより上級の開発者にしか任せないようなサービスを記述できるようになりました。たとえば、毎分約1,000万件のリクエストを処理する重要なユーザー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を使用しており、銀行・商業、ゲーム・メディア、テクノロジー、その他の産業において、アメリカン・エキスプレスPayPal、Capital One、Dropbox、IBM、Monzo、New York Times、Salesforce、Square、Target、Twitch、Uber、そしてもちろんGoogleなど、多様な企業で活用されています。

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

MercadoLibre MercadoLibre

MercadoLibreについて

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