์ฑ์์ ์์ํด ์๋ฒ๋ฆฌ์ค๋ก… ๋์ ์ฒซ ํด๋ผ์ฐ๋ ์ด์ ์ด์ผ๊ธฐ
ํด์ฌ ํ ์ฝ ํ ๋ฌ ๋ฐ ์ ๋ ๊ฐ์ธ ์ฑ ๊ฐ๋ฐ์ ์งํํ์๋ค.
Android ๊ธฐ๋ฐ์ ์ค๋ ๊ฐ๋ฐ ๊ฒฝ๋ ฅ์ ๋ฐํ์ผ๋ก YouTube Data API๋ฅผ ํ์ฉํด, ๋ด๊ฐ ๋ณด๊ณ ์ถ์ ์์์ ํํฐ๋งํด์ฃผ๋ ์ฑ์ ๋ง๋ค์ด๋ณธ ๊ฒ์ด์๋ค.
์ด๊ธฐ์ Firebase Storage์ JSON ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ ๋ก๋ํ๋ ๊ตฌ์กฐ๋ก ๊ตฌํํ๋๋ฐ, ์ฐฝ์ ๊ด๋ จ ๊ต์ก์ ๋ค์ผ๋ฉด์ ์์ฐ์ค๋ฝ๊ฒ ๋ฐฑ์๋๊น์ง ์ง์ ๊ตฌํํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์์๋ค.
๊ทธ๋ ๊ฒ ํด์ ๋์จ ๊ฒฐ๊ณผ๊ฐ FastAPI ๊ธฐ๋ฐ ์๋ฒ๋ฅผ AWS์ ๋ฐฐํฌํ๊ณ , ์ผ์ ์ฃผ๊ธฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์์งํด Firebase์ ์๋ ์ ๋ก๋ํ๋ ์ง๊ธ์ ๊ตฌ์กฐ์ธ ๊ฒ์ด๋ค.
์ ์ฒ์์ ์ฑ์์ ์ง์ Firebase ์ ๋ก๋๋ฅผ ํ์๋
์ฒ์์๋ ์๋ฒ ๊ฐ๋ฐ ๊ฒฝํ์ด ๊ฑฐ์ ์์๊ธฐ ๋๋ฌธ์, ์ฑ์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ JSON ํ์ผ๋ก ๋ง๋ค์ด Firebase Storage์ ์ ๋ก๋ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ์๋ค.
์ด ๋ฐฉ์์ ๋จ์ํ๊ณ , ๋น์์ ๋ชฉํ์๋ ๋ถํฉํ๋ค. ์ฑ์ ๋น ๋ฅด๊ฒ ๋ฐ์นญํ๊ณ ์ถ์๊ณ , ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์ ์ง์คํ๋ฉด์ ๊ธฐ๋ฅ์ ๊ฒ์ฆํด๋ณด์๋ ์๋๊ฐ ๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
-
YouTube Data API๋ก ์ธ๊ธฐ ์์, ์ถ์ฒ ์์ ๋ฑ์ ์์ฒญํด ๋ฐ์ดํฐ ์์ง
-
์ฑ ๋ด์์ JSON ํ์ผ์ ์์ฑํ ํ ๋ก์ปฌ์ ์ ์ฅ
-
Firebase Storage์ ์ง์ ์ ๋ก๋
-
์ฑ์์๋ ํด๋น JSON์ ์ฝ์ด ๋ฆฌ์คํธ ํํ๋ก ์ฌ์ฉ์์๊ฒ ํ์
์ด ๊ณผ์ ์ ๋งค์ผ ์์์ ์ผ๋ก ์คํํ์๊ณ , ๋์ค์๋ Android WorkManager๋ก ์๋ํํ ๊น ๊ณ ๋ฏผ๋ ํ์ง๋ง, ๊ฒฐ๊ตญ์๋ ์ฑ์์ ์๋ฒ ์ญํ ๊น์ง ํ๋ ๋ฐฉ์์ด ์ฐ์ต๊ฒ ๋๊ปด์ ธ ๊ทธ๋ง๋๊ฒ ๋์๋ ๊ฒ์ด๋ค.
ํ์ด์ฌ๊ณผ FastAPI๋ก ๋ฐฑ์๋ ์ ํ์ ๊ฒฐ์ฌํ ๊ณ๊ธฐ
์ฐฝ์ ๊ต์ก์ ๋ค์ผ๋ฉด์ ChatGPT๋ฅผ ์์ฃผ ํ์ฉํ๊ฒ ๋์๊ณ , ์์ฑํ AI์ ํ๋ฆ ์์์ ์์ฐ์ค๋ฝ๊ฒ ํ์ด์ฌ์ ๋ํ ๊ด์ฌ์ด ๋์ด์๋ฌ์๋ค.
์์ ์ N์ฌ์์ ์ผ๊ตด ์ธ์ ํ๋ก์ ํธ๋ฅผ ํ ๋ ํ์ด์ฌ์ ์ฌ์ฉํ๋ ๊ฒฝํ์ด ์์๊ธฐ์, ์ต์ํ์ง ์์๋ ๋ฏ์ค์ง ์์๊ณ , ์ด๋ฒ ๊ธฐํ์ ๋ค์ ํ์ด์ฌ์ผ๋ก ์๋ฒ๋ฅผ ๊ตฌ์ฑํด๋ณด๊ธฐ๋ก ๋ง์๋จน๊ฒ ๋์๋ ๊ฒ์ด๋ค.
AWS ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋ ์๋ํ ํ๋ก์ธ์ค
์ง๊ธ์ ๋ฐฑ์๋ ํ๋ก์ธ์ค๋ FastAPI์ AWS ์๋น์ค๋ฅผ ๊ฒฐํฉํ์ฌ ๊ตฌ์ฑํ ๊ตฌ์กฐ์ด๋ค. ์ ์ฒด์ ์ธ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. FastAPI ์๋ฒ ๊ตฌ์ถ
-
YouTube Data API๋ก๋ถํฐ ๋น๋๊ธฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ง
-
์ธ๊ธฐ ์์, ์๋ํฐ ํฝ, ๋ญํน ์์ ๋ฑ์ ๋จ๊ณ๋ณ ํจ์๋ก ๋ถ๋ฆฌ
-
Pydantic์ ํ์ฉํด JSON ๊ตฌ์กฐ๋ฅผ ์ ํํํจ
2. StreamingResponse๋ก ์งํ ์ํฉ ํ์ธ
๊ฐ ๋จ๊ณ์ ๋ฐ์ดํฐ๋ฅผ StreamingResponse๋ก ํ์ธํ๋ฉด์ ์ ์ฅํ๋๋ก ๊ตฌ์ฑํ์๋ค.
๋จ๊ณ๋ณ๋ก ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ณ ์๋์ง ์ฝ๊ฒ ํ์ ํ ์ ์๋๋ก ์ค๊ณํ ๊ฒ์ด๋ค.
3. AWS Lambda๋ฅผ ํตํ ์๋ ์คํ
-
FastAPI ์ฝ๋๋ฅผ ZIP์ผ๋ก ํจํค์งํ์ฌ AWS Lambda์ ์ ๋ก๋
-
Lambda ํ์์์์ ๊ธฐ๋ณธ 3์ด์์ ์ต๋์น์ธ 15๋ถ์ผ๋ก ๋๋ ค์ผ ์์ ์ ์ผ๋ก ์คํ๋๋ ๊ฒ์ ํ์ธํ์๋ค
-
์ผ์ ์๊ฐ๋ง๋ค Lambda๊ฐ ์คํ๋๋๋ก EventBridge๋ก Cron ๋ฑ๋ก์ ํด๋์๋ค
4. ์๋ฌ ๋์: CloudWatch + SNS
Lambda ์คํ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด CloudWatch์์ ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ,
SNS๋ฅผ ํตํด ์ด๋ฉ์ผ๋ก ์๋ฆผ์ ๋ณด๋ด๋๋ก ๊ตฌ์ฑํ์๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๋น ๋ฅด๊ฒ ๋์ํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
5. Firebase Storage์ ์ต์ข ์ ๋ก๋
๋ง์ง๋ง ๋จ๊ณ์์๋ ๊ตญ๊ฐ๋ณ(locale, countryCode) ๋ฐ์ดํฐ๋ฅผ ๋๋ ์ JSON ํ์ผ์ ๋ง๋ค๊ณ , Firebase Storage์ ์ ๋ก๋ํ๋๋ก ๊ตฌ์ฑํด๋์๋ค.
YouTube API ํธ์ถ ์ ํ ๋๋ฌธ์ ํ๋ฃจ ํ ๋ฒ๋ง ์คํ
YouTube Data API๋ ํ๋ฃจ 10,000ํฌ์ธํธ๊น์ง๋ง ์ฟผ๋ฆฌ ์์ฒญ์ด ๊ฐ๋ฅํ๋ค.
ํนํ ๊ฒ์ ์ฟผ๋ฆฌ๋ 1ํ๋น 500ํฌ์ธํธ๋ฅผ ์๋ชจํ๋ฏ๋ก ๋งค์ฐ ์ ํ์ ์ผ ์๋ฐ์ ์๋ค.
๊ทธ๋์ ๋ฐ์ดํฐ๋ ๊ฐ๋ฅํ ์กฐํฉ์ ์ค์ด๊ณ , ๋งค์ผ ํ ๋ฒ๋ง ์คํ๋๋๋ก EventBridge์ Cron์ ์ค์ ํด๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก 1๋ ๋ฌด๋ฃ๊ฐ ํฅ ํ์ ๋น์ฉ์ ์ง๋ถ ํด์ผ๊ฒ ์ง๋ง..
๋ง๋ฌด๋ฆฌ: ์ฒ์ ํด๋ณด๋ ๋ฐฑ์๋, ์์ธ๋ก ํ ๋งํ๋ค
์ฒ์์๋ ๋ชจ๋ ๊ฑธ ์ฑ์์ ์ฒ๋ฆฌํ๋ ค ํ๊ณ , ์๋ฒ ๊ฐ๋ฐ์ ๋์ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค๊ณ ์๊ฐํ์๋ค.
ํ์ง๋ง FastAPI์ AWS, ๊ทธ๋ฆฌ๊ณ ChatGPT์ ๋์์ ๋ฐ์ผ๋ฉฐ ๊ตฌ์กฐ๋ฅผ ํ๋ํ๋ ๋ฐ๊พธ์ด๋ณด๋ ์์ธ๋ก ํ ๋งํ๋ค๋ ์๊ฐ์ด ๋ค์์๋ค.
์ง๊ธ ์ด ๊ตฌ์กฐ๋ ์ด๋๊น์ง๋ 1์ธ ๊ฐ๋ฐ์ ์ ์ฅ์์ ์ถฉ๋ถํ ๋ง์กฑํ ์ ์๋ ์์ค์ด๊ณ ,
์์ผ๋ก ์ฌ์ฉ์๊ฐ ๋ง์์ง๋ค๋ฉด ๋ค๋ฅธ ๊ตฌ์กฐ๋ก์ ํ์ฅ๋ ๊ณ ๋ คํด์ผ ํ๊ฒ ์ง๋ง, ์ง๊ธ์ ์ด๋ ๊ฒ ๊ตฌ์ฑํ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ ์๋ฏธ ์์๋ ๊ฒ์ด๋ค.
๋๊ธ ์ฐ๊ธฐ