๋ฎค์ง์ปฌ ์ ๋ณด, ํ์ฌ ์งํ์ค์ธ ๋ฎค์ง์ปฌ, ๋ฐฐ์ฐ๊ฐ ์ฐธ์ฌํ ๋ฎค์ง์ปฌ๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ณ
์ปค๋ฎค๋ํฐ๋ฅผ ํตํด ํ๊ธฐ๋ฅผ ๊ณต์ ํ๊ณ ๋ค๋ฅธ ์ฌ์ฉ์์ ์๊ฒฌ์ ์ฃผ๊ณ ๋๋ ์ ์์ต๋๋ค.
๐ ํ๋ก์ ํธ ๊ธฐ๊ฐ : 2023.06.15 ~ 2023.07.25
์ด๋ฆ | ์ ๋ฌด |
---|---|
์ด์ํ | playDB ๋ฐฐ์ฐ ์ ๋ณด ํฌ๋กค๋ง, Youtube API, ๊ด๋ฆฌ์ ํ์ด์ง ๊ธฐ๋ฅ ๋ด๋น |
์ ์ฐฌ์ | playDB ๋ฎค์ง์ปฌ ์ ๋ณด ํฌ๋กค๋ง, ๋ฎค์ง์ปฌ ๊ด๋ จ ๊ธฐ๋ฅ, ๋ฐฐํฌ ๋ด๋น |
๊ณฝ์ ์ญ | ๋ง์ด ํ์ด์ง(๊ตฌ๋ , ์ ์ , ๋ฌธ์) ๊ธฐ๋ฅ ๋ด๋น, ๊ด๋ฆฌ์ ํ์ด์ง ๊ธฐ๋ฅ ๋ด๋น |
๊นํ์ | ์ปค๋ฎค๋ํฐ ํ์ด์ง(๊ฒ์๊ธ, ์์ธ๊ฒ์๊ธ, ์ข์์) ๊ธฐ๋ฅ ๋ด๋น, UI ๋ํ ์ผ ๋ด๋น |
์ด์ข ํ | ์นด์นด์ค ๋ก๊ทธ์ธ API, ์ ์ ๋ฑ๋ก, ๋ก๊ทธ์ธ ๊ธฐ๋ฅ, ๋ฐฐ์ฐ ์ ๋ณด ๊ธฐ๋ฅ ๋ด๋น |
ํฌ๋กค๋ง : PlayDB์์ ๋ฎค์ง์ปฌ๊ณผ ๋ฐฐ์ฐ ์ ๋ณด ํฌ๋กค๋ง
Youtube API : ํด๋น ๋ฎค์ง์ปฌ์ ๊ด๋ จ Youtube ํด๋ฆฝ ์ ๊ณต
KaKao Login API
EC2, RDS, S3 : S3 = ์ด๋ฏธ์ง ์ ๋ก๋์ ์ฌ์ฉ
Java : 11
Spring Boot : 2.7.13
Local Oracle DB : xe 11g
RDS : Oracle 19.0.0.0.ru-2023-04.rur-2023-04.r1
- ๋ฉ์ธ ํ์ด์ง
- ์ธ๊ธฐ ๋ฎค์ง์ปฌ: '๋ดค์ด์' ํด๋ฆญ์ด ๊ฐ์ฅ ๋ง์ ๋ฎค์ง์ปฌ ์์ 3๊ฐ ์ถ๋ ฅ
- ์ปค๋ฎค๋ํฐ ์ธ๊ธฐ๊ธ: '์กฐํ์' ๊ธฐ์ค ์์ ๊ฒ์๊ธ 9๊ฐ ์ถ๋ ฅ
- ์ถ์ฒ ๋ฐฐ์ฐ: ๋๋ค์ผ๋ก ๋ฐฐ์ฐ ํ๋กํ ์ฌ์ง๊ณผ ์ถ์ฐ์ ์ถ๋ ฅ, ํด๋ฆญ ์ ๋ฐฐ์ฐ ์์ธ ํ์ด์ง ์ด๋, ์๋ก๊ณ ์นจ ์ ๋ฐฐ์ฐ ์ ๋ณด ๋ณ๋
- ๊ณต์ฐ ์ค์ธ ๋ฎค์ง์ปฌ: ๊ณต์ฐ ๊ธฐ๊ฐ ๊ธฐ์ค ํ์ฌ ๊ณต์ฐ ์ค์ธ ๋ฎค์ง์ปฌ ๋ฆฌ์คํธ ์ถ๋ ฅ
- ์์ธ ํ์ด์ง
- ๋ฎค์ง์ปฌ ๊ธฐ๋ณธ ์ ๋ณด ์กฐํ
- '์ฐํ๊ธฐ', '๋ดค์ด์' ํด๋ฆญ
- ์ถ์ฐ ๋ฐฐ์ฐ ์ ๋ณด ์กฐํ
- Youtube API ํตํ ์ ํ๋ธ ํด๋ฆฝ ์ถ๋ ฅ
- ๋ฉ์ธ ํ์ด์ง
- ์ปค๋ฎค๋ํฐ ์ธ๊ธฐ๊ธ: '์กฐํ์' ๊ธฐ์ค ์์ ๊ฒ์๊ธ 9๊ฐ ์ถ๋ ฅ
- ๊ฒ์๊ธ: ์นดํ ๊ณ ๋ฆฌ(๋ฆฌ๋ทฐ, ์ก๋ด)์ ๋ฐ๋ผ ๊ฒ์๊ธ ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅ
- ๋ก๊ทธ์ธ ์, ์ ์ ๊ฐ๋ต ์ ๋ณด ์ธก๋ฉด nav๋ฐ์ ์ถ๋ ฅ
- ์์ธ ํ์ด์ง
- ๊ฒ์๊ธ ์ ๋ณด ์์ธ ์กฐํ
- ๋๊ธ, ๋๋๊ธ ์์ฑ
- ๋ณธ์ธ ์์ฑ์ ํํ์ฌ ๊ฒ์๊ธ, ๋๊ธ, ๋๋๊ธ ์์ ๋ฐ ์ญ์ ๊ฐ๋ฅ
- ๊ธ ์์ฑ ํ์ด์ง
- ๊ธ ์นดํ ๊ณ ๋ฆฌ(์ก๋ด, ๋ฆฌ๋ทฐ) ์ ํ ๊ฐ๋ฅ
- ๋ฆฌ๋ทฐ ์ ํ ์, ๋ฎค์ง์ปฌ ์ ๋ณด ์ฐ๋
- ์ด๋ฏธ์ง ์ฒจ๋ถ ๊ฐ๋ฅ
- ๋ฉ์ธ ํ์ด์ง
- ์ฐ / ๋ดค๋ ๋ฎค์ง์ปฌ ์กฐํ
- ๋ด๊ฐ ์ด ๊ธ / ๋๊ธ / ์ข์์ํ ๊ธ ์กฐํ
- ํ๋กํ ์์ / ์ค์ (๋ก๊ทธ์์, ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ, ๋ฌธ์ํ๊ธฐ, ํ์ํํด)
- ๋ฉ์ธ ํ์ด์ง
- ๊ด๋ฆฌ์ ๋ฌธ์ ์กฐํ
- ์ ์ฒด ๋ฐฐ์ฐ, ๋ฎค์ง์ปฌ ์ ๋ณด ์กฐํ
- ์ ์ , ๊ฒ์๊ธ, ๋ฌธ์ ์กฐํ ๋ฐ ์ญ์
- ๋ฌธ์๊ธ ๋ต๋ณ
- ๋ถ๊ท์น์ ์ธ KOPIS API ๋ฎค์ง์ปฌ ์ ๋ณด์ PLAY DB ๋ฐฐ์ฐ ์ ๋ณด์์ ๋งคํ ๊ณผ์ ์ ๊ฑฐ์ณ์ ๊ฐ๊ฐ์ ํ ์ด๋ธ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ๋ณด๋ค ํ ๋ฒ์ ํ๋์ ์ปฌ๋ ์ ์ ์ ๋ถ ์ ์ฅํ๋ ๋ฐฉ์์ด ์กฐํ ์๋์ ์ฝ์ ์๋ ์ธก๋ฉด์์ ๋ณด๋ค ๋ ํจ๊ณผ์ ์ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐ๋์ด MongoDB๋ฅผ ์ฌ์ฉ
- ๋ฎค์ง์ปฌ๊ณผ ๋ฐฐ์ฐ๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฐ์ดํฐ๋ค์ ์ ํํ๋์ด์๊ณ ๊ด๊ณ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ Oracle DB๋ฅผ ๋์ ํ์ฌ ๋ ๊ฐ์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉ
- KOPIS API๋ฅผ ์ฌ์ฉํ์ ๋ PLAY DB ๋ฐฐ์ฐ ์ ๋ณด์ ์๋ก ๋งคํ๋๋ ๋น์จ์ด 444๊ฑด ์ค 25๊ฑด์ธ 5%์ ๋๋ก ๋งค์ฐ ๋ฎ์ KOPIS API๋ฅผ ํฌ๊ธฐํ๊ณ PLAY DB์์ ๋ฎค์ง์ปฌ ์ ๋ณด๋ ๊ฐ์ด ํฌ๋กค๋งํ๋ ๋ฐฉ์์ ์ฌ์ฉ -> ๋ฎค์ง์ปฌ ๋ฐ์ดํฐ๋ ์ ํํ๋์๊ณ ๋ฐฐ์ฐ ์ ๋ณด์ ๋์ผํ ํ์ด์ง์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ด -> ๋งคํ ๋ฐฉ์์ด ์ด์ ๋ณด๋ค ์์ํด์ ธ ์ ์ฒด DB๋ฅผ Oracle๋ก ์ฌ์ฉ
ํฌ๋กค๋ง ์ TimeOutException
- ํฌ๋กค๋ง ์ Timeout Option์ ์ฃผ๋ ๋ฐฉ๋ฒ๊ณผ Thread.sleep()์ ์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ง๋ง ํด๊ฒฐ์ด ๋์ง ์์
- ํฌ๋กค๋ง์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณผ์ ๊ณผ DB์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณผ์ ์ด ๊ฐ์ ํ ์์ ์คํ๋๋ ๊ฒ์ด ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ก์๋จน๋๋ค๋ ์๋ฌธ
- ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ถ ์ ์ฅํ ๋ค์ DB์ ์ผ๊ด ์ ์ฅํ๋ ๋ฐฉ์์ ์ฌ์ฉ (Exception ๋ฐ์ ์๊ธฐ๊ฐ ๋ค๋ก ๋ฆ์ถฐ์ก์ ๋ฟ ์ฌ์ ํ ๋ฐ์)
- ๋ฒํผ์ ๊ฐ์ด ์ผ์ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ ๋น์์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ํด๊ฒฐ
/*๋ฎค์ง์ปฌ ์์ธ ํ์ด์ง์์ ๋ฎค์ง์ปฌ ์ ๋ณด ์ ์ฅ*/
@SneakyThrows
public void saveAllMusical(List<String> musicalIds){
List<Musical> musicals = new ArrayList<>();
for(int i =0; i < musicalIds.size(); i++){
//๋ฎค์ง์ปฌ 1๊ฐ์ ๋ํ ๋ฐ์ดํฐ ํฌ๋กค๋ง
Musical musical = getMusical(musicalIds.get(i));
musicals.add(musical);
log.info(i + "๋ฒ MUSICAL(" + musicalIds.get(i) + ") ์ ์ฅ: " + musical);
// ๋ฐ์ดํฐ๋ฅผ 1000๊ฐ์ฉ ์ ์ฅ
if(i != 0 && i % 1000 == 0){
// musical ์ ์ฅ
musicalRepository.saveAll(musicals);
// ์๋ก์ด MusicalId๋ฅผ ์ฑ์ฐ๊ธฐ ์ํด ๊ธฐ์กด ๋ฆฌ์คํธ ์ด๊ธฐํ
musicals.clear();
}
}
๐ ์ ์ฐฌ์ : ์ํต์ด ํ๋ฐํ ํ์๋ค์ด ๋ชจ์ฌ์ ์ ๊ทน์ ์ธ ์ฐธ์ฌ์ ํผ๋๋ฐฑ์ ํตํด ์์ํ๊ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๐ ๊ณฝ์ ์ญ : ์ด๋ฐ์ ์ฌ๋ฌ ์ํ์ฐฉ์ค๊ฐ ์์์ง๋ง ํ์ํฌ๊ฐ ์ข์์ ํ๋ก์ ํธ๋ฅผ ๋ฌด์ฌํ ๋ง์น๊ณ ์ข์ ๊ฒฐ๊ณผ๊ฐ ์์ ์ ์์์ต๋๋ค. ๋ชจ๋ ๊ฐ์ฌํด์^^7
๐ ๊นํ์ : ์ ๊ฐ๋ฐ์ธ์์ ์์์ ์ด ๋ ํ๋ก์ ํธ, ์ข์ ํ์๋ค์ ๋ง๋ ๋ง์ ๊ฒ์ ๋ฐฐ์ฐ๊ณ ์์ฑ๋ ์๊ฒ ๋ง๋ฌด๋ฆฌ ํ ์ ์์์ต๋๋ค.
๐ ์ด์ข
ํ : 3๋ฒ์ ๊ธฐํ์ ์์ , 3๋ฒ์ DB ๋ณ๊ฒฝ ๋ฑ ์ฐ์ฌ๊ณก์ ์ด ๋ง์์ง๋ง ํ์๋ค์ ๋ง์ ๋์ ๋๋ถ์ ํ๋ก์ ํธ๋ฅผ ์ ๋ง๋ฌด๋ฆฌ ํ ์ ์์์ต๋๋ค.
๋ฐฐํฌ๊น์ง ์งํ๋์์ง๋ง ์ ์ ๋ฐ์์ ๋ณด์ง ๋ชปํ์ ์ด ์์ฝ์ต๋๋ค.
๐ ์ด์ํ : ํ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๊ฒ์ด ๊ฐ์ธ ํ๋ก์ ํธ์ ๋ค๋ฅธ ๋ถ๋ถ์ด ๋ง๋ค๋ ๊ฒ์ ์ข์ ํ์๋ค๊ณผ ํจ๊ปํ๋ฉฐ ๋ง์ด ๋ฐฐ์ฐ๊ฒ ๋ ๊ฒ ๊ฐ์ต๋๋ค.