ํ์ผ ์ ์ฅ์
๋ชจ๋ ์ฑ ๋ฐ์ดํฐ ๋ฐฑ์๋๋ ํ ์ด๋ธ๊ณผ ํจ๊ป ๋น๊ณต๊ฐ ๊ฐ์ฒด ์ ์ฅ์๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค. ๋ฐ์ดํฐ ๋ฐฑ์๋๊ฐ ์๊ณ์ด ํ์ ๋ด๋๋ค๋ฉด, ํ์ผ ์ ์ฅ์๋ ํ์ ๋ด์ ์ ์๋ ๋ชจ๋ ๊ฒ์ ๋ด์ต๋๋ค: ์นด๋ฉ๋ผ ํ๋ ์, PDF ๋ฆฌํฌํธ, ํ์จ์ด ๋ฐ์ด๋๋ฆฌ, ์ค๋์ค ํด๋ฆฝ, ๋ด๋ณด๋ด๊ธฐ.
์ด ๋์ ํจ๊ป ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ํ์ผ์ ์ ์ฅํ๋ฉด ๊ทธ ์ฆ์ ์๊ตฌ URL์ ๋๋ ค๋ฐ์ผ๋ฉฐ, ์๋๋ ํจํด์ ๊ทธ URL์ ๊ณง๋ฐ๋ก ํ ์ด๋ธ ์ปฌ๋ผ์ ๊ธฐ๋กํ๋ ๊ฒ์ ๋๋ค โ ๊ทธ๋ฌ๋ฉด ๋์๋ณด๋ ์์ ฏ์ด ์ถ๊ฐ ์์ ์์ด ์ด๋ฏธ์ง๋ฅผ ๋ ๋๋งํฉ๋๋ค:
Python
info = await ironflock.files.put("part-1.jpg", jpeg_bytes, content_type="image/jpeg")
await ironflock.publish_to_table("inspections", part_id="1", photo_url=info.url)์ ์ฒด ํด๋ผ์ด์ธํธ API โ ์ฝ๊ธฐ, ๋ชฉ๋ก ์กฐํ, ์ฌ์ฉ๋, ๊ณต์ ๋งํฌ, ๋์ฉ๋ ๊ฐ์ฒด, ์ค๋ฅ ์ฝ๋ โ ๋ SDK ์ฐธ์กฐ์ ๋ฌธ์ํ๋์ด ์์ต๋๋ค. ์ด ํ์ด์ง๋ ํ๋ซํผ ์ธก๋ฉด์ ๋ค๋ฃน๋๋ค: ์ ์ฅ์๊ฐ ์ด๋ป๊ฒ ์ ์ธ๋๊ณ , ๊ด๋ฆฌ๋๊ณ , ๊ณต์ ๋๊ณ , ์ด์๋๋์ง.
์๋ ๋ฐฉ์
- ์ ํ์ ์ผ๋ก
.ironflock/data-template.yml์files:์น์ ์ ์ ์ธํฉ๋๋ค. - ์ฌ์ฉ์๊ฐ ํ๋ก์ ํธ์ ์ฑ์ ์ค์นํ๋ฉด, IronFlock์ด ํ๋ก์ ํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ๋ก๋น์ ๋ํ๋ ๊ฒ๊ณผ ๋๊ฐ์ด ์ฑ์ ์ํ ๋น๊ณต๊ฐ ์ ์ฅ ์์ญ์ ํ๋ก๋น์ ๋ํฉ๋๋ค.
- ์ฃ์ง ์ฝ๋๋ SDK์
filesAPI๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ ์ฝ์ต๋๋ค. - ์ฑ์ ์ ๊ฑฐํ๋ฉด ์ ์ฅ์๊ฐ ์์ ํ ์ญ์ ๋ฉ๋๋ค: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง๊ฐ ์ญ์ ๋๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ ๊ฐ์ฒด์ ๋ชจ๋ ์๊ฒฉ ์ฆ๋ช ์ด ์ฌ๋ผ์ง๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ฅ์๋ ํ๋ก์ ํธ๋ณ์ ๋๋ค. ๊ฐ์ ์ฑ์ ๋ ํ๋ก์ ํธ์ ์ค์นํ๋ฉด ์์ ํ ๋ถ๋ฆฌ๋ ๋ ๊ฐ์ ์ ์ฅ ์์ญ์ด ์๊ธฐ๋ฉฐ, ์ฑ ๊ฐ๋ฐ์์ธ ์ฌ๋ฌ๋ถ์ ๋ ์ค ์ด๋ ๊ฒ์๋ ์ ๊ทผํ ์ ์์ต๋๋ค โ ๋ฐ์ดํฐ๋ ์ฑ์ ์คํํ๋ ์ฌ์ฉ์์ ๊ฒ์ ๋๋ค.
์ค์ ์ด ์ ํ ์์ด๋ ์ ํจํ ๊ตฌ์ฑ์
๋๋ค: files: ์น์
์ด ์๋ ์ฑ๋ default๋ผ๋ ์ด๋ฆ์ ๋ค์์คํ์ด์ค๋ฅผ ํ๋ ๊ฐ๊ฒ ๋๋ฏ๋ก, ๋ชจ๋ ์ฑ์์ files.put(...)์ด ๋ณ๋์ ์ค์ ์์ด ๋ฐ๋ก ์๋ํฉ๋๋ค.
๋ฐ์ดํฐ ํ ํ๋ฆฟ์์ ์ ์ฅ์ ์ ์ธ
files: ์น์
์ data-template.yml์์ data: ์์ ์์นํฉ๋๋ค:
files:
description: Camera frames and generated inspection reports.
# ์ฑ์ด ์ค์ค๋ก ์ ์ํ๋ ์ ์ฅ ์์ฐ, ๋ฐ์ดํธ ๋จ์ (์ฌ๊ธฐ์๋ 5 GiB).
# ํ๋ก์ ํธ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์ฌ์ ์ํ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์์ ์ค์ ์ด ๊ฐ์ ์ ์ฉ๋ฉ๋๋ค.
quotaBytes: 5368709120
namespaces:
- name: frames
description: Raw camera frames, one JPEG per inspected part.
contentTypes: ["image/jpeg"]
maxObjectBytes: 20971520
retention: { deleteAfter: 30 days }
- name: reports
description: Generated PDF inspection reports.
contentTypes: ["application/pdf"]
private: true๋ค์์คํ์ด์ค
๋ค์์คํ์ด์ค๋ ์ ์ฑ ์ ๋ด๊ณ ์๋ ํค ์ ๋์ฌ์ ๋๋ค. ๋ณ๋์ ์ ์ฅ ๋ฒํท์ด ์๋๋๋ค โ ์ฑ์ ๋ชจ๋ ๋ค์์คํ์ด์ค๋ ํด๋น ์ฑ์ ๋จ์ผ ์ ์ฅ ์์ญ ์์ ์กด์ฌํ๋ฉฐ, ๋ค์์คํ์ด์ค ์ด๋ฆ์ ๋จ์ํ ๊ฐ ๊ฐ์ฒด ์ ์ฅ ๊ฒฝ๋ก์ ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ๊ฐ ๋ฉ๋๋ค.
์ด ๊ตฌ๋ถ์ด ์ธ์ ๋ค์์คํ์ด์ค๋ฅผ ์ ์ธํด์ผ ํ๋์ง ์๋ ค์ค๋๋ค:
- ํ์ผ์ ์ ๋ฆฌํ๊ณ ์ถ๋์?
default๋ค์์คํ์ด์ค ์์์ ํค ๊ฒฝ๋ก โ2026/03/part-1.jpgโ ๋ฅผ ์ฌ์ฉํ์ญ์์ค. ํด๋ ์คํ์ผ ํค๊ฐ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ ๋๋ค. - ์ด๋ค ๊ฐ์ฒด ์งํฉ์ ๋ค๋ฅธ ๊ท์น์ด ํ์ํ๊ฐ์? ๋ค์์คํ์ด์ค๋ฅผ ์ ์ธํ์ญ์์ค. ๊ท์น์ด ๋ค์์คํ์ด์ค๊ฐ ์ถ๊ฐํ๋ ์ ์ผํ ๊ฒ์ ๋๋ค.
๋ค์์คํ์ด์ค๊ฐ ๋ด์ ์ ์๋ ๊ท์น:
| ํ๋ | ์๋ฏธ |
|---|---|
name | ์๋ฌธ์, ์ซ์, ํ์ดํ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ ๋ฌธ์๋ก ์์ํฉ๋๋ค. sys, system, ironflock, ironflock-*๋ ์์ฝ๋์ด ์์ต๋๋ค |
description | ์ฌ์ฉ์์๊ฒ ํ์๋๋ฉฐ AI ์์ด์ ํธ๊ฐ ์ฝ์ ์ ์์ต๋๋ค |
private | ๋ค์์คํ์ด์ค๋ฅผ ํฌ๋ก์ค ์ฑ ์ ๊ทผ์์ ์ ์ธํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ false(๊ณต์ ) โ ํ
์ด๋ธ๊ณผ ์์ ํ ๋์ผํฉ๋๋ค |
contentTypes | ํ์ฉ๋๋ MIME ์ ํ์ด๋ฉฐ, ๊ธ๋กญ์ ์ฌ์ฉํ ์ ์์ต๋๋ค(image/*). ๊ธฐ๋ณธ๊ฐ: ๋ชจ๋ |
maxObjectBytes | ๋จ์ผ ๊ฐ์ฒด์ ์ต๋ ํฌ๊ธฐ์ด๋ฉฐ, ์ต๋ 5 GiB๊น์ง ๊ฐ๋ฅํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ 100 MiB |
retention.deleteAfter | ์ด ๊ธฐ๊ฐ๋ณด๋ค ์ค๋๋ ๊ฐ์ฒด๋ ์๋์ผ๋ก ์ญ์ ๋ฉ๋๋ค(30 days, 2 weeks, 1 year, โฆ) |
์ ์ฅ ์์ฐ
quotaBytes๋ ๋ค์์คํ์ด์ค๋ณ์ด ์๋๋ผ ์ฑ ์ ์ฒด์ ๋ํด ํ ๋ฒ๋ง ์ ์ธ๋ฉ๋๋ค. ๋ค์์คํ์ด์ค๋ ํค ์ ๋์ฌ์ผ ๋ฟ์ด๋ฏ๋ก ์ ๋์ฌ๋ณ ์์ฐ์ ๊ฐ์ ํ ๋์ ์์ฒด๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค โ ํ ๋น๋์ ์ฑ์ ๋จ์ผ ์ ์ฅ ์์ญ์ ์ ์ฉ๋๋ฉฐ, ์ง์ ์
๋ก๋๋ฅผ ํฌํจํ ๋ชจ๋ ์ฐ๊ธฐ ๊ฒฝ๋ก์์ ๊ฐ์ฒด ์ ์ฅ์๊ฐ ์ง์ ์ด๋ฅผ ๊ฐ์ ํฉ๋๋ค.
๋ ๊ฐ์ ์ซ์๊ฐ ์กด์ฌํ๋ฉฐ, ๊ทธ ์ฐจ์ด๋ ์๋์ ์ ๋๋ค:
- ์ ์๋ ํ ๋น๋ โ ํ ํ๋ฆฟ์ด ์์ฒญํ๋ ๊ฐ์ ๋๋ค. ์ฑ์ด ์ฒ์ ์ค์น๋ ๋ ์ ์ฉ๋ฉ๋๋ค.
- ๊ฐ์ ๋๋ ํ ๋น๋ โ ํ๋ก์ ํธ ์ฌ์ฉ์๊ฐ ์ค์ ํ ๊ฐ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ฑ์ ์ ์ฅ์ ์ค์ ์์ ์์ฐ์ ๋ณ๊ฒฝํ๋ฉด ์ฌ์ฉ์์ ๊ฐ์ด ์ฐ์ ํ๋ฉฐ, ์ฑ์ ์ฌ๋ฐฐํฌํด๋ ์ด ๊ฐ์ ์ด๊ธฐํ๋์ง ์์ต๋๋ค.
ํ ํ๋ฆฟ์ ์๋ฌด๊ฒ๋ ๋ช ์ํ์ง ์์ผ๋ฉด ํ๋ซํผ ๊ธฐ๋ณธ๊ฐ์ด ์ ์ฉ๋ฉ๋๋ค(๊ฐ๋ฐ ๋ฐฑ์๋๋ 1 GiB, ํ๋ก๋์ ๋ฐฑ์๋๋ 10 GiB).
๋ณด์กด ๊ธฐ๊ฐ
๋ค์์คํ์ด์ค์ deleteAfter ๊ธฐ๊ฐ์ ๋๊ธด ๊ฐ์ฒด๋ ์๋์ผ๋ก ์ ๊ฑฐ๋ฉ๋๋ค โ ํ
์ด๋ธ์ dropAfter ์ ์ฑ
์ ํด๋นํ๋ ํ์ผ ์ธก ๋์๋ฌผ์
๋๋ค. ๋ณด์กด์ ๊ฐ์ฒด ์ ์ฅ์๊ฐ ์ด๋ฅผ ์ง์ํ๋ ๊ฒฝ์ฐ ์ ์ฅ์ ๋ด๋ถ์์ ์คํ๋๊ณ , ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ(์จํ๋ ๋ฏธ์ค ์ดํ๋ผ์ด์ธ์ค)์๋ ๋งค์ผ ์คํ๋๋ ํ๋ซํผ ์์
์ผ๋ก ์คํ๋๋ฏ๋ก, ์ ์ธ๋ ๋ณด์กด ๊ธฐ๊ฐ์ ์ด๋์๋ ๋์ผํ๊ฒ ๋์ํฉ๋๋ค.
์๊ตฌ URL๊ณผ ๋์๋ณด๋
์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ฒด๋ https://files.ironflock.com/f/<backend>/<namespace>/<key> ํ์์ ์์ ์ ์ธ URL์ ๊ฐ์ง๋๋ค. ์ธ ๊ฐ์ง ์์ฑ์ด ์ด๋ฅผ ํ
์ด๋ธ ์ปฌ๋ผ์ ๊ธฐ๋กํ๊ธฐ ์ ํฉํ ๊ฒ์ผ๋ก ๋ง๋ญ๋๋ค:
- ์ ๋ ๋ง๋ฃ๋์ง ์์ต๋๋ค. ์ด URL์ ์์ํ ์ฃผ์์ด๋ฉฐ, ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ ๋์ ๊ณ์ ์ ํจํฉ๋๋ค.
- ๊ณต๊ฐ ๋งํฌ๊ฐ ์๋๋๋ค. ๋ชจ๋ ์์ฒญ์ ์์ฒญ์๊ฐ ๋ก๊ทธ์ธ๋์ด ์๊ณ ์ด ๋ฐ์ดํฐ ๋ฐฑ์๋์ ๋ํ READ ์ ๊ทผ ๊ถํ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๋ ์ธ์ฆ ํ๋ก์๋ฅผ ๊ฑฐ์นฉ๋๋ค โ ๋งค ์์ฒญ๋ง๋ค ๋ค์ ํ์ธ๋ฉ๋๋ค. ์ฌ์ฉ์์ ์ ๊ทผ ๊ถํ์ ์ฒ ํํ๋ฉด ๊ทธ ์ฆ์ ๋ชจ๋ ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฅ๋ ฅ์ด ํจ๊ป ์ฒ ํ๋ฉ๋๋ค.
<img>์์ ๋ ๋๋ง๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ธ์ ์ฟ ํค๋ฅผ ์๋์ผ๋ก ์ ์กํ๋ฏ๋ก, ๋์๋ณด๋ ์์ ฏ์ JavaScript ์์ด๋<img src>,<video src>๋๋ ๋ค์ด๋ก๋ ๋งํฌ์ ์ด URL์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ์ธ๋ถ์ ๋๊ตฐ๊ฐ์๊ฒ ํ์ผ์ ๊ฑด๋ค์ฃผ๋ ค๋ฉด, SDK์ share_url์ด ๋์ ๋ง๋ฃ๋๋ ์์ง์ ๋งํฌ๋ฅผ ๋ฐ๊ธํฉ๋๋ค โ ์ด๋ ๊ฒ์ ์ธ์ ์ฌ์ฉํ ์ง๋ ๊ฐ์ฒด ๊ณต์ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
๋์ฉ๋ ํ์ผ
6 MiB๊น์ง์ ์ ์ก์ ๋ฉ์์ง ์์คํ ์ ํตํด ๋จ์ผ ํธ์ถ๋ก ์ด๋ํฉ๋๋ค. ๊ทธ๋ณด๋ค ํฐ ๊ฒ์ HTTPS๋ฅผ ํตํด ๋๋ฐ์ด์ค์ ๊ฐ์ฒด ์ ์ฅ์ ๊ฐ์ ์ง์ ์ ์ก๋ฉ๋๋ค โ SDK๊ฐ ์๋์ผ๋ก ์ ํํ๊ณ , ๋์คํฌ์์ ์คํธ๋ฆฌ๋ฐํ๋ฉฐ, ์ ๊ธฐ๊ฐ๋ฐ์ดํธ์ง๋ฆฌ ํ์ผ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ด๊ธธ ํ์๊ฐ ์ ํ ์์ต๋๋ค. ๋จ์ผ ์ ๋ก๋ ์ํ์ 5 GiB์ ๋๋ค.
์ง์ ๊ฒฝ๋ก์์๋ ๋๋ฐ์ด์ค๊ฐ ๋ฉ์์ง ๋ผ์ฐํฐ๋ฟ ์๋๋ผ ๊ฐ์ฒด ์ ์ฅ์ ํธ์คํธ(s3.ironflock.com)์๋ ๋๋ฌํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ณต์ฅ ํ๋ก์๊ฐ ๋ผ์ฐํฐ๋ง ํ์ฉํ๋ ๊ฒฝ์ฐ, ๋์ฉ๋ ์ ์ก์ ์ผ๋ฐ์ ์ธ ์ค๋ฅ๊ฐ ์๋๋ผ ๋ช
์์ ์ธ ์ฝ๋ PRESIGN_UNREACHABLE์ ํจ๊ป ์คํจํฉ๋๋ค โ ๊ทธ๋ฆฌ๊ณ ๋๋ฐ์ด์ค ์๊ณ๊ฐ 15๋ถ ๋๊ฒ ์ด๊ธ๋ ์์ผ๋ฉด CLOCK_SKEW์ ํจ๊ป ์คํจํ๋๋ฐ, ์ด๋ ์๊ฒฉ ์ฆ๋ช
์ด ์๋๋ผ NTP๋ฅผ ํ์ธํ๋ผ๋ ์ ํธ์
๋๋ค.
์ฑ ๊ฐ ํ์ผ ๊ณต์
ํฌ๋ก์ค ์ฑ ํ์ผ ์ ๊ทผ์ ํฌ๋ก์ค ์ฑ ํ
์ด๋ธ ์ ๊ทผ๊ณผ ๋์ผํ ๋์๋ฅผ ๋ฐ๋ฆ
๋๋ค. ์ค์์น๋ ํ๋์
๋๋ค: ํ๋ก์ ํธ ์ฌ์ฉ์๊ฐ ์ฑ B์ ์ฑ A์ ๋ฐ์ดํฐ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ฉด(์ฑ ์ค์ ์ data_access ๋์), ๊ทธ ๊ถํ ๋ถ์ฌ๋ A์ ํ
์ด๋ธ ๊ณผ A์ ๋น๊ณต๊ฐ๊ฐ ์๋ ํ์ผ ๋ค์์คํ์ด์ค๋ฅผ ๋ชจ๋ ํฌํจํฉ๋๋ค. ์ด๋ฅผ ์ฒ ํํ๋ฉด ๋ ๋ค ์ฒ ํ๋ฉ๋๋ค.
์ ๊ณต์๋ก์ ์ฑ์ด ์ ์ดํ๋ ๊ฒ์ ๋ค์์คํ์ด์ค๋ณ private ํ๋๊ทธ์
๋๋ค:
private: false(๊ธฐ๋ณธ๊ฐ) โ ๋ฐ์ดํฐ ์ ๊ทผ ๊ถํ์ ๊ฐ์ง ์ฑ์ด ์ด๋ฅผ ์ฝ์ ์ ์์ต๋๋ค(์ฐ๊ธฐ๋ ์ ๋ ๋ถ๊ฐ).private: trueโ ๊ถํ์ด ๋ถ์ฌ๋์ด ์์ด๋ ๋ค์์คํ์ด์ค๋ ๋ค๋ฅธ ์ฑ์ ์ ํ ๋ณด์ด์ง ์์ต๋๋ค.
์ด๋ ๋ค๋ฅธ ์ฑ์ ๋ฐ์ดํฐ ์ฌ์ฉ๊ณผ ์ ํํ ๋์ผํฉ๋๋ค: ๋ค์์คํ์ด์ค์ ํ
์ด๋ธ์ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ต๋๋ค. ํ๋ก์ ํธ ์ฌ์ฉ์์ ๊ถํ ๋ถ์ฌ ์์ด๋ ์๋ฌด๊ฒ๋ ๊ณต์ ๋์ง ์์ผ๋ฉฐ, private:๋ ์ด๋ฏธ ๋์๋ฅผ ๋ฐ์ ์ฝ๊ธฐ ์ฃผ์ฒด๊ฐ ๋ณด๋ ๋ฒ์๋ฅผ ์ขํ ๋ฟ ๋์ ์์ฒด๊ฐ ์๋๋๋ค.
์ฌ์ฉ์์ ๊ด์
ํ๋ก์ ํธ ์ฌ์ฉ์๋ ๋ ๊ณณ์์ ์ฑ์ ์ ์ฅ์๋ฅผ ํ์ธํ๊ณ ๊ด๋ฆฌํฉ๋๋ค:
- ๋ฐ์ดํฐ ๋ทฐ๋ ๋ชจ๋ ์ฑ์ ํ ์ด๋ธ ๋ฐ ๋ทฐ ์์ ํ์ผ ํญ๋ชฉ์ ํ์ํฉ๋๋ค โ ํฌ๊ธฐ, ์ ํ, ์์ ๋ ์ง์ ํจ๊ป ์ ์ฅ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๊ฒ์ ๊ฐ๋ฅํ ๋ชฉ๋ก์ผ๋ก ๋ณด์ฌ์ฃผ๋ฉฐ, ํ์ผ๋ณ ๋ค์ด๋ก๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฑ์ ์ ์ฅ์ ์ค์ ์ ์ฌ์ฉ๋(๋ฐ์ดํธ ๋ฐ ๊ฐ์ฒด ๊ฐ์), ์ฑ์ ์ ์ ์์ ํ์๋๋ ๊ฐ์ ๋๋ ์์ฐ, ์์ฐ์ ๋ณ๊ฒฝํ๋ ์ปจํธ๋กค, ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ํ์ผ ์ญ์ ์์ ์ ๋ณด์ฌ์ค๋๋ค โ ๋ชจ๋ ํ ์ด๋ธ์ ๋น์ฐ๋ ๊ฒ์ ํ์ผ ์ธก ์๋ฅ์ด์ ๋๋ค. ์ญ์ ๋ ์ฑ ์ด๋ฆ์ ์ ๋ ฅํ์ฌ ํ์ธํ๋ฉฐ ๋๋๋ฆด ์ ์์ต๋๋ค.
- AI ์ด์์คํดํธ๋ ์ฌ์ฉ์๋ฅผ ๋์ ํด ์ด ํ์ผ๋ค์ ๋์ด, ๊ฒ์, ์ฝ๊ธฐํ ์ ์์ต๋๋ค. ๋์ผํ
DATABACKEND/READ๊ถํ ๊ฒ์ฌ๊ฐ ์ ์ฉ๋๋ฏ๋ก ์ฌ์ฉ์๊ฐ ์ง์ ์ด ์ ์๋ ํ์ผ์ ์ ๋ ๋ํ๋์ง ์์ต๋๋ค. ํ์ผ ๋ด์ฉ์ด ์๋๋ผ ๊ฒฝ๋ก๋ฅผ ๊ฒ์ํ๋ฉฐ, ํ ์คํธ ํ์ผ๊ณผ ์ด๋ฏธ์ง, PDF๋ฅผ ์ฝ์ต๋๋ค. ์์ถ ํ์ผ ๋ฑ ๋ค๋ฅธ ๋ฐ์ด๋๋ฆฌ ํ์์ ์ฝ์ ์ ์์ต๋๋ค.
ํ ์ด๋ธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๊ฒ์ ์ฌ์ฉ์์ ๋ฐ์ดํฐ์ ๋๋ค: ์ฌ์ฉ์๋ ์ฌ๋ฌ๋ถ์ ๊ฑฐ์น์ง ์๊ณ ๋ ์ด๋ฅผ ์ ๊ฒํ๊ณ , ์ํ์ ๋๊ณ , ์ญ์ ํ ์ ์์ต๋๋ค.
์ง์ S3 ์ ๊ทผ
SDK๋ฅผ ๋ฒ์ด๋ ๋ชจ๋ ๊ฒฝ์ฐ โ DuckDB๋ฅผ ์ฐ๋ ๋ถ์๊ฐ, ์ผ๊ฐ rclone ๋ฐฑ์
, BI ํ์ดํ๋ผ์ธ โ ์ ๋ํด, ํ๋ก์ ํธ ์ฌ์ฉ์๋ ์ฑ์ ์ ์ฅ์ ์ค์ ์์ ์ฑ๋ณ ์ฝ๊ธฐ ์ ์ฉ S3 ์๊ฒฉ ์ฆ๋ช
์ ๋ฐ๊ธํ ์ ์์ต๋๋ค.
๊ฐ ์๊ฒฉ ์ฆ๋ช ์ ๊ทธ ํ๋์ ์ฑ ์ ์ฅ ์์ญ์ผ๋ก ๋ฒ์๊ฐ ์ ํ๋ฉ๋๋ค: ์ฑ A์ฉ์ผ๋ก ๋ฐ๊ธ๋ ์๊ฒฉ ์ฆ๋ช ์ ๊ตฌ์กฐ์ ์ผ๋ก ์ฑ B์ ํ์ผ์๋ ์๋ํ์ง ์์ต๋๋ค โ B์ ์ ์ฅ์ ์ ์ฑ ์ด ์ ์ด์ ์ด๋ฅผ ์ธ๊ธํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ๋ก์ ํธ๋ ์ฑ๋ณ๋ก ์ฌ๋ฌ ๊ฐ์ ์๊ฒฉ ์ฆ๋ช ์ ๋ณด์ ํ ์ ์์ผ๋ฉฐ(์๋น์๋น ํ๋์ฉ: CI ์์ , ๋ฐฑ์ ์คํฌ๋ฆฝํธ, ๋ ธํธ๋ถ), ํ๋๋ฅผ ์ฒ ํํด๋ ๋๋จธ์ง๋ ๊ณ์ ์๋ํฉ๋๋ค. ์ด๊ฒ์ด ๊ณง ํค ๊ต์ฒด ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค: ํค๊ฐ ์ ์ถ๋๋ฉด ๋ ๋ฒ์งธ ์๊ฒฉ ์ฆ๋ช ์ ๋ฐ๊ธํ๊ณ , ์๋น์๋ฅผ ๊ทธ์ชฝ์ผ๋ก ์ฎ๊ธด ๋ค์, ์ฒซ ๋ฒ์งธ๋ฅผ ์ฒ ํํ๋ฉด ๋ฉ๋๋ค โ ๋ค๋ฅธ ์ด๋ค ์๋น์๋ ๋ฐฉํด๋ฐ์ง ์์ต๋๋ค.
์ํฌ๋ฆฟ์ ์์ฑ ์์ ์ ํ ๋ฒ๋ง ํ์๋ฉ๋๋ค. ๋ฐ๊ธํ๋ ค๋ฉด ํด๋น ์ฑ ๋ฐ์ดํฐ ๋ฐฑ์๋์ ๋ํ ์ฝ๊ธฐ ๊ถํ์ด ํ์ํฉ๋๋ค โ ์ ์ด์ ํ์ผ์ ์ฝ์ ์ ์๊ฒ ํด ์ฃผ๋ ๊ฒ๊ณผ ๋์ผํ ๊ถํ์ด๋ฏ๋ก, ์๊ฒฉ ์ฆ๋ช ์ด ๋๊ตฐ๊ฐ์ ์ ๊ทผ ๋ฒ์๋ฅผ ๋ํ๋ ์ผ์ ๊ฒฐ์ฝ ์์ต๋๋ค.
# rclone
rclone config create myapp s3 provider=Other \
endpoint=https://s3.ironflock.com \
access_key_id=ifs-key-3317-x7k2m secret_access_key=<shown once>
rclone ls myapp:if-1042-3317# DuckDB
CREATE SECRET (TYPE S3, KEY_ID 'ifs-key-3317-x7k2m', SECRET '<shown once>',
ENDPOINT 's3.ironflock.com');
SELECT * FROM read_parquet('s3://if-1042-3317/exports/*.parquet');์ ์ฅ์ ์ค์ ์ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ๋ฆฌํฌ ์๋ํฌ์ธํธ์ ์ ํํ ๋ฒํท ์ด๋ฆ์ ๋ณด์ฌ์ค๋๋ค. ์ต์์ ๋ฒํท ๋ชฉ๋ก ์กฐํ(์ธ์ ์๋ aws s3 ls)๋ ์ค๊ณ์ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์๋๋ค๋ ์ ์ ์ ์ํ์ญ์์ค โ ์๊ฒฉ ์ฆ๋ช
์ ์ด๋ค ๋ฒํท๋ ์์ ํ์ง ์์ผ๋ฉฐ, ํ๋์ ๋ํ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌ๋ฐ์ ๋ฟ์
๋๋ค. ์์ ๊ฐ์ด ๋ฒํท์ ์ง์ ์ง์ ํ์ญ์์ค.
์จํ๋ ๋ฏธ์ค ์ดํ๋ผ์ด์ธ์ค
ํ์ผ ์ ์ฅ์๋ ์จํ๋ ๋ฏธ์ค ์ดํ๋ผ์ด์ธ์ค์์๋ ๋์ผํ๊ฒ ์๋ํ๋ฉฐ, ์ดํ๋ผ์ด์ธ์ค์ ์ค๊ณ์์ ๋น๋กฏ๋๋ ์ธ ๊ฐ์ง ์ฐจ์ด๊ฐ ์์ต๋๋ค:
- ํ์ผ์ ์ดํ๋ผ์ด์ธ์ค ์์ฒด ์ฃผ์(
/files/...) ์๋์์ **๋์ผ ์ถ์ฒ(same-origin)**๋ก ์ ๊ณต๋ฉ๋๋ค โ ์ถ๊ฐ DNS ์ด๋ฆ๋, ์ถ๊ฐ ์ธ์ฆ์๋ ํ์ ์์ผ๋ฉฐ, ์์ HTTP ์ค์น์์๋ ์๋ํฉ๋๋ค. ์๊ตฌ URL๊ณผ<img src>๋ ํด๋ผ์ฐ๋์์์ ๋๊ฐ์ด ๋์ํฉ๋๋ค. - ์ดํ๋ผ์ด์ธ์ค์ ์ ์ฅ์ ๋ฐฑ์๋๋ ๋ณ๋์ ์ ์ฅ์ ํธ์คํธ๋ก ๋ฆฌ๋๋ ์ ํ๋ ๋์ ํ๋ซํผ์ ํตํด ํ์ผ ๋ค์ด๋ก๋๋ฅผ ์คํธ๋ฆฌ๋ฐํ๋ฏ๋ก, ์ ์ฅ์ ์๋น์ค๊ฐ ๋ ๋ฒ์งธ ์ถ์ฒ๋ก ๋ ธ์ถ๋๋ ์ผ์ด ์์ต๋๋ค.
- ์ดํ๋ผ์ด์ธ์ค์์๋ ์ง์ S3 ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ ์ ์์ต๋๋ค โ ๋ด์ฅ๋ ๊ฐ์ฒด ์ ์ฅ์๊ฐ ์๊ฒฉ ์ฆ๋ช ๋ณ ์ ๊ทผ ๊ถํ ๋ถ์ฌ๋ฅผ ํํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํด๋น ์น์ ์ ๊ทธ๊ณณ์ ์ ์ฅ์ ์ค์ ์ ์์ ๋ํ๋์ง ์์ต๋๋ค. SDK๋ฅผ ํตํ ๋์ฉ๋ ํ์ผ ๋์๊ณผ ์ ์ธ๋ ๋ณด์กด ๊ธฐ๊ฐ์ ํฌํจํ ๊ทธ ๋ฐ์ ๋ชจ๋ ๊ฒ์ ๋์ผํ๊ฒ ์๋ํฉ๋๋ค.
๋ง ๋ถ๋ฆฌ๋ ์ดํ๋ผ์ด์ธ์ค๋ ๋ชจ๋ ํ์ผ ํธ๋ํฝ์ ๋ก์ปฌ์์ ์ ๊ณตํฉ๋๋ค: ์ฑ ๋ก๊ณ , ๋์๋ณด๋ ์ด๋ฏธ์ง, ํ์ผ ๋ค์ด๋ก๋์ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ํ์ํ์ง ์์ต๋๋ค.
ํ๋์ ๋ณด๋ ์ ํ
| ์ ํ | ๊ฐ | ์ถ์ฒ |
|---|---|---|
| ์ธ๋ผ์ธ ์ ์ก(๋จ์ผ ํธ์ถ) | 6 MiB | ๋ฐํ์์ ๋ณด๊ณ ๋๋ฉฐ, ์๋ฒ ์ธก์์ ์ํฅ๋ ์ ์์ต๋๋ค |
| ๋จ์ผ ๊ฐ์ฒด | ๊ธฐ๋ณธ 100 MiB, ์ต๋ 5 GiB | ๋ค์์คํ์ด์ค๋ณ maxObjectBytes |
| ๋จ์ผ ์ ๋ก๋ | 5 GiB | ๊ฐ์ฒด ์ ์ฅ์์ ๋จ์ผ PUT ์ํ์ด๋ฉฐ, ๋ฉํฐํํธ๋ ์์ง ์ ๊ณต๋์ง ์์ต๋๋ค |
| ์ ์ฅ ์์ฐ | ๊ธฐ๋ณธ๊ฐ ๊ฐ๋ฐ 1 GiB / ํ๋ก๋์ 10 GiB | ํ ํ๋ฆฟ์ด ์ ์ํ๊ณ , ์ฌ์ฉ์๊ฐ ๊ฒฐ์ ํฉ๋๋ค |
| ํค ๊ธธ์ด ๋ฐ ๋ฌธ์ | UTF-8, /๋ก ๊ตฌ๋ถ๋ ๊ฒฝ๋ก | ../, ์ ์ด ๋ฌธ์, ์์ฝ๋ ์ ๋์ฌ๋ ๊ฑฐ๋ถ๋ฉ๋๋ค |