Skip to Content
AWS上のシステム設計
book

AWS上のシステム設計

by Jayanth Kumar, Mandeep Singh
March 2025
Beginner to intermediate
612 pages
9h 29m
Japanese
O'Reilly Media, Inc.
Content preview from AWS上のシステム設計

第15章. ウェブ・クローラーと検索エンジンを設計する

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

ホリデーシーズンに愛する人たちとの集まりを計画している。あなたは料理が好きで、すべての料理を自分で作ろうと決めたが、作りたい料理のレシピがない。ここで考えられる最善の解決策は何か?友人にレシピがないか聞いたり、料理本を探すのもいいが、シンプルで効果的な解決策はGoogle検索を使うことだ。Googleはインターネット全体を見て、特定の料理の作り方について最適な結果を発見する。そんな膨大な情報の海の中から、Googleはどうやって完璧な答えを発見するのだろうか?この章では、このような検索システムのアーキテクチャを掘り下げることで、その解明を試みる。

図15-1に示すように、システム全体は、ウェブ・クローラーと検索エンジンの2つのサブシステムから構成されている。ウェブ・クローラーは、、基本的にウェブ・コンテンツをクロールする役割を担うソフトウェアである。インターネット上のコンテンツは指数関数的に増加しており、ウェブ・クローラーは定期的にコンテンツをクロールして、最新の結果を維持する必要がある。検索エンジンは 、 、ウェブ・クローラーによって蓄積されたコンテンツの上に置かれ、コンテンツの中からユーザが検索したキーワードを探し、最も有用な結果を提示できるように蓄積する。

この基本的な理解をもとに、提案されたシステムの機能要件と非機能要件を集めることから始めよう。

図15-1. ウェブクローラーと検索エンジンのアーキテクチャを一万フィートで見る

システム要件

ウェブクローラ は複数の目的に使うことができるので、1つのユースケースに絞ることで、設計を正しい方向に進めやすくなる。この章では、検索エンジンを介したコンテンツ検索が解決しようとしている主な問題文だが、著作権侵害のようなウェブ監視タスクなど、他の問題にも目を向けることができる。データを収集するためにウェブ・クローラーが本番システムには必要だが、ユーザから見れば、製品は検索エンジンである。

機能要件と非機能要件

システムの機能要件は以下の通りである:

  • ユーザの検索クエリに対する上位の検索結果(Webページのタイトル、サブタイトル、URL)を取得する。

  • 頻繁に更新される結果のコンテンツ鮮度率を特定する。

NFR :

高い利用可能性

システムはほとんどの時間、ユーザのクエリに対応できる。

高い信頼性

クエリは正しく提供されるべきである。

高い拡張性

システムは、ウェブページの数やウェブページ上のコンテンツなど、規模の拡大に対応できなければならない。

検索クエリの遅延が少ない。

ユーザのクエリにマッピングされるページ数が膨大であっても、システムはミリ秒以内に最も関連性の高い結果を返すべきである。

データの鮮度

検索クエリを提供する基礎となるストレージは、定期的に更新されるべきである。

このユースケースでは、データの一貫性はそれほど重要ではない。Webサイトで利用可能で、 検索エンジンで検索可能なコンテンツの遅れは許容範囲である。

システムのバウンダリー、つまりシステムに期待されないことも文書化すべきである。このユースケースの場合、以下のものが含まれる: ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

ハイパフォーマンスPython

ハイパフォーマンスPython

Micha Gorelick, Ian Ozsvald, 相川 愛三
ウェブAPIの設計

ウェブAPIの設計

Brenda Jin, Saurabh Sahni, Amir Shevat
ハイパフォーマンスPython 第2版

ハイパフォーマンスPython 第2版

Micha Gorelick, Ian Ozsvald, 中山 光樹
Kubernetesで実践するクラウドネイティブDevOps

Kubernetesで実践するクラウドネイティブDevOps

John Arundel, Justin Domingus, 須田 一輝, 渡邉 了介

Publisher Resources

ISBN: 9798341634060