[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article:mercari-microservices-migration":3},{"meta":4,"markdown":138,"quiz":139},{"type":5,"articleId":6,"slug":7,"title":8,"titleEn":9,"category":10,"summary":11,"publishedAt":12,"image":13,"vocabulary":14,"quizId":137},"article","tech-mercari-microservices","mercari-microservices-migration","Mercariのマイクロサービス移行 — モノリスから次世代へ","Mercari's Microservices Migration — From Monolith to Next Generation","tech","How Mercari evolved from a monolithic Rails application into a microservices platform on GKE, adopting gRPC, Istio service mesh, and per-team service ownership over multiple years.\n","2026-04-27T00:00:00Z","https:\u002F\u002Fimages.yamiyomi.com\u002Ftech-mercari-microservices.png",[15,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133],{"word":16,"reading":17,"meaning":18,"level":19},"移行","いこう","migration","N2",{"word":21,"reading":22,"meaning":23,"level":19},"基盤","きばん","infrastructure",{"word":25,"reading":26,"meaning":27,"level":19},"構築","こうちく","construction",{"word":29,"reading":30,"meaning":31,"level":19},"開発","かいはつ","development",{"word":33,"reading":34,"meaning":35,"level":19},"運用","うんよう","operations",{"word":37,"reading":38,"meaning":39,"level":19},"分割","ぶんかつ","split",{"word":41,"reading":42,"meaning":43,"level":44},"疎結合","そけつごう","loose coupling","N1",{"word":46,"reading":47,"meaning":48,"level":44},"結合","けつごう","coupling",{"word":50,"reading":51,"meaning":52,"level":44},"一貫性","いっかんせい","consistency",{"word":54,"reading":55,"meaning":56,"level":19},"分散","ぶんさん","distributed",{"word":58,"reading":59,"meaning":60,"level":19},"追跡","ついせき","tracing",{"word":62,"reading":63,"meaning":64,"level":19},"監視","かんし","monitoring",{"word":66,"reading":67,"meaning":68,"level":19},"障害","しょうがい","failure",{"word":70,"reading":71,"meaning":72,"level":19},"規模","きぼ","scale",{"word":74,"reading":75,"meaning":76,"level":19},"組織","そしき","organization",{"word":78,"reading":79,"meaning":80,"level":19},"責任","せきにん","responsibility",{"word":82,"reading":83,"meaning":84,"level":19},"所有","しょゆう","ownership",{"word":86,"reading":87,"meaning":88,"level":44},"抽出","ちゅうしゅつ","extraction",{"word":90,"reading":91,"meaning":92,"level":44},"段階的","だんかいてき","phased",{"word":94,"reading":95,"meaning":96,"level":19},"並行","へいこう","parallel",{"word":98,"reading":99,"meaning":100,"level":19},"課題","かだい","issue",{"word":102,"reading":103,"meaning":104,"level":19},"取引","とりひき","transaction",{"word":106,"reading":107,"meaning":108,"level":19},"出品","しゅっぴん","listing (an item)",{"word":110,"reading":111,"meaning":112,"level":44},"決済","けっさい","payment",{"word":114,"reading":115,"meaning":116,"level":19},"通信","つうしん","communication",{"word":118,"reading":119,"meaning":120,"level":19},"制御","せいぎょ","control",{"word":122,"reading":123,"meaning":124,"level":19},"観測","かんそく","observability",{"word":126,"reading":127,"meaning":128,"level":44},"認証","にんしょう","authentication",{"word":130,"reading":131,"meaning":132,"level":44},"抽象化","ちゅうしょうか","abstraction",{"word":134,"reading":135,"meaning":136,"level":44},"委譲","いじょう","delegation","tech-microservices-llmops-quiz","\n::para\n[株式]{かぶしき:stock:N1}[会社]{かいしゃ:company:N4}メルカリは、フリマアプリのリリースから[約]{やく:approximately:N3}[十]{じゅう:ten:N5}[年]{ねん:year:N5}の[間]{あいだ:period:N5}に、Ruby on Railsの[巨大]{きょだい:huge:N2}なモノリスから、[数百]{すうひゃく:several hundred:N3}の[独立]{どくりつ:independent:N1}した[小さな]{ちいさな:small:N5}サービスへと[基盤]{きばん:infrastructure:N1}を[再]{さい:re-:N2}[構築]{こうちく:construction:N2}してきました。この[移行]{いこう:migration:N2}は[一夜]{いちや:overnight:N4}で[完了]{かんりょう:completed:N2}したものではなく、[数年]{すうねん:several years:N3}にわたって[段階的]{だんかいてき:phased:N2}に[進めて]{すすめて:advancing:N3}きた[長期]{ちょうき:long-term:N3}プロジェクトです。\n\n#en\nMercari has, over roughly the decade since launching its flea-market app, rebuilt its infrastructure from a giant Ruby on Rails monolith into hundreds of small, independent services. This migration was not completed overnight but is a long-term project advanced in phases over multiple years.\n::\n\n::heading\n[出発点]{しゅっぱつてん:starting point:N3}：モノリスの[限界]{げんかい:limit:N3}\n\n#en\nThe Starting Point: Limits of the Monolith\n::\n\n::para\n[初期]{しょき:initial:N3}のメルカリは[一]{いち:one:N5}つの[大きな]{おおきな:large:N5}Railsアプリケーションで[出品]{しゅっぴん:listing:N4}・[取引]{とりひき:transaction:N3}・[決済]{けっさい:payment:N3}・メッセージなどを[全て]{すべて:all:N3}[処理]{しょり:processing:N3}していました。[当初]{とうしょ:initially:N3}は[迅速]{じんそく:rapid:N1}な[開発]{かいはつ:development:N4}が[可能]{かのう:possible:N3}でしたが、[利用]{りよう:use:N3}[者]{しゃ:person:N4}が[増える]{ふえる:increase:N3}につれて、デプロイの[頻度]{ひんど:frequency:N1}が[落ち]{おち:dropped:N3}、[障害]{しょうがい:failure:N1}の[影響]{えいきょう:impact:N1}[範囲]{はんい:scope:N1}が[広がり]{ひろがり:widened:N4}、[新しい]{あたらしい:new:N4}メンバーが[全体]{ぜんたい:overall:N3}を[把握]{はあく:grasping:N1}するのも[困難]{こんなん:difficult:N3}になっていったと[語られて]{かたられて:said:N5}います。\n\n#en\nEarly Mercari handled listings, transactions, payments, and messaging all within a single large Rails application. Initially this enabled rapid development, but as users grew, deploy frequency dropped, the blast radius of failures widened, and onboarding new engineers to grasp the whole system reportedly became increasingly difficult.\n::\n\n::callout\nモノリスは[悪]{あく:evil:N4}ではなく、[組織]{そしき:organization:N1}の[規模]{きぼ:scale:N1}と[歩調]{ほちょう:pace:N3}が[合わなくなった]{あわなくなった:no longer matches:N3}[時]{とき:when:N5}に[初めて]{はじめて:for the first time:N3}コストになります。\n\n#en\nA monolith is not evil; it only becomes a cost when its pace no longer matches the scale of the organization.\n::\n\n::heading\nGKEへの[移行]{いこう:migration:N2}と[基盤]{きばん:foundation:N1}の[刷新]{さっしん:renewal:N2}\n\n#en\nMigration to GKE and Infrastructure Renewal\n::\n\n::para\nメルカリは[既存]{きそん:existing:N1}のさくらインターネット[時代]{じだい:era:N4}の[環境]{かんきょう:environment:N1}から、Google Cloudの[管理]{かんり:managed:N2}Kubernetes（GKE）[上]{じょう:on:N5}に[新しい]{あたらしい:new:N4}サービスを[構築]{こうちく:construction:N2}する[方針]{ほうしん:policy:N2}を[採り]{とり:taking:N2}ました。Kubernetes[上]{じょう:on:N5}に[載せる]{のせる:place:N1}ことで、コンテナの[配置]{はいち:placement:N3}・[自動]{じどう:auto:N4}スケール・[障害時]{しょうがいじ:during failures:N1}の[再]{さい:re-:N2}[起動]{きどう:start:N4}などを[宣言的]{せんげんてき:declaratively:N1}に[扱える]{あつかえる:handle:N1}ようになり、[各]{かく:each:N2}サービスチームが[基盤]{きばん:infrastructure:N1}を[気にせず]{きにせず:without worrying:N5}リリースできる[状態]{じょうたい:state:N1}を[目指し]{めざし:aiming for:N3}ました。\n\n#en\nMercari adopted a policy of building new services on Google Cloud's managed Kubernetes (GKE), away from its earlier Sakura Internet–era environment. By running on Kubernetes, container placement, autoscaling, and restart-on-failure could be handled declaratively, aiming for a state where each service team could ship releases without worrying about infrastructure.\n::\n\n::heading\n[サービス間]{さーびすかん:inter-service:N5}[通信]{つうしん:communication:N3}：gRPCの[採用]{さいよう:adoption:N2}\n\n#en\nInter-Service Communication: Adopting gRPC\n::\n\n::para\n[内部]{ないぶ:internal:N3}サービス[同士]{どうし:between:N1}の[通信]{つうしん:communication:N3}には、[当初]{とうしょ:initially:N3}のJSON over HTTPに[代わって]{かわって:replacing:N4}gRPCが[本格的]{ほんかくてき:in earnest:N3}に[採用]{さいよう:adoption:N2}されました。Protocol Buffersで[定義]{ていぎ:define:N1}されたスキーマから[各]{かく:each:N2}[言語]{げんご:language:N4}のクライアント・サーバーコードを[自動]{じどう:automatically:N4}[生成]{せいせい:generate:N3}できるため、[型]{かた:type:N2}[安全性]{あんぜんせい:safety:N3}と[後方]{こうほう:backward:N4}[互換性]{ごかんせい:compatibility:N2}を[両立]{りょうりつ:both achieve:N3}しやすいことが[評価]{ひょうか:evaluated:N1}されています。\n\n#en\nFor internal service-to-service communication, gRPC was adopted in earnest in place of the original JSON over HTTP. Because client and server code in each language can be auto-generated from schemas defined in Protocol Buffers, gRPC is valued for making it easier to achieve both type safety and backward compatibility.\n::\n\n::callout\ngRPCは[万能]{ばんのう:silver bullet:N3}ではなく、ブラウザ[直結]{ちょっけつ:direct:N1}APIにはGraphQLやREST、[内部]{ないぶ:internal:N3}[通信]{つうしん:communication:N3}にはgRPCと[使い分ける]{つかいわける:use selectively:N4}[構成]{こうせい:configuration:N3}が[一般的]{いっぱんてき:common:N2}と[言われて]{いわれて:said:N4}います。\n\n#en\ngRPC is not a silver bullet; a common pattern is reportedly to use GraphQL or REST for browser-facing APIs and gRPC for internal communication.\n::\n\n::heading\nサービスメッシュ：Istioの[役割]{やくわり:role:N3}\n\n#en\nService Mesh: The Role of Istio\n::\n\n::para\nサービスの[数]{かず:number:N3}が[増える]{ふえる:increases:N3}と、リトライ・タイムアウト・mTLSによる[認証]{にんしょう:authentication:N1}・[流量]{りゅうりょう:traffic:N2}[制御]{せいぎょ:control:N3}といった[共通]{きょうつう:common:N3}[関心事]{かんしんごと:concerns:N3}を[各]{かく:each:N2}サービスに[実装]{じっそう:implement:N2}するのは[現実的]{げんじつてき:realistic:N3}ではありません。メルカリはIstioを[基軸]{きじく:axis:N1}としたサービスメッシュを[導入]{どうにゅう:adoption:N2}し、これらの[機能]{きのう:functionality:N3}をサイドカーProxy（Envoy）に[委譲]{いじょう:delegating:N1}することで、アプリケーションコードからネットワーク[制御]{せいぎょ:control:N3}の[関心]{かんしん:concerns:N3}を[抽象化]{ちゅうしょうか:abstracting away:N1}しています。\n\n#en\nAs the number of services grows, it becomes impractical to implement common concerns — retries, timeouts, mTLS-based authentication, traffic control — inside each service. Mercari has introduced a service mesh centered on Istio, delegating these features to sidecar proxies (Envoy) and thereby abstracting network-control concerns away from application code.\n::\n\n::heading\n[分散]{ぶんさん:distributed:N3}トレーシングと[観測]{かんそく:observability:N2}\n\n#en\nDistributed Tracing and Observability\n::\n\n::para\nモノリスでは[一]{いち:one:N5}つのリクエストの[流れ]{ながれ:flow:N3}は[基本的]{きほんてき:fundamentally:N1}にスタックトレースで[追える]{おえる:can trace:N3}のに[対し]{たいし:in contrast:N3}、マイクロサービスでは[一]{いち:one:N5}つのユーザー[操作]{そうさ:operation:N1}が[十]{じゅう:ten:N5}を[超える]{こえる:exceeds:N2}サービスを[またぐ]{またぐ:span}ことも[珍しく]{めずらしく:unusual:N2}ありません。メルカリはOpenTelemetryなどの[標準]{ひょうじゅん:standard:N1}を[活用]{かつよう:utilizing:N3}し、[分散]{ぶんさん:distributed:N3}[追跡]{ついせき:tracing:N2}・メトリクス・ログを[統合]{とうごう:integrated:N1}した[観測]{かんそく:observability:N2}[基盤]{きばん:foundation:N1}を[整備]{せいび:building:N1}してきたと[公表]{こうひょう:publicly stated:N3}されています。\n\n#en\nWhereas a single request's flow can usually be followed via stack traces in a monolith, in microservices a single user operation often spans more than ten services. Mercari has reportedly built an observability foundation that integrates distributed tracing, metrics, and logs by leveraging standards such as OpenTelemetry.\n::\n\n::heading\n[組織]{そしき:organizational:N1}[変更]{へんこう:change:N3}：サービスの[所有権]{しょゆうけん:ownership:N3}\n\n#en\nOrganizational Change: Service Ownership\n::\n\n::para\n[技術]{ぎじゅつ:technical:N2}[移行]{いこう:migration:N2}と[同じ]{おなじ:same:N4}くらい[重要]{じゅうよう:important:N3}だったのが[組織]{そしき:organizational:N1}[改革]{かいかく:reform:N2}です。メルカリは「[各]{かく:each:N2}サービスは[一]{いち:one:N5}つのチームが[所有]{しょゆう:owns:N3}し、[開発]{かいはつ:development:N4}から[運用]{うんよう:operations:N4}・[当番]{とうばん:on-call:N3}まで[責任]{せきにん:responsibility:N3}を[持つ]{もつ:hold:N4}」というモデルを[採用]{さいよう:adoption:N2}したと[語られて]{かたられて:described:N5}います。これにより、Platformチームは[共通]{きょうつう:common:N3}[基盤]{きばん:foundation:N1}に[集中]{しゅうちゅう:focus:N4}し、プロダクトチームは[自分]{じぶん:own:N4}たちの[領域]{りょういき:domain:N2}で[速く]{はやく:fast:N3}[動ける]{うごける:move:N4}[体制]{たいせい:structure:N3}を[整えて]{ととのえて:arranging:N1}います。\n\n#en\nEqually important to the technical migration was organizational reform. Mercari has reportedly adopted a model in which \"each service is owned by one team, which is responsible from development through operations and on-call.\" Under this structure, the Platform team focuses on common infrastructure while product teams can move quickly within their own domains.\n::\n\n::heading\n[段階的]{だんかいてき:phased:N2}[抽出]{ちゅうしゅつ:extraction:N1}：Strangler Fig パターン\n\n#en\nPhased Extraction: The Strangler Fig Pattern\n::\n\n::para\n[既存]{きそん:existing:N1}モノリスを[一気]{いっき:all at once:N5}に[書き換える]{かきかえる:rewrite:N2}のではなく、[新しい]{あたらしい:new:N4}[機能]{きのう:functionality:N3}や[切り出し]{きりだし:extracted:N4}やすい[領域]{りょういき:area:N2}から[順に]{じゅんに:sequentially:N2}サービスを[抽出]{ちゅうしゅつ:extracted:N1}し、API Gatewayでルーティングを[切り替えて]{きりかえて:switching:N2}いくStrangler Figパターンが[基本]{きほん:basic:N1}[戦略]{せんりゃく:strategy:N2}とされてきました。[既存]{きそん:existing:N1}モノリスと[新]{しん:new:N4}サービスを[並行]{へいこう:in parallel:N2}[稼働]{かどう:running:N1}させ、トラフィックを[徐々に]{じょじょに:gradually:N1}[移し]{うつし:shifting:N2}ていくことで、リスクを[抑え]{おさえ:keep down:N1}ながら[移行]{いこう:migration:N2}を[進めて]{すすめて:advancing:N3}きました。\n\n#en\nRather than rewriting the existing monolith all at once, the basic strategy has been the Strangler Fig pattern: extracting services starting from new features or areas easier to carve out, then switching routing at the API Gateway. By running the existing monolith and new services in parallel and gradually shifting traffic, the migration has progressed while keeping risk in check.\n::\n\n::heading\nデータ[一貫性]{いっかんせい:consistency:N1}という[難題]{なんだい:hard problem:N3}\n\n#en\nThe Hard Problem of Data Consistency\n::\n\n::para\nモノリスでは[一]{いち:one:N5}つのDBトランザクションで[済んで]{すんで:done:N3}いた[更新]{こうしん:update:N3}が、サービス[分割]{ぶんかつ:split:N3}[後]{ご:after:N5}は[複数]{ふくすう:multiple:N2}サービスをまたぐ[一連]{いちれん:series:N3}の[操作]{そうさ:operations:N1}になります。メルカリではSagaパターンや、[最終]{さいしゅう:eventual:N3}[整合性]{せいごうせい:consistency:N1}を[前提]{ぜんてい:premise:N1}とした[非同期]{ひどうき:asynchronous:N3}メッセージング、[補償]{ほしょう:compensating:N1}トランザクションなどを[組み合わせて]{くみあわせて:combining:N3}この[課題]{かだい:challenge:N2}に[向き合って]{むきあって:facing:N3}いると[言われて]{いわれて:said:N4}います。\n\n#en\nUpdates that fit in a single DB transaction in the monolith become a series of operations spanning multiple services after splitting. Mercari is reportedly addressing this challenge by combining the Saga pattern, asynchronous messaging premised on eventual consistency, and compensating transactions.\n::\n\n::callout\n[強い]{つよい:strong:N4}[一貫性]{いっかんせい:consistency:N1}が[本当に]{ほんとうに:truly:N3}[必要な]{ひつような:necessary:N3}[範囲]{はんい:scope:N1}を[見極める]{みきわめる:discern:N2}ことが、マイクロサービス[設計]{せっけい:design:N2}の[肝]{きも:key:N1}です。\n\n#en\nDiscerning where strong consistency is truly required is the key to microservices design.\n::\n\n::heading\nこれからの[課題]{かだい:challenges:N2}\n\n#en\nRemaining Challenges\n::\n\n::para\nサービス[数]{すう:number:N3}の[増加]{ぞうか:increase:N3}は、CI\u002FCDパイプラインの[複雑]{ふくざつ:complexity:N2}[化]{か:-ification:N3}、[依存]{いぞん:dependency:N2}[関係]{かんけい:relationships:N3}の[把握]{はあく:grasping:N1}[困難]{こんなん:difficult:N3}、[インフラ]{いんふら:infra}コストの[肥大]{ひだい:bloat:N1}[化]{か:-ification:N3}など[新た]{あらた:new:N4}な[課題]{かだい:challenges:N2}を[生み]{うみ:producing:N5}ます。メルカリはInternal Developer Platform（IDP）の[整備]{せいび:building:N1}や、Backstageのような[開発]{かいはつ:developer:N4}[者]{しゃ:person:N4}ポータル、Policy as Codeによるガバナンスといった[手段]{しゅだん:means:N3}で、これらと[向き合って]{むきあって:facing:N3}いるとされます。\n\n#en\nA growing number of services brings new challenges — increasingly complex CI\u002FCD pipelines, difficulty tracking dependencies, and bloating infrastructure costs. Mercari is reportedly tackling these through means such as building an Internal Developer Platform (IDP), developer portals like Backstage, and governance via Policy as Code.\n::\n\n::heading\nおわりに\n\n#en\nConclusion\n::\n\n::para\nメルカリの[事例]{じれい:case:N3}が[示している]{しめしている:shows:N3}のは、マイクロサービスは[単なる]{たんなる:mere:N3}[技術]{ぎじゅつ:technical:N2}[選択]{せんたく:choice:N1}ではなく、[組織]{そしき:organizational:N1}[構造]{こうぞう:structure:N2}・[運用]{うんよう:operations:N4}[文化]{ぶんか:culture:N3}・データ[設計]{せっけい:design:N2}を[巻き込んだ]{まきこんだ:involving:N2}[全]{ぜん:overall:N3}[体]{たい:body:N4}[最適化]{さいてきか:optimization:N3}の[取り組み]{とりくみ:effort:N3}だということです。[一]{いち:one:N5}つの[正解]{せいかい:correct answer:N3}ではなく、[組織]{そしき:organization:N1}の[成長]{せいちょう:growth:N3}に[合わせた]{あわせた:aligned with:N3}[継続的]{けいぞくてき:continuous:N1}な[再]{さい:re-:N2}[設計]{せっけい:design:N2}が[求められて]{もとめられて:demanded:N3}います。\n\n#en\nWhat Mercari's example shows is that microservices are not merely a technical choice but a whole-system optimization effort that involves organizational structure, operational culture, and data design. There is no single correct answer; continuous redesign aligned with the organization's growth is required.\n::\n",{"id":137,"title":140,"titleEn":141,"topicPath":10,"questions":142},"テック確認テスト — マイクロサービスとLLMOps","Tech Quiz — Microservices and LLMOps",[143,171,195,221,246],{"id":144,"articleId":6,"question":145,"options":148,"correctLabel":154,"explanation":165,"tags":168},"tech-microservices-llmops-quiz-q01",{"en":146,"jp":147},"Which best describes the main role of a service mesh (e.g., Istio)?","サービスメッシュ（Istio[等]{とう:etc.}）が[主に]{おもに:mainly}[担う]{になう:takes on}[役割]{やくわり:role}として[最も]{もっとも:most}[適切]{てきせつ:appropriate}なものはどれか？",[149,153,157,161],{"label":150,"jp":151,"en":152},"ア","クライアントからのHTTPSリクエストを[最初]{さいしょ:first}に[受ける]{うける:accept}[公開]{こうかい:public}APIゲートウェイの[役割]{やくわり:role}を[担う]{になう:takes on}。","Acts as the public API gateway that first accepts HTTPS requests from clients.",{"label":154,"jp":155,"en":156},"イ","サイドカーProxyを[各]{かく:each}サービスに[配置]{はいち:placing}し、リトライ・mTLS・[流量]{りゅうりょう:traffic}[制御]{せいぎょ:control}など[共通]{きょうつう:common}[関心事]{かんしんごと:concerns}を[抽象化]{ちゅうしょうか:abstracts}する。","Places sidecar proxies in each service and abstracts common concerns like retries, mTLS, and traffic control.",{"label":158,"jp":159,"en":160},"ウ","[各]{かく:each}サービスの[内部]{ないぶ:internal}データベースを[一]{いち:one}つに[統合]{とうごう:integrates}する。","Integrates each service's internal database into one.",{"label":162,"jp":163,"en":164},"エ","[巨大]{きょだい:giant}LLMの[推論]{すいろん:inference}を[複数]{ふくすう:multiple}GPUに[並列]{へいれつ:parallel}[化]{か:-ization}する。","Parallelizes giant LLM inference across multiple GPUs.",{"en":166,"jp":167},"A service mesh offloads common communication controls to sidecar proxies (e.g., Envoy) running alongside each service, decoupling network concerns from app code. The other options describe API gateways, data integration, and parallelization respectively.","サービスメッシュは[各]{かく:each}サービスに[並走]{へいそう:running alongside}するサイドカーProxy（Envoy[等]{とう:etc.}）に[共通]{きょうつう:common}な[通信]{つうしん:communication}[制御]{せいぎょ:control}を[寄せる]{よせる:offload to}ことで、[アプリ]{あぷり:app}コードからネットワーク[関心]{かんしん:concerns}を[切り離します]{きりはなします:decouples}。アはAPIゲートウェイの[役割]{やくわり:role}、ウはデータ[統合]{とうごう:integration}、エは[並列]{へいれつ:parallel}[化]{か:-ization}の[話]{はなし:topic}で、[いずれ]{いずれ:either}もサービスメッシュの[本来]{ほんらい:original}の[役割]{やくわり:role}ではありません。",[169,170],"microservices","service-mesh",{"id":172,"articleId":6,"question":173,"options":176,"correctLabel":154,"explanation":189,"tags":192},"tech-microservices-llmops-quiz-q02",{"en":174,"jp":175},"Which is the best benefit of adopting gRPC for internal service-to-service communication?","[内部]{ないぶ:internal}サービス[同士]{どうし:between}の[通信]{つうしん:communication}にgRPCを[採用]{さいよう:adopting}する[利点]{りてん:benefit}として[最も]{もっとも:most}[適切]{てきせつ:appropriate}なものは？",[177,180,183,186],{"label":150,"jp":178,"en":179},"ブラウザから[直接]{ちょくせつ:directly}[呼べる]{よべる:can be called}ため[フロント]{ふろんと:frontend}APIに[最適]{さいてき:ideal}である。","It can be called directly from browsers, making it ideal for frontend APIs.",{"label":154,"jp":181,"en":182},"Protocol Buffersスキーマから[各]{かく:each}[言語]{げんご:language}クライアントを[自動]{じどう:auto}[生成]{せいせい:generate}でき、[型]{かた:type}[安全性]{あんぜんせい:safety}と[後方]{こうほう:backward}[互換性]{ごかんせい:compatibility}を[両立]{りょうりつ:both achieve}しやすい。","Clients in each language can be auto-generated from Protocol Buffers schemas, making it easier to achieve both type safety and backward compatibility.",{"label":158,"jp":184,"en":185},"JSON over HTTPと[比べて]{くらべて:compared to}[人間]{にんげん:human}が[読み]{よみ:read}やすいテキスト[形式]{けいしき:format}である。","It uses a more human-readable text format than JSON over HTTP.",{"label":162,"jp":187,"en":188},"[暗号化]{あんごうか:encryption}が[不要]{ふよう:unnecessary}になり[通信]{つうしん:communication}コストが[下がる]{さがる:lowers}。","Encryption becomes unnecessary, lowering communication cost.",{"en":190,"jp":191},"gRPC's strength is auto-generating client\u002Fserver code from Protocol Buffers schemas, making type safety and compatibility management easy in internal communication. (A) requires extra layers like gRPC-Web for browsers; (C) is wrong because gRPC is binary; (D) is wrong because encryption (mTLS) is often used alongside.","gRPCはProtocol Buffersスキーマからクライアント・サーバーコードを[自動]{じどう:auto}[生成]{せいせい:generate}できる[点]{てん:point}が[強み]{つよみ:strength}で、[内部]{ないぶ:internal}[通信]{つうしん:communication}における[型]{かた:type}[安全性]{あんぜんせい:safety}と[互換性]{ごかんせい:compatibility}[管理]{かんり:management}が[容易]{ようい:easy}になります。アはブラウザ[直結]{ちょっけつ:direct}にはgRPC-Webなどの[追加]{ついか:additional}[層]{そう:layer}が[必要]{ひつよう:needed}で[誤り]{あやまり:wrong}、ウはバイナリ[形式]{けいしき:format}なので[誤り]{あやまり:wrong}、エは[暗号化]{あんごうか:encryption}（mTLS）はむしろ[併用]{へいよう:concurrently used}されるため[誤り]{あやまり:wrong}です。",[193,194],"grpc","protocol-buffers",{"id":196,"articleId":197,"question":198,"options":201,"correctLabel":154,"explanation":214,"tags":217},"tech-microservices-llmops-quiz-q03","tech-line-llmops",{"en":199,"jp":200},"Statement: 'RAG is a technique that can leverage external knowledge without rewriting an existing LLM's weights.' Which most accurately describes the difference between RAG and fine-tuning?","[文]{ぶん:sentence}：「RAGは[既存]{きそん:existing}LLMの[重み]{おもみ:weights}を[書き換える]{かきかえる:overwrite}ことなく、[外部]{がいぶ:external}[知識]{ちしき:knowledge}を[活用]{かつよう:utilize}できる[手法]{しゅほう:technique}である」。RAGとファインチューニングの[違い]{ちがい:difference}として[最も]{もっとも:most}[正確な]{せいかくな:accurate}[説明]{せつめい:description}は？",[202,205,208,211],{"label":150,"jp":203,"en":204},"RAGはモデル[重み]{おもみ:weights}を[更新]{こうしん:updates}し、ファインチューニングは[更新]{こうしん:update}しない。","RAG updates model weights; fine-tuning does not.",{"label":154,"jp":206,"en":207},"RAGは[ベクトル]{べくとる:vector}[検索]{けんさく:retrieval}で[関連]{かんれん:related}[文書]{ぶんしょ:documents}をプロンプトに[埋め込む]{うめこむ:embeds}手法、ファインチューニングはモデル[重み]{おもみ:weights}を[追加]{ついか:additional}[学習]{がくしゅう:training}で[更新]{こうしん:updates}する[手法]{しゅほう:technique}である。","RAG is a technique that retrieves related documents via vector search and embeds them in the prompt; fine-tuning updates model weights through additional training.",{"label":158,"jp":209,"en":210},"[両者]{りょうしゃ:both}とも[必ず]{かならず:always}GPU[推論]{すいろん:inference}を[必要]{ひつよう:require}としない。","Neither requires GPU inference at all.",{"label":162,"jp":212,"en":213},"RAGは[小さな]{ちいさな:small}モデル[専用]{せんよう:only}で、ファインチューニングは[大きな]{おおきな:large}モデル[専用]{せんよう:only}である。","RAG is only for small models and fine-tuning only for large models.",{"en":215,"jp":216},"RAG inserts retrieved documents into the prompt and uses them as context at inference time, without changing model weights. Fine-tuning updates model weights via additional training. (A) reverses the two; (C) and (D) are simply wrong.","RAGは[検索]{けんさく:retrieval}で[取得]{しゅとく:obtained}した[文書]{ぶんしょ:documents}をプロンプトに[挿入]{そうにゅう:insert}し[推論]{すいろん:inference}[時]{じ:on}に[文脈]{ぶんみゃく:context}として[使う]{つかう:use}[手法]{しゅほう:technique}で、モデル[重み]{おもみ:weights}は[変えません]{かえません:does not change}。ファインチューニングは[追加]{ついか:additional}[学習]{がくしゅう:training}でモデル[重み]{おもみ:weights}を[更新]{こうしん:updates}します。アは[逆]{ぎゃく:opposite}、ウとエは[誤り]{あやまり:incorrect}です。",[218,219,220],"llm","rag","fine-tuning",{"id":222,"articleId":197,"question":223,"options":226,"correctLabel":154,"explanation":239,"tags":242},"tech-microservices-llmops-quiz-q04",{"en":224,"jp":225},"What is the main mechanism by which vLLM achieves high throughput?","vLLMが[高い]{たかい:high}スループットを[実現]{じつげん:achieves}する[主な]{おもな:main}[仕組み]{しくみ:mechanism}は？",[227,230,233,236],{"label":150,"jp":228,"en":229},"GPUを[使わず]{つかわず:without using}CPUのみで[推論]{すいろん:inference}する。","Performs inference using only CPU, not GPU.",{"label":154,"jp":231,"en":232},"PagedAttentionによる[効率]{こうりつ:efficient}[的な]{てきな:like}KVキャッシュ[管理]{かんり:management}と[継続]{けいぞく:continuous}バッチングで[複数]{ふくすう:multiple}リクエストを[同時]{どうじ:simultaneously}に[処理]{しょり:process}する。","Uses PagedAttention for efficient KV-cache management and continuous batching to process multiple requests simultaneously.",{"label":158,"jp":234,"en":235},"モデルを[完全]{かんぜん:fully}に[書き換える]{かきかえる:rewrites}ためファインチューニング[専用]{せんよう:only}である。","Fully rewrites the model and is only for fine-tuning.",{"label":162,"jp":237,"en":238},"[ベクトル]{べくとる:vector}データベースとしてRAGを[置き換える]{おきかえる:replaces}。","Replaces RAG as a vector database.",{"en":240,"jp":241},"vLLM manages KV-cache memory in pages via PagedAttention and uses continuous batching to insert new requests into gaps of in-flight ones, maximizing GPU utilization. This is why it is widely adopted as an LLM inference server.","vLLMはPagedAttentionで[KVキャッシュ]{KVきゃっしゅ:KV cache}メモリを[ページ]{ぺーじ:page}[単位]{たんい:unit}で[管理]{かんり:manage}し、[継続]{けいぞく:continuous}バッチングで[途中]{とちゅう:in-flight}リクエストの[隙間]{すきま:gaps}に[新規]{しんき:new}リクエストを[挿入]{そうにゅう:insert}することでGPU[利用]{りよう:utilization}[率]{りつ:rate}を[最大化]{さいだいか:maximize}します。これがLLM[推論]{すいろん:inference}サーバーで[広く]{ひろく:widely}[採用]{さいよう:adopted}される[理由]{りゆう:reason}です。",[243,244,245],"llmops","vllm","gpu",{"id":247,"articleId":197,"question":248,"options":251,"correctLabel":150,"explanation":264,"tags":267},"tech-microservices-llmops-quiz-q05",{"en":249,"jp":250},"Which is the best description of 'vector embedding'?","[文]{ぶん:sentence}「[ベクトル]{べくとる:vector}[埋め込み]{うめこみ:embedding}」が[指す]{さす:refers to}ものとして[最も]{もっとも:most}[適切]{てきせつ:appropriate}なのは？",[252,255,258,261],{"label":150,"jp":253,"en":254},"テキストや[画像]{がぞう:images}などを[固定]{こてい:fixed}[長]{ちょう:length}の[数値]{すうち:numeric}ベクトルに[変換]{へんかん:convert}したもので、[意味]{いみ:semantic}[的]{てき:like}な[類似度]{るいじど:similarity}[計算]{けいさん:computation}に[使われる]{つかわれる:used}。","A fixed-length numeric vector representation of text or images, used for semantic similarity computation.",{"label":154,"jp":256,"en":257},"GPUの[物理]{ぶつり:physical}メモリ[空間]{くうかん:space}を[指す]{さす:refers to}[専門]{せんもん:specialized}[用語]{ようご:term}。","A specialized term referring to physical GPU memory space.",{"label":158,"jp":259,"en":260},"Kubernetesの[Pod]{ぽっど:Pod}スケジューリング[アルゴリズム]{あるごりずむ:algorithm}の[名前]{なまえ:name}。","The name of a Kubernetes Pod scheduling algorithm.",{"label":162,"jp":262,"en":263},"プロンプトを[暗号化]{あんごうか:encrypt}するための[鍵]{かぎ:key}[管理]{かんり:management}[手法]{しゅほう:technique}。","A key-management technique for encrypting prompts.",{"en":265,"jp":266},"A vector embedding is a fixed-length numeric vector representation of input (text, images, etc.) learned so that semantically similar items are also close in vector space. In RAG, the question and documents are embedded into the same space, and related documents are retrieved via measures like cosine similarity.","[ベクトル]{べくとる:vector}[埋め込み]{うめこみ:embedding}とは、テキストや[画像]{がぞう:images}などの[入力]{にゅうりょく:input}を、[意味]{いみ:semantic}[的に]{てきに:like}[近い]{ちかい:close}ものは[ベクトル]{べくとる:vector}[空間]{くうかん:space}でも[近く]{ちかく:close}に[配置]{はいち:placed}されるよう[学習]{がくしゅう:learned}された[固定]{こてい:fixed}[長]{ちょう:length}[数値]{すうち:numeric}ベクトル[表現]{ひょうげん:representation}です。RAGでは[質問]{しつもん:question}と[文書]{ぶんしょ:documents}を[同じ]{おなじ:same}[空間]{くうかん:space}に[埋め込み]{うめこみ:embed}、コサイン[類似度]{るいじど:similarity}などで[関連]{かんれん:related}[文書]{ぶんしょ:documents}を[検索]{けんさく:retrieve}します。",[218,268,219],"embedding"]