9μž₯

  • 검색 μ—”μ§„ 인덱싱

    • μ˜ˆμ‹œλ‘œ, googlebot은 ꡬ글이 μ‚¬μš©ν•˜λŠ” μ›Ή 크둀러

  • μ›Ή 아카이빙:

    • μž₯기보관을 μœ„ν•΄ μš°λ² μ—μ„œ 정보λ₯Ό λͺ¨μœΌλŠ” 절차

  • μ›Ή λ§ˆμ΄λ‹

    • 웹에 μžˆλŠ” μœ μš©ν•œ 지식을 λ„μΆœ (μ£Όμ£Ό 총회 자료, μ—°μ°¨λ³΄κ³ μ„œ λ“±)

  • μ›Ή λͺ¨λ‹ˆν„°λ§

    • λ””μ§€λ§ˆν¬λŠ” μ›Ή 크둀러λ₯Ό μ‚¬μš©ν•΄ ν•΄μ νŒ μ €μž‘λ¬Όμ„ μ°Ύμ•„λ‚΄μ„œ 보고

κΈ°λ³Έ μ•Œκ³ λ¦¬μ¦˜

  1. URL 집합이 μž…λ ₯으둜 μ£Όμ–΄μ§€λ©΄, ν•΄λ‹Ή URL듀이 κ°€λ¦¬ν‚€λŠ” λͺ¨λ“  μ›Ή νŽ˜μ΄μ§€ μ£Όμ†Œλ₯Ό λ‹€μš΄λ‘œλ“œ

  2. λ‹€μš΄λ°›μ€ μ›Ή νŽ˜μ΄μ§€μ—μ„œ URL듀을 μΆ”μΆœ

  3. μΆ”μΆœλœ URL듀을 λ‹€μš΄λ‘œλ“œν•  URL λͺ©λ‘μ— μΆ”κ°€ν•˜κ³  μœ„μ˜ 과정을 μ²˜μŒλΆ€ν„° 반볡

1단계 문제 이해 및 섀계 λ²”μœ„ ν™•μ •

μš”κ΅¬μ‚¬ν•­ 섀계

  • 검색 μ—”μ§„ 인덱싱 μš©λ„

  • 10μ–΅κ°œμ˜ μ›Ή νŽ˜μ΄μ§€ μˆ˜μ§‘

  • μƒˆλ‘œμš΄ μ›ΉνŽ˜μ΄μ§€λ‚˜ μˆ˜μ •λœ μ›ΉνŽ˜μ΄μ§€λ„ κ³ λ €

  • 5λ…„κ°„ μ €μž₯

  • μ€‘λ³΅λœ μ»¨ν…μΈ λŠ” λ¬΄μ‹œ

쒋은 μ›Ή ν¬λ‘€λŸ¬κ°€ κ°€μ Έμ•Όν•  속성

  • 규λͺ¨ ν™•μž₯μ„±

  • μ•ˆμ •μ„±

    • μ•…μ„±μ½”λ“œ, μ„œλ²„μž₯μ•  등에 잘 λŒ€μ‘ν•΄μ•Όν•¨

  • 예절

    • 짧은 μ‹œκ°„λ™μ•ˆ λ„ˆλ¬΄ λ§Žμ€ μš”μ²­μ„ 보내면 μ•ˆλ¨

  • ν™•μž₯μ„±

개랡적 규λͺ¨ μΆ”μ •

  • 맀달 10μ–΅κ°œμ˜ μ›Ή νŽ˜μ΄μ§€λ₯Ό λ‹€μš΄λ‘œλ“œν•œλ‹€.

  • QPS = 10μ–΅ / 30일 / 24μ‹œκ°„/ 3600초 = λŒ€λž΅ 400νŽ˜μ΄μ§€ / 초

  • μ΅œλŒ€ QPS = 2 * QPS = 800

  • μ›Ή νŽ˜μ΄μ§€μ˜ 크기 평균은 500k 라 κ°€μ •

  • 10μ–΅ νŽ˜μ΄μ§€ * 500 kb = 500TB /μ›”

  • 1κ°œμ›”μΉ˜κ°€ 500TBμ΄λ―€λ‘œ 5λ…„κ°„ λ³΄κ΄€ν•˜λ €λ©΄ 500TB * 12 * 5 = 30PB

2단계 개랡적 μ„€κ³„μ•ˆ μ œμ‹œ 및 λ™μ˜ κ΅¬ν•˜κΈ°

  1. μ‹œμž‘ url듀을 λ―Έμˆ˜μ§‘ url μ €μž₯μ†Œμ— μ €μž₯ν•œλ‹€

  2. HTML λ‹€μš΄λ‘œλ”λŠ” λ―Έμˆ˜μ§‘ URL μ €μž₯μ†Œμ—μ„œ URL λͺ©λ‘μ„ κ°€μ Έμ˜¨λ‹€

  3. HTML λ‹€μš΄λ‘œλ”λŠ” 도메인 이름 λ³€ν™˜κΈ°λ₯Ό μ‚¬μš©ν•˜μ—¬ URL의 IP μ£Όμ†Œλ₯Ό μ•Œμ•„λ‚΄κ³ , ν•΄λ‹Ή IP μ£Όμ†Œλ‘œ μ ‘μ†ν•˜μ—¬ μ›Ή νŽ˜μ΄μ§€λ₯Ό λ‹€μš΄λ‘œλ“œν•œλ‹€.

  4. μ½˜ν…μΈ  νŒŒμ„œλŠ” λ‹€μš΄λœ HTML νŽ˜μ΄μ§€λ₯Ό νŒŒμ‹±ν•˜μ—¬ μ˜¬λ°”λ₯Έ ν˜•μ‹μ„ κ°€μ‘ŒλŠ”μ§€ 검증

  5. 쀑볡 컨텐츠인지 ν™•μΈν•˜κΈ° μœ„ν•΄

    1. 이미 μ €μž₯μ†Œμ— μžˆλŠ”μ§€ ν™•μΈν•˜κ³  있으면 버린닀

    2. μ—†μœΌλ©΄ μ €μž₯μ†Œμ— μ €μž₯ν•˜κ³  URL μΆ”μΆœκΈ°λ‘œ μ „λ‹¬ν•œλ‹€.

  6. URL μΆ”μΆœκΈ°λŠ” HTML νŽ˜μ΄μ§€μ—μ„œ 링크λ₯Ό 골라낸닀.

  7. 골라낸 링크λ₯Ό URL ν•„ν„°λ‘œ μ „λ‹¬ν•œλ‹€.

  8. 필터링이 λλ‚˜κ³  남은 URL만 쀑볡 URL νŒλ³„ λ‹¨κ³„λ‘œ μ „λ‹¬ν•œλ‹€.

  9. URL μ €μž₯μ†Œμ— λ³΄κ΄€λœ URL인지 μ‚΄ν•€λ‹€

  10. μ €μž₯μ†Œμ— μ—†λŠ” URL은 URL μ €μž₯μ†Œμ— μ €μž₯ν•˜κ³  λ―Έμˆ˜μ§‘ URL μ €μž₯μ†Œμ—λ„ μ €μž₯ν•œλ‹€.

3단계 상세 섀계

  • μ€‘μš”ν•œ μ»΄ν¬λ„ŒνŠΈλ“€

    • DFS vs BFS

      • DFSλŠ” μ–΄λŠ μ •λ„λ‘œ κΉŠμˆ™μ΄ κ°€κ²Œ 될지 λͺ°λΌμ„œ 쒋은 선택이 μ•„λ‹˜

      • 보톡 BFSλ₯Ό μ“°λŠ”λ°, 두 κ°€μ§€ λ¬Έμ œκ°€ 있음

        • ν•œ νŽ˜μ΄μ§€μ—μ„œ λ‚˜μ˜€λŠ” 링크의 λŒ€λΆ€λΆ„μ€ 같은 μ„œλ²„λ‘œ λŒμ•„κ°

        • ν‘œμ€€μ  BFS μ•Œκ³ λ¦¬μ¦˜μ€ URL κ°„ μš°μ„ μˆœμœ„λ₯Ό 두지 μ•ŠμŒ

    • λ―Έμˆ˜μ§‘ URL μ €μž₯μ†Œ

      • 큐 λΌμš°ν„°, 큐 선택기, μž‘μ—… μŠ€λ ˆλ“œλ₯Ό μ΄μš©ν•΄μ„œ νŽ˜μ΄μ§€κ°„ pageκ°„ μ‹œκ°„μ°¨λ₯Ό 두고 λ‹€μš΄λ°›λ„λ‘ ν•œλ‹€.

      • μš°μ„ μˆœμœ„ -μˆœμœ„ κ²°μ •μž₯치λ₯Ό μ΄μš©ν•΄μ„œ μš°μ„ μˆœμœ„λ³„ 큐λ₯Ό λ§Œλ“ λ‹€. μš°μ„ μˆœμœ„κ°€ λ†’μœΌλ©΄ 선택될 ν™•λ₯ λ„ μ˜¬λΌκ°„λ‹€.

    • HTML λ‹€μš΄λ‘œλ”

      • robots.txt에 μˆ˜μ§‘ν•΄λ„ λ˜λŠ” νŽ˜μ΄μ§€ λͺ©λ‘μ΄ λ“€μ–΄μžˆλ‹€.

      • DNS resolverλŠ” 병λͺ©μ΄ λœλ‹€. 도메인 μ£Όμ†Œ - IP μ£Όμ†Œλ₯Ό μΊμ‹œν•΄λ†“κ³ , 크둠 작 등을 돌렀 주기적으둜 κ°±μ‹ ν•œλ‹€.

    • μ•ˆμ •μ„± 확보 μ „λž΅

      • 크둀링 μƒνƒœμ™€ μˆ˜μ§‘λœ 데이터λ₯Ό 지속적 μ €μž₯μž₯μΉ˜μ— 기둝해둔닀.

      • μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό 잘 μ‹ κ²½μ“΄λ‹€

      • 데이터 검증도 μ€‘μš”ν•˜λ‹€.

    • ν™•μž₯μ„± 확보 μ „λž΅

      • λͺ¨λ“ˆ ν˜•νƒœλ‘œ μƒˆλ‘œμš΄ ν˜•νƒœμ˜ μ½˜ν…μΈ λ₯Ό λ‹€μš΄λ°›μ„ 수 있게 ν•œλ‹€. (png downloader)

    • 문제 μžˆλŠ” μ½˜ν…μΈ  감지 및 νšŒν”Ό μ „λž΅

      • 거미덫 - λ¬΄ν•œλ£¨ν”„ νŽ˜μ΄μ§€. ν”Όν•˜κΈ° νž˜λ“€λ‹€. μ‚¬λžŒμ΄ μˆ˜μž‘μ—…μœΌλ‘œ ν™•μΈν•΄μ„œ ν•„ν„°λ§ν•œλ‹€.

    • 데이터 λ…Έμ΄μ¦ˆλ„ μ œκ±°ν•œλ‹€.

4단계 마무리

  • 더 λ…Όμ˜ν•˜λ©΄ 쒋을 것듀

    • μ„œλ²„ μΈ‘ λ Œλ”λ§: 동적 λ Œλ”λ§μ„ μ μš©ν•˜λ©΄ ν•΄κ²°ν•  수 μžˆλ”°

    • 슀팸 λ°©μ§€ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ‘μ–΄μ„œ μŠ€νŒΈμ„± νŽ˜μ΄μ§€λ₯Ό κ±ΈλŸ¬λ‚Έλ‹€.

    • λ°μ΄ν„°λ² μ΄μŠ€ 닀쀑화 및 샀딩

    • μˆ˜ν‰μ  규λͺ¨ ν™•μž₯μ„±

      • stateless μ„œλ²„λ‘œ λ§Œλ“œλŠ” 것이 γ…ˆγ…‡μš”ν•˜λ‹€.

Last updated