Cloudflare R2 파일, 이름 κ·ΈλŒ€λ‘œ AI Search에 μΈλ±μ‹±ν•˜λŠ” 법

Cloudflare AI SearchλŠ” 이제 ν™•μž₯자 μ—†λŠ” R2 객체도 HTTP Content-Type으둜 μΈμ‹ν•©λ‹ˆλ‹€. κΈ°μ‘΄ ν‚€λ₯Ό μœ μ§€ν•œ 채 νŒŒμΌμ„ μΈλ±μ‹±ν•˜λŠ” 방법, 메타데이터 볡ꡬ λΉ„μš©, 동기화 ν•œκ³„, μ‹€μ œ 검색 κ°€λŠ₯ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λŠ” 운영 절차λ₯Ό ν•œ λ²ˆμ— μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

κ²Œμ‹œμΌ

μž‘μ„±μž
Cloudflare R2 파일, 이름 κ·ΈλŒ€λ‘œ AI Search에 μΈλ±μ‹±ν•˜λŠ” 법

Cloudflare AI SearchλŠ” 2026λ…„ 9μ›” 11일, Cloudflare R2 μˆ˜μ§‘ κ³Όμ •μ—μ„œ 파일λͺ… λ•Œλ¬Έμ— μƒκΈ°λ˜ μ œμ•½ ν•˜λ‚˜λ₯Ό μ—†μ•΄μŠ΅λ‹ˆλ‹€. λ¬Έμ„œκ°€ ν™•μž₯자 μ—†λŠ” κ³ μ • ν‚€λ‘œ μ €μž₯돼 μžˆμ–΄λ„, κ°μ²΄λ§ˆλ‹€ μ§€μ›λ˜λŠ” HTTP Content-Type을 λ„£μ–΄ 두면 ν‚€λ₯Ό λ°”κΎΈμ§€ μ•Šκ³  검색 λŒ€μƒμœΌλ‘œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

이제 μˆ˜μ§‘ μ›Œν¬ν”Œλ‘œμ—μ„œ 파일λͺ… λ³€κ²½ 단계λ₯Ό κ±·μ–΄λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ 메타데이터 정리와 인덱싱, 그리고 λ¬Έμ„œκ°€ μ‹€μ œ 검색 결과에 λ“€μ–΄μ™”λŠ”μ§€ ν™•μΈν•˜λŠ” μ ˆμ°¨κΉŒμ§€ μ‚¬λΌμ§€λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€.

Cloudflare R2μ—μ„œ μ‹€μ œλ‘œ 달라진 점

Cloudflare AI SearchλŠ” 자체 μ½˜ν…μΈ λ₯Ό 검색할 수 있게 ν•΄μ£ΌλŠ” κ΄€λ¦¬ν˜• 검색 μ„œλΉ„μŠ€μž…λ‹ˆλ‹€. 데이터λ₯Ό λ„£λŠ” 방법 쀑 ν•˜λ‚˜κ°€ R2 버킷이며, R2λŠ” Cloudflare의 객체 μŠ€ν† λ¦¬μ§€μž…λ‹ˆλ‹€. AI SearchλŠ” 버킷을 읽고, μ§€μ›λ˜λŠ” λ¬Έμ„œλ₯Ό 검색 κ°€λŠ₯ν•œ ν…μŠ€νŠΈλ‘œ λ³€ν™˜ν•œ λ’€, 앱이 쿼리λ₯Ό 보낼 λ•Œ μ‚¬μš©ν•  인덱슀λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

이번 μ—…λ°μ΄νŠΈ μ „μ—λŠ” 파일 ν˜•μ‹μ„ μ•ˆμ •μ μœΌλ‘œ κ°μ§€ν•˜λ €λ©΄ 파일λͺ… ν™•μž₯μžκ°€ ν•„μš”ν–ˆμŠ΅λ‹ˆλ‹€. manual.pdf 같은 ν‚€λŠ” μΈλ±μ„œκ°€ 파일 μ’…λ₯˜λ₯Ό μ•Œμ•„λ³Ό 수 μžˆμ§€λ§Œ, documents/manual-alpha처럼 κ³ μ •λœ ν‚€λ§ŒμœΌλ‘œλŠ” μ•Œ 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

이제 AI SearchλŠ” ν™•μž₯자 μ—†λŠ” 객체에 μ €μž₯된 일반 HTTP Content-Type으둜 ν˜•μ‹μ„ νŒλ³„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. application/pdfλŠ” ν•΄λ‹Ή λ°”μ΄νŠΈκ°€ PDFλΌλŠ” 뜻이고, text/markdown은 Markdownμ΄λΌλŠ” λœ»μž…λ‹ˆλ‹€. Cloudflareκ°€ μ•ˆλ‚΄ν•˜λŠ” 지원 ν˜•μ‹μ—λŠ” text/plain, application/json, text/html, text/csv도 ν¬ν•¨λ©λ‹ˆλ‹€.

파일λͺ… ν™•μž₯자 방식이 μ—†μ–΄μ§„ 것은 μ•„λ‹™λ‹ˆλ‹€. CloudflareλŠ” μ—¬μ „νžˆ 인식 κ°€λŠ₯ν•œ ν™•μž₯자λ₯Ό 더 λΉ λ₯΄κ³  μš°μ„ μ μΈ 감지 경둜둜 μ„€λͺ…ν•©λ‹ˆλ‹€. 이번 μƒˆ κ²½λ‘œλŠ” ν‚€λ₯Ό λ°”κΏ€ λ•Œ URL, λ°μ΄ν„°λ² μ΄μŠ€ μ°Έμ‘°, ν…Œλ„ŒνŠΈ λ§€ν•‘, μ„œλͺ… λ˜λŠ” 이미 운영 쀑인 μ—…λ‘œλ“œ κ·œμ•½μ΄ κΉ¨μ§€λŠ” κ²½μš°μ— 특히 μœ μš©ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ λ°˜λ“œμ‹œ ꡬ뢄해야 ν•  점이 μžˆμŠ΅λ‹ˆλ‹€. Content-Type은 R2 객체에 λΆ™λŠ” HTTP λ©”νƒ€λ°μ΄ν„°μž…λ‹ˆλ‹€. μΉ΄ν…Œκ³ λ¦¬, 고객, λ¬Έμ„œ μƒνƒœ 같은 필터에 AI Searchκ°€ μ“°λŠ” μ‚¬μš©μž μ§€μ • 메타데이터가 μ•„λ‹™λ‹ˆλ‹€. μ‚¬μš©μž μ§€μ • ν•„λ“œλŠ” x-amz-meta-* 헀더에 싀리며 AI Searchμ—μ„œ μŠ€ν‚€λ§ˆλ₯Ό μ •μ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. x-amz-meta-content-type을 좔가해도 μ‹€μ œ HTTP ν•„λ“œλ₯Ό λŒ€μ‹ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

이번 λ³€ν™”κ°€ μ μš©λ˜λŠ” 지점은 λ¬Έμ„œκ°€ μΈλ±μŠ€μ— λ“€μ–΄μ˜€λŠ” μ†ŒμŠ€ μˆ˜μ§‘ λ‹¨κ³„μž…λ‹ˆλ‹€. κ²€μƒ‰λœ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ 닡변을 μž‘μ„±ν•˜λŠ” λͺ¨λΈμ€ λ°”λ€Œμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. GLM-5.3 Flash μ—…λ°μ΄νŠΈλŠ” κ·Έ μ΄ν›„μ˜ 생성 단계에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.

핡심 λ³€ν™”λŠ” 파일λͺ… 체계λ₯Ό ν•˜λ‚˜ 덜 κ΄€λ¦¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€

뢈투λͺ…ν•œ ν‚€κ°€ 널리 μ“°μ΄λŠ” λ°λŠ” μ΄μœ κ°€ μžˆμŠ΅λ‹ˆλ‹€. μ œν’ˆμ—μ„œ κ³ μ •λœ λ°μ΄ν„°λ² μ΄μŠ€ IDλ₯Ό R2 ν‚€λ‘œ μ‚¬μš©ν•˜λ©΄ 객체 λ‚΄μš©μ΄ λ°”λ€Œμ–΄λ„ μ£Όμ†ŒλŠ” κ·ΈλŒ€λ‘œ λ‘˜ 수 μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ„œ μ„œλΉ„μŠ€λŠ” 고객의 μ›λž˜ 파일λͺ…이 λ…ΈμΆœλ˜μ§€ μ•Šλ„λ‘ ν•  수 있고, μ„œλͺ…λœ URL은 μ •ν™•ν•œ 킀에 μ˜μ‘΄ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

κΈ°μ‘΄ 우회 방식은 κ²€μƒ‰μš© 사본에 ν™•μž₯μžκ°€ μžˆλŠ” 이름을 μƒˆλ‘œ λ§Œλ“€κ±°λ‚˜, AI Searchκ°€ 객체λ₯Ό 보기 전에 이름 λ³€κ²½ 단계λ₯Ό μΆ”κ°€ν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. 그러면 μ €μž₯ν•˜κ³ , λŒ€μ‘°ν•˜κ³ , 정리해야 ν•  μ‹λ³„μžκ°€ ν•˜λ‚˜ 더 μƒκΉλ‹ˆλ‹€.

이번 μ—…λ°μ΄νŠΈλ‘œ HTTP 메타데이터가 이미 μ˜¬λ°”λ₯Έ κ°μ²΄λŠ” μ›λž˜ ν‚€λ₯Ό κ·ΈλŒ€λ‘œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 운영 μΈ‘λ©΄μ—μ„œ μ‹€μ§ˆμ μœΌλ‘œ μ€„μ–΄λ“œλŠ” 일이 λ°”λ‘œ 이 λΆ€λΆ„μž…λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈ μ „ν›„μ˜ μˆ˜μ§‘ μž‘μ—…μ„ λΉ„κ΅ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. μ‹€μ œ μΈ‘μ • λ²€μΉ˜λ§ˆν¬λ‚˜ 보μž₯된 μ ˆκ°μ•‘μ΄ μ•„λ‹ˆλΌ, μž‘μ—… 흐름을 μ„€λͺ…ν•˜κΈ° μœ„ν•œ λͺ¨λΈμž…λ‹ˆλ‹€.

μƒν™©μ—…λ°μ΄νŠΈ μ „ μž‘μ—…ν˜„μž¬ μž‘μ—…μ—¬μ „νžˆ ν•„μš”ν•œ μž‘μ—…
ν™•μž₯자 μ—†λŠ” μƒˆ 파일 μ—…λ‘œλ“œκ°μ²΄ μ“°κΈ°, ν™•μž₯μžκ°€ 뢙은 κ²€μƒ‰μš© 이름 생성, 인덱싱, κ²€μ¦μ§€μ›λ˜λŠ” Content-Typeκ³Ό ν•¨κ»˜ 객체 μ“°κΈ°, 인덱싱, κ²€μ¦ν˜•μ‹ 검증과 κ²°κ³Ό 확인
μœ νš¨ν•œ HTTP 메타데이터가 μžˆλŠ” κΈ°μ‘΄ κ°μ²΄κ²€μƒ‰μš© 이름 생성 λ˜λŠ” μœ μ§€, 인덱싱, 검증킀 μœ μ§€, 동기화, 검증동기화와 κ²°κ³Ό 확인
HTTP 메타데이터가 잘λͺ»λκ±°λ‚˜ μ—†λŠ” κΈ°μ‘΄ 객체빠진 ν˜•μ‹μ„ 이름 λ³€κ²½μœΌλ‘œ 우회, 인덱싱, 검증감사, 메타데이터 볡ꡬ, 동기화, 검증볡ꡬ μž‘μ—…κ³Ό κ²°κ³Ό 확인
ν™•μž₯자 μ—†λŠ” R2 객체의 ν‚€λŠ” κ³ μ •λœ 채 Content-Type 검증을 거쳐 AI Search 인덱슀둜 μ΄λ™ν•˜λŠ” μ•„ν‚€ν…μ²˜ λͺ¨λΈ
ν‚€λŠ” κ·ΈλŒ€λ‘œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ§€μ›λ˜λŠ” HTTP Content-Type이 파일 ν˜•μ‹ μ‹ ν˜Έκ°€ λ˜μ§€λ§Œ, 이후에도 객체λ₯Ό λ™κΈ°ν™”ν•˜κ³  κ²°κ³Όλ₯Ό 검증해야 ν•©λ‹ˆλ‹€.

이 ν‘œκ°€ λΉ„μš© μ ˆκ°μ•‘μ„ μ œμ‹œν•˜μ§€ μ•ŠλŠ” λ°λŠ” μ΄μœ κ°€ μžˆμŠ΅λ‹ˆλ‹€. CloudflareλŠ” 이 κΈ°λŠ₯으둜 μ ˆμ•½λ˜λŠ” μ‹œκ°„μ„ κ³΅κ°œν•˜μ§€ μ•Šμ•˜μœΌλ©°, 이번 λ¦΄λ¦¬μŠ€κ°€ κΈ°μ‘΄ 메타데이터λ₯Ό μžλ™μœΌλ‘œ λ‹€μ‹œ μž‘μ„±ν•΄ 주지도 μ•ŠμŠ΅λ‹ˆλ‹€.

남은 μž‘μ—…μ—λŠ” μ–Όλ§ˆμ˜ λΉ„μš©μ΄ λ“œλŠ”κ°€

AI SearchλŠ” μ˜€ν”ˆ 베타 기간에 무료이며, μ‚¬μš© 쀑인 Workers ν”Œλžœμ˜ ν•œλ„ μ•ˆμ—μ„œ μ΄μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€ν† λ¦¬μ§€μ™€ 벑터 인덱싱도 ν¬ν•¨λ©λ‹ˆλ‹€. Workers AI와 AI Gateway μ‚¬μš©λŸ‰μ€ λ³„λ„λ‘œ 과금될 수 μžˆμ§€λ§Œ, 이번 μˆ˜μ§‘ 방식 변경이 κ·Έ μš”κΈˆμ„ λ°”κΎΈμ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

메타데이터λ₯Ό λ³΅κ΅¬ν•˜λ©΄ R2 λΉ„μš©μ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. ListObjects, PutObject, CopyObjectλŠ” Class A μž‘μ—…μœΌλ‘œ κ³„μ‚°λ©λ‹ˆλ‹€. 볡ꡬ 도ꡬ가 객체λ₯Ό κ²€μ‚¬ν•˜κ±°λ‚˜ 읽을 λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” HeadObject와 GetObjectλŠ” Class B μž‘μ—…μž…λ‹ˆλ‹€.

Standard storage의 Class A μš”μ²­μ€ μ›”κ°„ 무료 ν—ˆμš©λŸ‰ 1 million건을 λ„˜μœΌλ©΄ $4.50 per millionμž…λ‹ˆλ‹€. Infrequent Accessμ—λŠ” 무료 ꡬ간이 μ—†μœΌλ©° Class A μš”μ²­ 가격은 $9.00 per millionμž…λ‹ˆλ‹€. 객체λ₯Ό μ½κ±°λ‚˜ 볡사할 λ•ŒλŠ” $0.01 per GBκ°€ 좔가될 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ μ˜ˆμ‚° 원칙은 λͺ…ν™•ν•©λ‹ˆλ‹€. Content-Type이 μ˜¬λ°”λ₯Έ κ°μ²΄λŠ” 이름 변경을 μœ„ν•œ 볡ꡬ가 ν•„μš” μ—†μŠ΅λ‹ˆλ‹€. 값이 잘λͺ»λœ κ°μ²΄λŠ” μ‚¬μš©ν•˜λŠ” 도ꡬ에 따라 μ“°κΈ° λ˜λŠ” 볡사 μž‘μ—…μ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 버킷 전체λ₯Ό μ •λ¦¬ν•˜κΈ° 전에 이런 μž‘μ—… μˆ˜λΆ€ν„° 계산해야 ν•©λ‹ˆλ‹€.

AI Search μΈ‘μ—μ„œλŠ” 규λͺ¨λ„ λ”°μ Έμ•Ό ν•©λ‹ˆλ‹€. Workers Free의 μΈμŠ€ν„΄μŠ€λ‹Ή ν•œλ„λŠ” 100,000개 νŒŒμΌμž…λ‹ˆλ‹€. Workers Paidμ—μ„œλŠ” 1 million개 νŒŒμΌκΉŒμ§€ ν—ˆμš©λ˜λ©°, ν•˜μ΄λΈŒλ¦¬λ“œ 검색을 켜면 500,000κ°œμž…λ‹ˆλ‹€. 4 MB 파일 μ œν•œμ€ 두 ν”Œλžœ λͺ¨λ‘ κ°™μŠ΅λ‹ˆλ‹€.

μ§€κΈˆ λ°”λ‘œ μ μš©ν•  수 μžˆλŠ” νŒ€

κ³ μ • μ—…λ‘œλ“œ ID둜 혼자 μ„œλΉ„μŠ€λ₯Ό μš΄μ˜ν•˜λŠ” SaaS μ°½μ—…μž

λ°μ΄ν„°λ² μ΄μŠ€μ— 이미 μ €μž₯된 R2 ν‚€λŠ” μœ μ§€ν•˜κ³ , μ—…λ‘œλ”κ°€ 객체λ₯Ό μ“Έ λ•Œ μ‹€μ œ MIME ν˜•μ‹μ„ ν•¨κ»˜ μ €μž₯ν•˜λ„λ‘ ν•©λ‹ˆλ‹€. 그러면 고객 지원 검색이 두 번째 파일λͺ… μ—΄μ΄λ‚˜ κ²€μƒ‰μš© 사본을 λ§Œλ“œλŠ” 배치 μž‘μ—… 없이 같은 객체λ₯Ό μˆ˜μ§‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

고객이 λ¬Έμ„œλ₯Ό κ΅μ²΄ν•˜κ±°λ‚˜ μ‚­μ œν•˜κ±°λ‚˜ 이동할 λ•Œ λŒ€μ‘°ν•΄μ•Ό ν•  μ‹λ³„μžκ°€ μ€„μ–΄λ“­λ‹ˆλ‹€. λ‹€λ§Œ 검색 λŒ€μƒ 객체라면 μ—…λ‘œλ“œ λ‹¨κ³„μ—μ„œ λ²”μš© λ°”μ΄λ„ˆλ¦¬ ν˜•μ‹μ„ 계속 κ±°λΆ€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ ˆκ±°μ‹œ 버킷을 κ΄€λ¦¬ν•˜λŠ” ν”Œλž«νΌ μ—”μ§€λ‹ˆμ–΄

ν™•μž₯자 μ—†λŠ” 객체와 κ·Έ HTTP 메타데이터λ₯Ό λ‚˜μ—΄ν•˜κ³ , 각 값을 Cloudflareκ°€ μ§€μ›ν•˜λŠ” MIME ν˜•μ‹κ³Ό 비ꡐ해 μ‹€νŒ¨ λŒ€μƒμ„ λΆ„λ¦¬ν•©λ‹ˆλ‹€. 버킷 전체λ₯Ό κ±΄λ“œλ¦¬κΈ° 전에 μž‘μ€ ν‘œλ³ΈλΆ€ν„° λ³΅κ΅¬ν•©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ ν•˜λ©΄ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ λ²”μœ„λ₯Ό ν†΅μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€μ œ 볡ꡬ가 ν•„μš”ν•œ κ°μ²΄μ—λ§Œ λΉ„μš©μ„ μ“°κ³ , μœ νš¨ν•œ 메타데이터가 μžˆλŠ” ν‚€λŠ” κ³§λ°”λ‘œ 동기화와 검증 λ‹¨κ³„λ‘œ λ„˜κΈΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ©€ν‹°ν…Œλ„ŒνŠΈ μ œν’ˆνŒ€

μ›λž˜ 파일λͺ…을 λ…ΈμΆœν•˜μ§€ μ•ŠλŠ” 뢈투λͺ…ν•œ 객체 ν‚€λ₯Ό μœ μ§€ν•˜κ³ , μ—…λ‘œλ“œν•  λ•Œ μ‹ λ’°ν•  수 μžˆλŠ” μ„œλ²„ μΈ‘ 검사 결과둜 Content-Type을 μ„€μ •ν•©λ‹ˆλ‹€. ν…Œλ„ŒνŠΈλ§ˆλ‹€ 인덱싱 경계λ₯Ό λ‚˜λˆ μ•Ό ν•œλ‹€λ©΄ AI Search 경둜 ν•„ν„°λ‚˜ μ ‘λ‘μ‚¬λŠ” λ³„λ„λ‘œ μ μš©ν•©λ‹ˆλ‹€.

κ·Έ κ²°κ³Ό μ•„ν‚€ν…μ²˜μ˜ 일관성을 지킬 수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€ν† λ¦¬μ§€μ˜ μ‹λ³„μžλŠ” 파일 ν‘œμ‹œ 방식과 λΆ„λ¦¬ν•˜λ©΄μ„œλ„, μΈλ±μ„œμ—λŠ” 검증 κ°€λŠ₯ν•œ ν˜•μ‹ 정보λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

고객 μ§€μ‹λ² μ΄μŠ€λ₯Ό μš΄μ˜ν•˜λŠ” μ—μ΄μ „μ‹œ

λŸ°λΆμ—μ„œ 두 κ°€μ§€ 메타데이터 μž‘μ—…μ„ λΆ„λ¦¬ν•©λ‹ˆλ‹€. HTTP Content-Type은 ν™•μž₯자 μ—†λŠ” νŒŒμΌμ„ μˆ˜μ§‘ν•  수 μžˆλŠ”μ§€ κ²°μ •ν•©λ‹ˆλ‹€. μ‚¬μš©μž μ§€μ • x-amz-meta-* ν•„λ“œλŠ” μŠ€ν‚€λ§ˆλ₯Ό μ •μ˜ν•œ λ’€ μΈλ±μ‹±λœ κ²°κ³Όλ₯Ό μ–΄λ–»κ²Œ 필터링할지 κ²°μ •ν•©λ‹ˆλ‹€.

문제 원인을 찾기도 μ‰¬μ›Œμ§‘λ‹ˆλ‹€. λ¬Έμ„œκ°€ 보이지 μ•Šμ„ λ•Œ ν•„ν„° κ·œμΉ™μ΄λ‚˜ λ‹΅λ³€ λͺ¨λΈλΆ€ν„° λ°”κΎΈλŠ” λŒ€μ‹ , νŒ€μ΄ λ¨Όμ € μˆ˜μ§‘ 메타데이터λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

ν™•μž₯자 μ—†λŠ” νŒŒμΌμ„ Cloudflare R2 지원 κ²½λ‘œμ— λ„£λŠ” 방법

Cloudflare의 R2 Workers APIλŠ” μš”μ²­ 헀더λ₯Ό httpMetadata둜 받을 수 μžˆμŠ΅λ‹ˆλ‹€. μ•„λž˜ WorkerλŠ” μš”μ²­ 경둜λ₯Ό 객체 ν‚€λ‘œ κ·ΈλŒ€λ‘œ μ“°κ³ , Content-Type 없이 λ“€μ–΄μ˜¨ μ—…λ‘œλ“œλŠ” κ±°λΆ€ν•©λ‹ˆλ‹€.

wrangler.jsoncμ—μ„œ R2 버킷을 DOCS둜 λ°”μΈλ”©ν•©λ‹ˆλ‹€.

Jsonc
{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "name": "r2-document-upload",
  "main": "src/index.ts",
  "compatibility_date": "2026-09-11",
  "r2_buckets": [
    {
      "binding": "DOCS",
      "bucket_name": "your-bucket"
    }
  ]
}

그런 λ‹€μŒ μ•„λž˜ Workerλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

TypeScript
interface Env {
  DOCS: R2Bucket;
}

export default {
  async fetch(request, env): Promise<Response> {
    if (request.method !== "PUT") {
      return new Response("Method Not Allowed", { status: 405 });
    }

    const key = new URL(request.url).pathname.replace(/^\//, "");
    const contentType = request.headers.get("content-type");

    if (!key || !contentType) {
      return new Response("Key and Content-Type are required");
    }

    await env.DOCS.put(key, request.body, {
      httpMetadata: request.headers,
    });

    return new Response(`Stored ${key}`);
  },
} satisfies ExportedHandler<Env>;

npx wrangler devλ₯Ό μ‹€ν–‰ν•˜κ³ , Wranglerκ°€ 좜λ ₯ν•œ 둜컬 μ£Όμ†Œλ₯Ό WORKER_URL에 넣은 λ’€ 둜컬 PDFλ₯Ό ν™•μž₯자 μ—†λŠ” 경둜둜 μ—…λ‘œλ“œν•©λ‹ˆλ‹€.

Bash
curl "$WORKER_URL/documents/manual-alpha" \
  --request PUT \
  --header "Content-Type: application/pdf" \
  --data-binary @manual.pdf

이 예제둜 ν™•μΈλ˜λŠ” 것은 μŠ€ν† λ¦¬μ§€ μ €μž₯ λ‹¨κ³„κΉŒμ§€μž…λ‹ˆλ‹€. 인덱싱 μ„±κ³΅κΉŒμ§€ μž…μ¦ν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. ν”„λ‘œλ•μ…˜μ—μ„œλŠ” 인증을 μΆ”κ°€ν•˜κ³ , μ‚¬μš©μžκ°€ 보낸 파일λͺ…λ§Œ λ―Ώμ§€ 말고 μ‹ λ’°ν•  수 μžˆλŠ” κ²€μ‚¬λ‘œ ν˜•μ‹μ„ νŒλ³„ν•œ λ’€ Cloudflare의 지원 λͺ©λ‘κ³Ό λŒ€μ‘°ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ—…λ‘œλ“œ 성곡이 검색 κ°€λŠ₯을 λœ»ν•˜μ§€ μ•ŠλŠ” 이유

R2 μ“°κΈ°λŠ” κ°•ν•œ 일관성을 보μž₯ν•˜λ―€λ‘œ μ„±κ³΅ν•œ μ“°κΈ° μž‘μ—… λ’€μ—λŠ” 객체와 메타데이터가 λ°”λ‘œ λ³΄μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ AI Search 인덱싱은 λ³„λ„μ˜ 비동기 μž‘μ—…μž…λ‹ˆλ‹€. 동기화 μš”μ²­μ΄ μ ‘μˆ˜λΌλ„ ν•΄λ‹Ή ν•­λͺ©μ€ λ‚˜μ€‘μ— μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

R2 기반 μΈμŠ€ν„΄μŠ€λŠ” 기본적으둜 6μ‹œκ°„λ§ˆλ‹€ λ™κΈ°ν™”λ©λ‹ˆλ‹€. 간격은 1, 2, 4, 6, 12, 24μ‹œκ°„ μ€‘μ—μ„œ μ„ νƒν•˜κ±°λ‚˜ 직접 μž‘μ—…μ„ μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Bash
npx wrangler ai-search jobs create <INSTANCE_NAME>

μˆ˜λ™ μ†ŒμŠ€ λ™κΈ°ν™”λŠ” 30μ΄ˆμ— ν•œ λ²ˆκΉŒμ§€λ§Œ μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μž¬μ‹œλ„ 횟수λ₯Ό λŠ˜λ €λ„ 잘λͺ»λœ 메타데이터가 κ³ μ³μ§€μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

μž‘μ—…μ΄ λλ‚œ λ’€ ν•­λͺ© 둜그, ν•­λͺ© μ„ΈλΆ€ 정보 λ˜λŠ” μΈμŠ€ν„΄μŠ€ 톡계λ₯Ό ν™•μΈν•©λ‹ˆλ‹€. AI Searchκ°€ κ°μ§€ν•œ 파일 ν˜•μ‹μ„ 받아듀이지 λͺ»ν•  λ•Œ λ‚˜νƒ€λ‚˜λŠ” ν•­λͺ© μˆ˜μ€€ 였λ₯˜λŠ” unsupported_typeμž…λ‹ˆλ‹€. 객체λ₯Ό μˆ˜μ •ν•œ λ‹€μŒ ν•΄λ‹Ή ν•­λͺ©μ΄λ‚˜ μ†ŒμŠ€λ₯Ό λ‹€μ‹œ λ™κΈ°ν™”ν•©λ‹ˆλ‹€.

λͺ¨λ“  R2 킀에 이미 인식 κ°€λŠ₯ν•œ ν™•μž₯μžκ°€ μžˆλ‹€λ©΄ 이번 λ³€κ²½μ˜ 영ν–₯을 λ°›μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. AI Search μ†ŒμŠ€κ°€ μ™ΈλΆ€ R2 버킷이 μ•„λ‹ˆλΌ μ›Ήμ‚¬μ΄νŠΈλ‚˜ κΈ°λ³Έ 제곡 μŠ€ν† λ¦¬μ§€μΈ κ²½μš°λ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€. 이번 λ³€κ²½μœΌλ‘œ μ§€μ›λ˜μ§€ μ•ŠλŠ” ν˜•μ‹μ΄λ‚˜ 크기 μ œν•œμ„ λ„˜μ€ νŒŒμΌκΉŒμ§€ 인덱싱할 수 있게 된 것은 μ•„λ‹™λ‹ˆλ‹€.

이번 주에 μ‹€ν–‰ν•  μž‘μ—… μˆœμ„œ

μ²˜μŒλΆ€ν„° 일괄 μž¬μž‘μ„±μ„ ν•˜μ§€ 말고 감사뢀터 μ‹œμž‘ν•©λ‹ˆλ‹€.

  1. κ±΄λ„ˆλ›΄ ν™•μž₯자 μ—†λŠ” 객체 μ°ΎκΈ°

    httpMetadataλ₯Ό 포함해 R2 객체λ₯Ό λ‚˜μ—΄ν•˜κ³ , truncatedκ°€ falseκ°€ 될 λ•ŒκΉŒμ§€ νŽ˜μ΄μ§€λ₯Ό λ„˜κΉλ‹ˆλ‹€. λ§ˆμ§€λ§‰ 경둜 뢀뢄에 ν™•μž₯μžκ°€ μ—†λŠ” ν‚€λ₯Ό μΆ”λ¦° λ’€ AI Search ν•­λͺ© λ‘œκ·Έμ™€ unsupported_type μ‹€νŒ¨ 내역을 μ„œλ‘œ λŒ€μ‘°ν•©λ‹ˆλ‹€.

  2. 메타데이터 λΆ„λ₯˜ν•˜κΈ°

    μ§€μ›λ˜λŠ” MIME ν˜•μ‹κ³Ό 값이 μ—†κ±°λ‚˜, 잘λͺ»λκ±°λ‚˜, μ§€μ›λ˜μ§€ μ•Šκ±°λ‚˜, application/octet-stream인 λŒ€μƒμ„ κ΅¬λΆ„ν•©λ‹ˆλ‹€. μ‚¬μš©μž μ§€μ • x-amz-meta-* ν•„λ“œλŠ” λ‹€λ₯Έ 문제λ₯Ό ν•΄κ²°ν•˜λ―€λ‘œ 이 κ²€μ‚¬μ—μ„œ μ œμ™Έν•©λ‹ˆλ‹€.

  3. μ†Œκ·œλͺ¨ ν‘œλ³Έ λ³΅κ΅¬ν•˜κΈ°

    μ‹€μ œλ‘œ μ €μž₯ν•˜λŠ” ν˜•μ‹μ„ κ³ λ₯΄κ²Œ λŒ€ν‘œν•˜λŠ” μž‘μ€ ν‘œλ³Έμ„ κ³ λ¦…λ‹ˆλ‹€. 도ꡬ가 ν—ˆμš©ν•˜λŠ” 경우 μ›λž˜ ν‚€λ₯Ό μœ μ§€ν•˜λ©΄μ„œ 각 객체λ₯Ό μ˜¬λ°”λ₯Έ HTTP Content-Type으둜 μ“°κ±°λ‚˜ λ³΅μ‚¬ν•©λ‹ˆλ‹€.

  4. 동기화 ν›„ 검색 κ²°κ³Ό ν™•μΈν•˜κΈ°

    μ†ŒμŠ€ 동기화λ₯Ό ν•œ 번 μ‹€ν–‰ν•©λ‹ˆλ‹€. ν•­λͺ© μ²˜λ¦¬κ°€ 끝날 λ•ŒκΉŒμ§€ κΈ°λ‹€λ € 둜그λ₯Ό μ‚΄ν•€ λ‹€μŒ, 각 λ¬Έμ„œ μ•ˆμ˜ 이미 μ•Œκ³  μžˆλŠ” 문ꡬλ₯Ό κ²€μƒ‰ν•©λ‹ˆλ‹€. μŠ€ν† λ¦¬μ§€ μ“°κΈ° 성곡 ν‘œμ‹œκ°€ 끝이 μ•„λ‹™λ‹ˆλ‹€. 좜처 문ꡬ가 검색 결과둜 λŒμ•„μ™€μ•Ό μ™„λ£Œμž…λ‹ˆλ‹€.

  5. 검증이 λλ‚œ λ’€μ—λ§Œ λ²”μœ„ λ„“νžˆκΈ°

    볡ꡬ 방식에 따라 λ°œμƒν•  Class A와 Class B μž‘μ—… 수λ₯Ό μΆ”μ‚°ν•˜κ³  R2 μŠ€ν† λ¦¬μ§€ 클래슀λ₯Ό ν™•μΈν•œ λ‹€μŒ 배치λ₯Ό ν™•λŒ€ν•©λ‹ˆλ‹€. λ™μ‹œμ— μ—…λ‘œλ”λ„ μˆ˜μ •ν•΄, μƒˆλ‘œ λ“€μ–΄μ˜€λŠ” ν™•μž₯자 μ—†λŠ” κ°μ²΄μ—λŠ” μ§€μ›λ˜λŠ” 메타데이터가 μ €μž₯λ˜λ„λ‘ ν•©λ‹ˆλ‹€.

뢈투λͺ…ν•˜κ±°λ‚˜ κ³ μ •λœ R2 ν‚€ λ•Œλ¬Έμ— AI Search용 파일λͺ… 경둜λ₯Ό λ”°λ‘œ 관리해 μ™”λ‹€λ©΄ 이번 주에 μ μš©ν•  κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. κΈ°μ‘΄ 객체의 ν˜•μ‹ 정보λ₯Ό μ‹ λ’°ν•  수 μ—†λ‹€λ©΄ λ¨Όμ € λΆ„λ₯˜ κ³„νšμ„ μ„Έμ›Œμ•Ό ν•˜λ―€λ‘œ κΈ°λ‹€λ¦¬λŠ” 편이 λ‚«μŠ΅λ‹ˆλ‹€. 인식 κ°€λŠ₯ν•œ ν™•μž₯μžλ§ŒμœΌλ‘œλ„ μˆ˜μ§‘ κ²½λ‘œκ°€ λ¬Έμ œμ—†μ΄ μž‘λ™ν•œλ‹€λ©΄ 별도 μ‘°μΉ˜λŠ” ν•„μš” μ—†μŠ΅λ‹ˆλ‹€.

λ‹€μŒ ν”Œλž«νΌ 변화도 운영자의 μ˜μ‚¬κ²°μ • κ΄€μ μ—μ„œ 정리해 λ°›κ³  μ‹Άλ‹€λ©΄ λ‰΄μŠ€λ ˆν„°μ— κ°€μž…ν•˜μ„Έμš”.

κ²Œμ‹œμΌ
μΉ΄ν…Œκ³ λ¦¬
Explained
AI μ—μ΄μ „νŠΈ λΉ„μš©, ꡬ독뢀터 직접 κ°œλ°œκΉŒμ§€ μ›” μ˜ˆμ‚° 비ꡐ

AI μ—μ΄μ „νŠΈ λΉ„μš©, ꡬ독뢀터 직접 κ°œλ°œκΉŒμ§€ μ›” μ˜ˆμ‚° 비ꡐ

AI μ—μ΄μ „νŠΈ λΉ„μš©μ„ κ΅¬λ…ν˜• μ„œλΉ„μŠ€, λ…Έμ½”λ“œ λΉŒλ”, 직접 κ΅¬μΆ•ν•œ API둜 λ‚˜λˆ  λΉ„κ΅ν•©λ‹ˆλ‹€. μ›” 1,000건의 고객 지원 이메일을 κΈ°μ€€μœΌλ‘œ 각 λ°©μ‹μ˜ μ˜ˆμ‚°μ„ κ³„μ‚°ν•˜κ³ , 토큰과 툴 호좜, μ—°κ°„ 결제의 첫 청ꡬ앑, μ‚¬λžŒμ˜ κ²€ν†  μ‹œκ°„κΉŒμ§€ μ‹€μ œ μš΄μ˜μ— λ“œλŠ” λΉ„μš©μ„ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.2026λ…„ 10μ›” 7일Explained
Grok Voice Transcribe 2.0 μ „ν™˜: μŒμ„± ν…μŠ€νŠΈ λ³€ν™˜ λΉ„μš©κ³Ό κΈ°λ³Έ λͺ¨λΈ 점검법

Grok Voice Transcribe 2.0 μ „ν™˜: μŒμ„± ν…μŠ€νŠΈ λ³€ν™˜ λΉ„μš©κ³Ό κΈ°λ³Έ λͺ¨λΈ 점검법

Grok Voice Transcribe 2.0은 배치 μ‹œκ°„λ‹Ή $0.10, 슀트리밍 μ‹œκ°„λ‹Ή $0.20을 μœ μ§€ν•©λ‹ˆλ‹€. κΈ°λ³Έ λͺ¨λΈ 변경은 같은 API 호좜의 μŒμ„± ν…μŠ€νŠΈ λ³€ν™˜ 결과와 후속 업무λ₯Ό λ°”κΏ€ 수 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λΈ κ³ μ •κ³Ό μ‹€μ œ μ˜€λ””μ˜€ 검증 절차λ₯Ό μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.2026λ…„ 9μ›” 20일Explained
Cloudflare Browser Run μ‹€νŒ¨, HAR 파일둜 μž¬μ‹€ν–‰ 전에 μ§„λ‹¨ν•˜κΈ°

Cloudflare Browser Run μ‹€νŒ¨, HAR 파일둜 μž¬μ‹€ν–‰ 전에 μ§„λ‹¨ν•˜κΈ°

Cloudflare Browser Run의 μƒˆ Inspect νŒ¨λ„μ—μ„œ HAR 파일, μ½˜μ†” 둜그, λ„€νŠΈμ›Œν¬ μš”μ²­, μ΅œμ’… DOM을 확인해 μ‹€νŒ¨ 원인을 μ°ΎλŠ” 방법을 μ •λ¦¬ν•©λ‹ˆλ‹€. 기둝을 μ–Έμ œ μΌœμ•Ό ν•˜λŠ”μ§€, μž¬μ‹€ν–‰ 전에 무엇을 점검해야 ν•˜λŠ”μ§€, λΉ„μš©κ³Ό 기둝의 ν•œκ³„κΉŒμ§€ μ•Œμ•„λ΄…λ‹ˆλ‹€.2026λ…„ 9μ›” 19일Explained
v0μ—μ„œ 사내 λ””μžμΈ μ‹œμŠ€ν…œμ„ κ·ΈλŒ€λ‘œ μž¬μ‚¬μš©ν•˜λŠ” 법

v0μ—μ„œ 사내 λ””μžμΈ μ‹œμŠ€ν…œμ„ κ·ΈλŒ€λ‘œ μž¬μ‚¬μš©ν•˜λŠ” 법

λ””μžμΈ μ‹œμŠ€ν…œμ˜ λΉ„κ³΅κ°œ npm νŒ¨ν‚€μ§€λ₯Ό Vercel v0에 μ•ˆμ „ν•˜κ²Œ μ—°κ²°ν•˜λŠ” 방법을 μ •λ¦¬ν•©λ‹ˆλ‹€. NPM_TOKENκ³Ό NPM_RC의 차이, μ΅œμ†Œ κΆŒν•œ μ„€μ •, μš”κΈˆ, ν•œκ³„, ν”„λ‘œν† νƒ€μž…μ„ μ‹€μ œ μ €μž₯μ†Œλ‘œ λ„˜κΈΈ λ•Œ 확인할 ν•­λͺ©κΉŒμ§€ 싀무 κΈ°μ€€μœΌλ‘œ ν•¨κ»˜ μ‚΄νŽ΄λ΄…λ‹ˆλ‹€.2026λ…„ 9μ›” 19일Explained
Claude Code λΉ„μš©, μžλ™ λͺ¨λ“œ λΆ„λ₯˜κΈ° 과금이 μ‚¬λΌμ§€λŠ” 쑰건

Claude Code λΉ„μš©, μžλ™ λͺ¨λ“œ λΆ„λ₯˜κΈ° 과금이 μ‚¬λΌμ§€λŠ” 쑰건

Claude Code 2.1.278은 μ„œλ²„κ°€ μžλ™ λͺ¨λ“œ 검사λ₯Ό μ²˜λ¦¬ν•  λ•Œ 별도 λΆ„λ₯˜κΈ° μš”μ²­ λΉ„μš©μ„ μ—†μ•±λ‹ˆλ‹€. APIΒ·EnterpriseΒ·κ²Œμ΄νŠΈμ›¨μ΄ ν™˜κ²½μ—μ„œ /status둜 μ‹€μ œ 과금 경둜λ₯Ό ν™•μΈν•˜κ³ , λΉ„μš© 예츑 전에 점검해야 ν•  ν˜Έν™˜ 쑰건과 폴백 μ‹ ν˜Έλ₯Ό μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.2026λ…„ 9μ›” 19일Explained
Vercel 배포 ν•œ λ²ˆμ—λ§Œ Turboλ₯Ό μ μš©ν•˜λŠ” 방법과 λΉ„μš©

Vercel 배포 ν•œ λ²ˆμ—λ§Œ Turboλ₯Ό μ μš©ν•˜λŠ” 방법과 λΉ„μš©

Vercel λ°°ν¬λ§ˆλ‹€ ν”„λ‘œμ νŠΈμ˜ λΉŒλ“œ λ¨Έμ‹  섀정을 λ°”κΏ€ ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. Pro와 Enterpriseμ—μ„œ κΈ΄κΈ‰ν•œ 배포 ν•œ λ²ˆμ—λ§Œ Turboλ₯Ό μ μš©ν•˜λŠ” 3κ°€μ§€ 방법과 λΆ„λ‹Ή λΉ„μš©μ„ μ‚΄νŽ΄λ³΄κ³ , Basicκ³Ό 비ꡐ해 μ‹€μ œλ‘œ μ•„λ‚€ μ‹œκ°„κ³Ό μΆ”κ°€ λΉ„μš©μ„ κ²€μ¦ν•˜λŠ” μ ˆμ°¨κΉŒμ§€ μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.2026λ…„ 9μ›” 18일Explained
μ›Œλ“œ AI μ‹€μ „ κ°€μ΄λ“œ: ChatGPT둜 Word λ¬Έμ„œ μž‘μ„±λΆ€ν„° μˆ˜μ •κΉŒμ§€

μ›Œλ“œ AI μ‹€μ „ κ°€μ΄λ“œ: ChatGPT둜 Word λ¬Έμ„œ μž‘μ„±λΆ€ν„° μˆ˜μ •κΉŒμ§€

Word μ•ˆμ—μ„œ ChatGPT둜 μ΄ˆμ•ˆμ„ λ§Œλ“€κ³  μ—΄λ¦° λ¬Έμ„œλ₯Ό μš”μ•½Β·μˆ˜μ •ν•˜λŠ” 방법을 μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€. μ• λ“œμΈ μ„€μΉ˜ 쑰건, 곡유 μ‚¬μš©λŸ‰κ³Ό 토큰 μš”μœ¨, 데이터 경계, κ²€ν†  절차λ₯Ό ν™•μΈν•˜κ³  μ•± 사이 볡사·뢙여넣기λ₯Ό μ€„μ΄λŠ” μ›Œλ“œ AI 업무 흐름을 μ•ˆμ „ν•˜κ²Œ μ‹œμž‘ν•΄ λ³΄μ„Έμš”.2026λ…„ 9μ›” 18일Explained
AI μ—μ΄μ „νŠΈ 운영자λ₯Ό μœ„ν•œ Google Antigravity λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ κ°€μ΄λ“œ

AI μ—μ΄μ „νŠΈ 운영자λ₯Ό μœ„ν•œ Google Antigravity λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ κ°€μ΄λ“œ

Google Antigravity의 5μ›” μ—μ΄μ „νŠΈκ°€ 2026λ…„ 10μ›” 5일 μ’…λ£Œλ©λ‹ˆλ‹€. AI μ—μ΄μ „νŠΈ μž‘μ—…μ˜ 좜λ ₯ μ „μš©Β·λ‘œμ»¬ 툴 κ²½λ‘œλ³„ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ λ²”μœ„μ™€ μƒˆ 파일 툴 계약, μ•ˆμ „ν•œ μ–΄λŒ‘ν„° ν…ŒμŠ€νŠΈ, μ˜ˆμ•½ μž‘μ—… 점검 μˆœμ„œλ₯Ό 싀무 κΈ°μ€€μœΌλ‘œ ν•œλˆˆμ— μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.2026λ…„ 9μ›” 18일Explained
λ‰΄μŠ€λ ˆν„°

λ§€μ£Ό μΌμš”μΌ, ν•œ ν†΅μ˜ νŽΈμ§€.뜨거운 의견이 μ•„λ‹Œ, λŒμ•„κ°€λŠ” μ‹œμŠ€ν…œ.

μ£Όκ°„ λ°œν–‰. 슀팸 μ—†μŒ. μ–Έμ œλ“  ν•΄μ§€ κ°€λŠ₯ν•©λ‹ˆλ‹€.