์น ํฌ๋กค๋ฌ๋?
๋ก๋ด(robot) ๋๋ ์คํ์ด๋(Spider)๋ผ๊ณ ๋ถ๋ฆ
๊ฒ์ ์์ง์์ ๋๋ฆฌ ์ฐ๋ ๊ธฐ์ ๋ก, ์น์ ์๋ก ์ฌ๋ผ์ค๊ฑฐ๋ ๊ฐฑ์ ๋ ์ปจํ
์ธ ๋ฅด ์ฐพ์๋ด๋ ๊ฒ์ด ์ฃผ๋ ๋ชฉ์
-> ๋ช๊ฐ์ Web Page ์์ ์์ํด์ ๊ทธ ๋งํฌ๋ฅผ ๋ฐ๋ผ ๋๊ฐ๋ฉฐ ์๋ก์ด ์ฝํ
์ธ ๋ฅผ ์์งํ๋ค...
ํฌ๋กค๋ฌ๊ฐ ์ด์ฉ๋๋ ๊ณณ๋ค ?
1. ๊ฒ์ ์์ง ์ธ๋ฑ์ฑ(Search Engine Indexing)
ํฌ๋กค๋ฌ๊ฐ ์ ์ผ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ณณ
์น ํ์ด์ง๋ฅผ ๋ชจ์ ๊ฒ์ ์์ง์ ์ํ ๋ก์ปฌ ์ธ๋ฑ์ค(local index)๋ฅผ ๋ง๋ฌ
ex) Googlebot - ๊ตฌ๊ธ(Google) ๊ฒ์ ์์ง์ด ์ฌ์ฉํ๋ ์น ํฌ๋กค๋ฌ
2. ์น ์์นด์ด๋น(Web Archiving)
๋์ค์ ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ์ฅ๊ธฐ๋ณด๊ด์ ์ํด ์น์์ ์ ๋ณด๋ฅผ ๋ชจ์ผ๋ ์ ์ฐจ๋ฅผ ๋งํจ
ex) ๋ฏธ๊ตญ ๊ตญํ ๋์๊ด(US Library of Congress), EU ์น ์์นด์ด๋ธ ...
3. ์น ๋ง์ด๋(Web Mining)
ex) ์ ๋ช ๊ธ์ต ๊ธฐ์ ๋ฑ์์ ํฌ๋กค๋ฌ๋ฅผ ์ฌ์ฉํด์ ์ฃผ์ฃผ ์ดํ ์๋ฃ๋ ์ฐ์ฐจ ๋ณด๊ณ ์(annual report)๋ฅผ ๋ค์ด๋ฐ์ ๊ธฐ์ ์ ํต์ฌ ์ฌ์ ๋ฐฉํฅ์ ์์๋ด๊ธฐ๋ ํ๋จ๋ค
4. ์น ๋ชจ๋ํฐ๋ง(Web Monitoring)
์ธํฐ๋ท์์ ์ ์๊ถ์ด๋ ์ํ๊ถ์ด ์นจํด๋๋ ์ฌ๋ก๋ ๋ชจ๋ํฐ๋ง์ด ๊ฐ๋ฅํ๋ค.
ex) ๋์ง๋งํฌ(Degimarc)์ฌ๋ ์น ํฌ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ํด์ ํ ์ ์๋ฌผ์ ์ฐพ์๋ด์ ๋ณด๊ณ ํ๋ค๊ณ ํจ..
1๋จ๊ณ. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ฅ
์น ํฌ๋กค๋ฌ์ ๊ธฐ๋ณธ ์๊ณ ๋ฆฌ์ฆ
- URL ์งํฉ์ด ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ฉด, ํด๋น URL๋ค์ด ๊ฐ๋ฆฌํค๋ ๋ชจ๋ ์น ํ์ด์ง๋ฅผ ๋ค์ด๋ก๋ํจ.
- ๋ค์ด๋ฐ์ ์น ํ์ด์ง์์ URL๋ค์ ์ถ์ถ..
- ์ถ์ถ๋ URL๋ค์ ๋ค์ด๋ก๋ํ URL ๋ชฉ๋ก์ ์ถ๊ฐํ๊ณ ์์ ๊ณผ์ ์ ์ฒ์๋ถํฐ ๋ฐ๋ณต
๊ทผ๋ฐ ํฌ๋กค๋ฌ๋ ์๊ฐ๋ณด๋ค ๋จ์ํ๊ฒ ๋์ํ๋ ๊ฒ ์๋๋ผ์.. ์ด๋์ ๋ ์์ค์ ๊ท๋ชจ๋ฅผ ๊ฐ๋ ์น ํฌ๋กค๋ฌ๋ฅผ ์ค๊ณํ๋ ๊ฑด ์ฌ์ด ์์ ์ด ์๋๋ผ๊ณ ํ๋ค.
์น ํฌ๋กค๋ฌ ์ค๊ณ ์์ ๊ณ ๋ คํด์ผํ ํฌ์ธํธ
- ๊ท๋ชจ ํ์ฅ์ฑ: ์น์ ๊ฑฐ๋ํจ.. ๊ทธ๋ฌ๋ฏ๋ก ๋ณํ์ฑ(parallelism)์ ํ์ฉํ๋ฉด ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ์น ํฌ๋กค๋ง์ ํ ์ ์๋ค.
- ์์ ์ฑ(robustness)
- ์์ (politeness): ์์ง ๋์ ์น ์ฌ์ดํธ์ ์งง์ ์๊ฐ ๋์ ๋๋ฌด ๋ง์ ์์ฒญ์ ๋ณด๋ด์๋ ์๋จ.
- ํ์ฅ์ฑ(extensibility): ์๋ก์ด ํํ์ ์ฝํ ์ธ ๋ฅผ ์ง์ํ๊ธฐ๊ฐ ์ฌ์์ผ ํจ.
2๋จ๊ณ. ๊ฐ๋ต์ ์ค๊ณ์ ์ ์ ๋ฐ ๋์ ๊ตฌํ๊ธฐ
์์ URL ์งํฉ
์น ํฌ๋กค๋ฌ๊ฐ ํฌ๋กค๋ง์ ์์ํ๋ ์ถ๋ฐ์
์ผ๋ฐ์ ์ผ๋ก๋ ์ ์ฒด URL ๊ณต๊ฐ์ ์์ ๋ถ๋ถ์งํฉ์ผ๋ก ๋๋๋ ์ ๋ต์ ์ฌ์ฉํจ
๋ฏธ์์ง URL ์ ์ฅ์
ํ๋ ํฌ๋กค๋ฌ์ ํฌ๋กค๋ง ์ํ
= (1) ๋ค์ด๋ก๋ํ URL (2) ๋ค์ด๋ก๋๋ URL ์ ๋ ๊ฐ์ง๋ก ๋๋ ์ ๊ด๋ฆฌ
๋ฏธ์์ง URL ์ ์ฅ์(URL frontier): (2) '๋ค์ด๋ก๋ ํ URL' ์ ์ ์ฅํ๋ ์ปดํฌ๋ํธ
FIFO(First-In-First-Out) ํ(Queue)๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ.
HTML ๋ค์ด๋ก๋
์ธํฐ๋ท์์ ์น ํ์ด์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ ์ปดํฌ๋ํธ
๋๋ฉ์ธ ์ด๋ฆ ๋ณํ๊ธฐ
์น ํ์ด์ง ๋ค์ด ์ URL์ IP ์ฃผ์๋ก ๋ณํํ๋ ์ ์ฐจ๊ฐ ํ์
์ฝํ
์ธ ํ์
์น ํ์ด์ง๋ฅผ ๋ค์ด๋ก๋ ํ๋ฉด ํ์ฑ(parsing)๊ณผ ๊ฒ์ฆ(validation) ์ ์ฐจ๋ฅผ ๊ฑฐ์ณ์ผ ํจ.
ํฌ๋กค๋ง ์๋ฒ ์์ ์ฝํ
์ธ ํ์๋ฅผ ๊ตฌํํ๋ฉด ํฌ๋กค๋ง ๊ณผ์ ์ด ๋๋ ค์ง๊ฒ ๋ ์ ์์ผ๋ฏ๋ก, ๋
๋ฆฝ๋ ์ปดํฌ๋ํธ๋ก..
์ค๋ณต ์ฝํ
์ธ ์ธ๊ฐ?
์น ํ์ด์ง์ ํด์ ๊ฐ์ ๋น๊ตํ๋ ๊ฒ์ด ์ ์ผ ํจ์จ์
์ฝํ
์ธ ์ ์ฅ์
HTML ๋ฌธ์๋ฅผ ๋ณด๊ดํ๋ ์์คํ
์ ์ฅ์๋ฅผ ๊ตฌํํ๋ ๋ฐ ์ฐ์ผ ๊ธฐ์ ์ ๊ณ ๋ฅผ ๋์๋ 1) ์ ์ฅํ ๋ฐ์ดํฐ์ ์ ํ, 2) ํฌ๊ธฐ, 3) ์ ์ฅ์ ์ ๊ทผ ๋น๋, 4) ๋ฐ์ดํฐ์ ์ ํจ ๊ธฐ๊ฐ ๋ฑ์ ์ข
ํฉ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํจ.
URL ์ถ์ถ๊ธฐ
HTML ํ์ด์ง๋ฅผ ํ์ฑํ์ฌ ๋งํฌ๋ค์ ๊ณจ๋ผ๋ด๋ ์ญํ
URL ํํฐ
1) ํน์ ํ ์ฝํ
์ธ ํ์
์ด๋ 2) ํ์ผ ํ์ฅ์๋ฅผ ๊ฐ๋ URL, 3) ์ ์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ URL, 4) ์ ๊ทผ ์ ์ธ ๋ชฉ๋ก(deny list)์ ํฌํจ๋ URL ๋ฑ์ ํฌ๋กค๋ง ๋์์์ ์ ์ธํ๋ ์ญํ
์ด๋ฏธ ๋ฐฉ๋ฌธํ URL
ํด๋น ์๋ฃ ๊ตฌ์กฐ๋ก ๋ธ๋ฃธ ํํฐ ๋ ํด์ ํ
์ด๋ธ์ด ๋๋ฆฌ ์ฌ์ฉ๋จ
URL ์ ์ฅ์
์ด๋ฏธ ๋ฐฉ๋ฌธํ URL์ ๋ณด๊ดํ๋ ์ ์ฅ์
3๋จ๊ณ. ์์ธ ์ค๊ณ
DFS๋ฅผ ์ธ ๊ฒ์ธ๊ฐ, BFS๋ฅผ ์ธ ๊ฒ์ธ๊ฐ?
์น ํฌ๋กค๋ฌ์ ๊ฒฝ์ฐ ๋ณดํต ๋๋น ์ฐ์ ํ์๋ฒ(BFS:breath-first search)๋ฅผ ์ฌ์ฉ
= FIFO(first in first out) ํ๋ฅผ ์ฌ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ
= ํ ์ชฝ์ผ๋ก๋ ํ์ํ URL์ ์ง์ด๋ฃ๊ณ , ๋ค๋ฅธ ํ์ชฝ์ผ๋ก๋ ๊บผ๋ด๊ธฐ๋ง ํ๋ค.
[ ๋ฌธ์ ์ ]
1. ํ ํ์ด์ง์์ ๋์ค๋ ๋งํฌ์ ์๋น์๋ ๊ฐ์ ์๋ฒ๋ก ๋๋์๊ฐ.
2. ํ์ค์ BFS ์๊ณ ๋ฆฌ์ฆ์ URL ๊ฐ์ ์ฐ์ ์์๋ฅผ ๋์ง ์๋๋ค.
-> ๋ชจ๋ ์น ํ์ด์ง๊ฐ ๊ฐ์ ์์ค์ ํ์ง, ๊ฐ์ ์์ค์ ์ค์์ฑ์ ๊ฐ์ง๋ ์๋๋ค..
-> ํ์ด์ง ์์, ์ฌ์ฉ์ ํธ๋ํฝ์ ์, ์
๋ฐ์ดํธ ๋น๋ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ฒ๋์ ๋น์ถ์ด ์ฒ๋ฆฌ ์ฐ์ ์์๋ฅผ ๊ตฌ๋ณํ๋๊ฒ ์ ํฉ.
๋ฏธ์์ง URL ์ ์ฅ์
1. ์์
๋์ผ ์น ์ฌ์ดํธ์ ๋ํด์๋ ํ ๋ฒ์ ํ ํ์ด์ง๋ง ์์ฒญํ๋ค.
-> ์ด๊ฒ์ ๋ง์กฑ ์ํค๋ ค๋ฉด, ์น์ฌ์ดํธ์ ํธ์คํธ๋ช (hostname)๊ณผ ๋ค์ด๋ก๋๋ฅผ ์ํํ๋ ์์ ์ค๋ ๋(worker thread) ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ ์งํ๋ฉด ๋๋ค.
- ํ ๋ผ์ฐํฐ(Queue Router): ๊ฐ์ ํธ์คํธ์ ์ํ URL์ ์ธ์ ๋ ๊ฐ์ ํ๋ก ๊ฐ๋๋ก ๋ณด์ฅํ๋ ์ญํ
- ๋งคํ ํ ์ด๋ธ(Mapping Table): ํธ์คํธ ์ด๋ฆ๊ณผ ํ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ณด๊ดํ๋ ํ ์ด๋ธ
- FIFO ํ(b1๋ถํฐ bn๊น์ง): ๊ฐ์ ํธ์คํธ์ ์ํ URL์ ์ธ์ ๋ ๊ฐ์ ํ์ ๋ณด๊ด๋จ
- ํ ์ ํ๊ธฐ: ํ๋ค์ ์ํํ๋ฉด์ ํ์์ URL์ ๊บผ๋ด์ ํด๋น ํ์์ ๋์จ URL์ ๋ค์ด๋ก๋ํ๋๋ก ์ง์ ๋ ์์ ์ค๋ ๋์ ์ ๋ฌํ๋ ์ญํ
- ์์ ์ค๋ ๋: ์ ๋ฌ๋ URL์ ๋ค์ด๋ก๋ํ๋ ์์ ์ ์ํํจ. ์ ๋ฌ๋ URL์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋ ๊ฒ์ด๋ฉฐ, ์์ ๊ฐ์ ์ง์ฐ์๊ฐ(delay)์ ์ค ์ ์์
2. ์ฐ์ ์์
- ์์๊ฒฐ์ ์ฅ์น(priortizer): URL์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ฐ์ ์์๋ฅผ ๊ณ์ฐํจ
- ์ ๋ฉด ํ: ์ฐ์ ์์ ๊ฒฐ์ ๊ณผ์ ์ ์ฒ๋ฆฌ
- ํ๋ฉด ํ: ํฌ๋กค๋ฌ๊ฐ ์์ ๋ฐ๋ฅด๊ฒ ๋์ํ๋๋ก ๋ณด์ฆ
3. ์ ์ ๋
์ด ์์ ์ ์ต์ ํ ํ๊ธฐ ์ํ ์ ๋ต
1. ์น ํ์ด์ง์ ๋ณ๊ฒฝ ์ด๋ ฅ(update history) ํ์ฉ
2. ์ฐ์ ์์๋ฅผ ํ์ฉํ์ฌ, ์ค์ํ ํ์ด์ง๋ ์ข ๋ ์์ฃผ ์ฌ์์ง
4. ๋ฏธ์์ง URL ์ ์ฅ์๋ฅผ ์ํ ์ง์์ฑ ์ ์ฅ์ฅ์น
HTML ๋ค์ด๋ก๋
1. Robot.txt
์ด ํ์ผ์๋ ํฌ๋กค๋ฌ๊ฐ ์์งํด๋ ๋๋ ํ์ด์ง ๋ชฉ๋ก์ด ๋ค์ด์์
2. ์ฑ๋ฅ ์ต์ ํ
HTML ๋ค์ด๋ก๋์ ์ฌ์ฉํ ์ ์๋ ์ฑ๋ฅ ์ต์ ํ ๊ธฐ๋ฒ๋ค
- ๋ถ์ฐ ํฌ๋กค๋ง
- ๋๋ฉ์ธ ์ด๋ฆ ๋ณํ ์บ์
๋๋ฉ์ธ ์ด๋ฆ ๋ณํ๊ธฐ(DNS Resolver)๋ ํฌ๋กค๋ฌ ์ฑ๋ฅ์ ๋ณ๋ชฉ ์ค ํ๋์ด๋ฐ, ์ด๋ DNS ์์ฒญ์ ๋ณด๋ด๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ ์์ ์ ๋๊ธฐ์ ํน์ฑ ๋๋ฌธ
-> DNS ์กฐํ ๊ฒฐ๊ณผ๋ก ์ป์ด์ง ๋๋ฉ์ธ ์ด๋ฆ๊ณผ IP ์ฃผ์ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์บ์์ ๋ณด๊ดํด ๋๊ณ ํฌ๋ก ์ก(cron job) ๋ฑ์ ๋๋ ค ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ํ๋๋ก ํด ๋์ผ๋ฉด ์ฑ๋ฅ ๋์ผ ์ ์์ - ์ง์ญ์ฑ
- ์งง์ ํ์์์
3. ์์ ์ฑ
- ์์ ํด์(consistent hashing)
- ํฌ๋กค๋ง ์ํ ๋ฏธ ์์ง ๋ฐ์ดํฐ ์ ์ฅ: ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์๋ ์ฝ๊ฒ ๋ณต๊ตฌํ ์ ์๋๋ก..
- ์์ธ ์ฒ๋ฆฌ(Exception handling)
- ๋ฐ์ดํฐ ๊ฒ์ฆ(Data Validation)
4. ํ์ฅ์ฑ
PNG ๋ค์ด๋ก๋์ ์น๋ชจ๋ํฐ(์น์ ๋ชจ๋ํฐ๋งํ์ฌ ์ ์๊ถ์ด๋ ์ํ๊ถ์ด ์นจํด๋๋ ์ผ์ ๋ง๋ ๋ชจ๋)
5. ๋ฌธ์ ์๋ ์ฝํ ์ธ ๊ฐ์ง ๋ฐ ํํผ
- ์ค๋ณต ์ปจํ
์ธ
์น ์ฝํ ์ธ ์ ์ฝ 30% ๊ฐ๋์ ์ค๋ณต
ํด์๋ ์ฒดํฌ์ฌ(check-sum)์ ์ฌ์ฉํ๋ฉด ์ค๋ณต ์ฝํ ์ธ ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ํ์ง ๊ฐ๋ฅ - ๊ฑฐ๋ฏธ ๋ซ(Spider Map)
ํฌ๋กค๋ฌ๋ฅผ ๋ฌดํ ๋ฃจํ์ ๋น ํธ๋ฆฌ๋๋ก ์ค๊ณํ ์น ํ์ด์ง
๋ซ์ ์๋์ผ๋ก ํผํด๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค๊ธฐ๋ ๋งค์ฐ ์ด๋ ค์
= ์ฌ๋์ด ์์์ ์ผ๋ก ๋ซ์ ํ์ธํ๊ณ ์ฐพ์๋ธ ํ์ ๋ซ์ด ์๋ ์ฌ์ดํธ๋ฅผ ํฌ๋กค๋ฌ ํ์ ๋์์์ ์ ์ธํ๊ฑฐ๋ URL ํํฐ ๋ชฉ๋ก์ ๊ฑธ์ด๋๋ ๊ฒ - ๋ฐ์ดํฐ ๋ ธ์ด์ฆ
4๋จ๊ณ. ๋ง๋ฌด๋ฆฌ
์ถ๊ฐ ๋ ผ์ ํฌ์ธํธ
1. ์๋ฒ ์ธก ๋ ๋๋ง(server-side rendering)
๋ง์ ์น ์ฌ์ดํธ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ(Java Script), AJAX ๋ฑ์ ๊ธฐ์ ์ ์ฌ์ฉํด์ ๋งํฌ๋ฅผ ์ฆ์์์ ๋ง๋ค์ด ๋ด๋๋ฐ, ์น ํ์ด์ง๋ฅผ ๊ทธ๋ฅ ์๋ ๊ทธ๋๋ก ๋ค์ด ๋ฐ์์ ํ์ฑํด๋ณด๋ฉด ๋์ ์ผ๋ก ์์ฑ๋๋ ๋งํฌ๋ ๋ฐ๊ฒฌํ ์๊ฐ ์๊ฒ ๋๋ค.
-> ๋์ ๋ ๋๋ง(dynamic rendering) ์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅ
2. ์์น ์๋ ํ์ด์ง ํํฐ๋ง
3. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ค์คํ ๋ฐ ์ค๋ฉ
4. ์ํ์ ๊ท๋ชจ ํ์ฅ์ฑ(horizontal scalability)
์ํ์ ๊ท๋ชจ ํ์ฅ์ฑ์ ๋ฌ์ฑํ๋ ๋ฐ์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์๋ฒ๊ฐ ์ํ์ ๋ณด๋ฅผ ์ ์งํ์ง ์๋๋ก ํ๋ ๊ฒ, ์ฆ ๋ฌด์ํ(stateless) ์๋ฒ๋ก ๋ง๋๋ ๊ฒ์ด๋ค.
5. ๊ฐ์ฉ์ฑ, ์ผ๊ด์ฑ, ์์ ์ฑ
6. ๋ฐ์ดํฐ ๋ถ์ ์๋ฃจ์ (analytics)