Atlas Data API [์ฌ์ฉ ์ค๋จ๋จ]
์ด ํ์ด์ง์ ๋ด์ฉ
๋ฐ์ดํฐ API๋ ํ์ค HTTPS ์์ฒญ์ ์ฌ์ฉํ์ฌ Atlas์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ก ์์ ํ๊ฒ ์์ ํ ์ ์๊ฒ ํด ์ฃผ๋ ๊ด๋ฆฌํ ์๋น์ค์ ๋๋ค. ๋ฐ์ดํฐ API๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค. ๋์ ์ด API๋ ์์ ๊ด๋ฆฌํ ๋ฏธ๋ค์จ์ด ์๋น์ค๋ก์ ํด๋ฌ์คํฐ์ ์์ฒญ์ ์ ์กํ ํด๋ผ์ด์ธํธ ์ฌ์ด์ ์ ์ฉ๋ฉ๋๋ค.
๋ค์์ ํฌํจํ์ฌ HTTPS๋ฅผ ์ง์ํ๋ ๋ชจ๋ ํ๋ซํผ์์ ๋ฐ์ดํฐ API๋ฅผ ์ฌ์ฉํ์ฌ MongoDB Atlas์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์น ๋ธ๋ผ์ฐ์
์น ์๋ฒ
CI/CD ํ์ดํ๋ผ์ธ
๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์
IoT ์ฅ์น
๋ฐ์ดํฐ API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ๋ ์ ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ํ์๊ฐ ์์ต๋๋ค. ๋์ ๋ค์๊ณผ ๊ฐ์ HTTPS requests๋ฅผ ์ ์กํฉ๋๋ค.
curl -s "https://data.mongodb-api.com/app/myapp-abcde/endpoint/data/v1/action/insertOne" \ -X POST \ -H "Content-Type: application/ejson" \ -H "Accept: application/json" \ -H "apiKey: TpqAKQgvhZE4r6AOzpVydJ9a3tB1BLMrgDzLlBLbihKNDzSJWTAHMVbsMoIOpnM6" \ -d '{ "dataSource": "mongodb-atlas", "database": "learn-data-api", "collection": "hello", "document": { "text": "Hello, world!" } }'
{ "insertedId": "63dc56ac74ddb86ed3eb8474" }
์๋ํฌ์ธํธ
Data API๋ 2๊ฐ์ง ์ ํ์ ์๋ํฌ์ธํธ๋ฅผ ์ง์ํฉ๋๋ค.
๋ฐ์ดํฐ API ์๋ํฌ์ธํธ๋ ๊ฐ๊ฐ MongoDB ์์ ์ ๋ํ๋ด๋ ์๋์ผ๋ก ์์ฑ๋ ์๋ํฌ์ธํธ์ ๋๋ค. ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ MongoDB ๋ฐ์ดํฐ ์์ค์์ ๋ฌธ์๋ฅผ ์์ฑ, ์ฝ๊ธฐ, ์ ๋ฐ์ดํธ, ์ญ์ ๋ฐ ์ง๊ณํ ์ ์์ต๋๋ค.
์๋ํฌ์ธํธ๋ฅผ ์ค์ ํ๊ณ ํธ์ถํ๋ ๋ฐฉ๋ฒ ๋ฑ ์์ธํ ์ ๋ณด๋ ๋ฐ์ดํฐ API ์๋ํฌ์ธํธ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์ ์ง์ ์๋ํฌ์ธํธ๋ ์ฌ์ฉ์๊ฐ ์์ฑํ๋ Atlas Function์์ ์ฒ๋ฆฌํ๋ ์ฑ๋ณ API ๊ฒฝ๋ก๋ฅผ ๋งํฉ๋๋ค. ์ฌ์ฉ์ ์ง์ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํด ์ฌ์ฉ ์ฌ๋ก์ ๋ง๋ ์์ ์ ์ ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ ์ ์๋ ์ง๊ณ๋ฅผ ์คํํ๊ฑฐ๋, ์ธ๋ถ ์นํ ์๋น์ค์ ํตํฉ๋๋ ์๋ํฌ์ธํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์๋ํฌ์ธํธ ์์ฑ ๋ฐ ํธ์ถ ๋ฐฉ๋ฒ ๋ฑ ์์ธํ ๋ด์ฉ์ Custom HTTPS Endpoints(์ฌ์ฉ์ ์ง์ HTTPS ์๋ํฌ์ธํธ)๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ API ์๋ ๋ฐฉ์
Data API ์์ฒญ์ find
๋๋ insertOne
๊ณผ ๊ฐ์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
๊ณผ ์ ์ฌํ ์ ์์ง๋ง, Data API๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ฐ๊ฒฐ๋์ง ์์ต๋๋ค. ๋์ Data API๋ ์ถ๊ฐ ์ธ์ฆ, ๊ถํ ๋ถ์ฌ, ์ ํ์ฑ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํด ์ฌ์ฉ์๊ฐ ํ์ฉํ๋ ๋ฐฉ์์ผ๋ก๋ง ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ฑฐ๋ ์์ ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ํตํด ์น ์ฑ๊ณผ ๊ฐ์ด ์ ์ฌ์ ์ผ๋ก ์ทจ์ฝํ ํด๋ผ์ด์ธํธ์์ Atlas์ ๋ฐ์ดํฐ์ ์์ ํ๊ฒ ์ก์ธ์คํ ์ ์์ต๋๋ค.
๋ค์ด์ค๋ ๊ฐ๊ฐ์ ์์ฒญ์ ๋ํด Data API๋ ๋ค์์ ์ํํฉ๋๋ค.
ํธ์ถ ์ฌ์ฉ์๋ฅผ ์ธ์ฆํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ก์ธ์ค ํ ํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ฑฐ๋, ํค๋ ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธํ๊ฑฐ๋, ๊ตฌ์ฑ์ ๋ฐ๋ผ ํน์ ๋ฐํ์ ์ฌ์ฉ์๋ฅผ ์ง์ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
์์ฒญ์ ์น์ธํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ์ฉ์๊ฐ ์ฌ๋ฐ๋ฅธ ํ์์ ์์ฒญ์ ๋ณด๋๊ณ ์๋ํฌ์ธํธ ๊ถํ ๋ถ์ฌ ์ฒด๊ณ์ ๋ฐ๋ผ ์์ฒญ๋ ์์ ์ ์ํํ ์ ์๋ ๊ถํ์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์์ฒญ๋ ์์ ์ ์คํํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์ฑ๋ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ Atlas์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๋ ์์ , ํน์ ์ฌ์ฉ์๊ฐ ์์ฑํ ์ฌ์ฉ์ ์ง์ ํจ์๋ฅผ ํธ์ถํ๋ ์์ ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
Atlas์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๋ ์์ฒญ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ API๋ ์ฑ์ ์ ์๋ ์ก์ธ์ค ์ ์ด ๊ท์น๊ณผ ๋ฌธ์ ์คํค๋ง๋ ์ํํฉ๋๋ค. ์ฆ, ์ฌ์ฉ์๋ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๊ฐ ํ์ฉ๋ ๋ฐ์ดํฐ์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค. ์์ฒญ์ ์๋ชป๋ ์ฐ๊ธฐ ์์ ์ด ํฌํจ๋์ด ์์ผ๋ฉด ์์ฒญ์ด ์คํจํฉ๋๋ค.
ํธ์ถ์์๊ฒ HTTPS ์๋ต์ ๋ฐํํฉ๋๋ค. ์๋ต์๋ ์์ฑ๋ ์๋ํฌ์ธํธ ์์ ์ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์ ์ง์ ์๋ํฌ์ธํธ์์ ๋ฐํํ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ฉ๋๋ค. ์์ฒญ์์ JSON ๋๋ EJSON ํ์์ผ๋ก ์๋ต์ ๋ฐ๋๋ก ์ ํํ ์ ์์ต๋๋ค.
Data API๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ
์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ , ํนํ ๋ถํ๊ฐ ๋ง๊ณ ์ง์ฐ ์๊ฐ ์ ๋ฏผ๊ฐํ ์ฌ์ฉ ์ฌ๋ก์ ๊ฒฝ์ฐ, MongoDB ์ด์ ์ ๋ฅผ ์ฌ์ฉํ์ฌ Atlas ์ ์ง์ ์ฐ๊ฒฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ฐ์ดํฐ API ์๋ํฌ์ธํธ๋ฅผ ํตํด ํธ์ถ๋๋ ์์ ์ ์ด์ ์ ๋ฅผ ํตํด ํธ์ถ๋๋ ํด๋น MongoDB ์์ ๋ณด๋ค ์๋ฃํ๋ ๋ฐ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ๋ํ ๋๋ผ์ด๋ฒ๋ ์์ ์คํ ๋ฐฉ๋ฒ์ ๋ํ ๋ ๋ง์ ์ ์ฐ์ฑ๊ณผ ์ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํ์ต ๋ด์ฉ์ MongoDB ๋๋ผ์ด๋ฒ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ API๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ๋ขฐํ ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ์์ MongoDB ์์ ์ ์คํํ๋ ค๊ณ ํฉ๋๋ค.
์๋ฒ ์ธก ํ๊ฒฝ์์ MongoDB ๋๋ผ์ด๋ฒ๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฑฐ๋ ๊ด๋ฆฌํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ. ์๋ฅผ ๋ค์ด, ์ผ๋ถ ์ฃ์ง ์ปดํจํ ํ๊ฒฝ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ๋ ์ฐ๊ฒฐ ํ๋ง์ ์ง์ํ์ง ์์ต๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๊ณ ์ถ๊ณ ํด๋ผ์ด์ธํธ ์ฌ์ด๋์์ ๋จผ์ ์์ ํ ํ ๋์ค์ API ๊ณ์ธต์ ๋ง๋ค๊ณ ๋ค๋ฌ์ ์ ์๋ ์ ์ฐํ ์๋ฃจ์ ์ ์ํ ๊ฒฝ์ฐ.
Atlas ๋ฐ์ดํฐ ์ก์ธ์ค๋ฅผ ์ฐํฉ API ๊ฒ์ดํธ์จ์ด์ ํตํฉํ๋ ค๊ณ ํฉ๋๋ค.
ํ์ฌ Atlas Device SDK์์ ์ง์ํ์ง ์๋ ํ๊ฒฝ์์ App Services์ ์ฐ๊ฒฐํ๊ณ ์ถ์ผ๋ฉฐ ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ํ๋กํ ์ฝ์ ํตํด ์ฐ๊ฒฐํ๊ณ ์ถ์ง ์์ ๊ฒฝ์ฐ.
์ ์ฝ ์กฐ๊ฑด
๋ฐ์ดํฐ API ์์ฒญ ๋ฐ ์๋ต์๋ ๋ค์๊ณผ ๊ฐ์ ์ ์ฝ ์กฐ๊ฑด์ด ์ ์ฉ๋ฉ๋๋ค.
๋ฐํ์ 300์ด ํ์ ์์ฒญ ํ์์์์ด ๋ฐ์ํฉ๋๋ค.
๋ฐ์ดํฐ API ์๋ต ํ์ด๋ก๋์ ํฌ๊ธฐ๋ 350MB๋ก ์ ํ๋ฉ๋๋ค.