-
Notifications
You must be signed in to change notification settings - Fork 0
๐ง ์ฐ์ ์์ ํ๋ก ์์ฒญ ์ ์ดํ๊ธฐ
๋ถ์ผ | ์์ฑ์ | ์์ฑ์ผ |
---|---|---|
BE | ๊น๋ฏผ์ | 24๋ 12์ 03์ผ |
๊ฐ๊ฒฉ ์์น, ํ๋ฝ๋ฅ ์์์ ๋ํ API๋ฅผ ์์ฒญํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ธฐ ์ํ ์์ ์ ๋ง๋ค์๋ค. ํด๋น ์์ ์ ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ์ฃผ๊ฐ ์๋ฒ์ API๋ฅผ ํตํด, 20๊ฐ์ ๋ญํน์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ํ ๊ฐ ์ข ๋ชฉ์ ๋ํ ๋ผ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ธฐ ์ํด 20๊ฐ์ ์์ฒญ์ ์ถ๊ฐ๋ก ์งํํ๊ฒ ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ์์ฒญ์ด ์คํจํ๋ฉด ์ฌ ์์ฒญํ๋๋กํด์ ๋ฐ์ดํฐ๊ฐ ์์ง๋์ง ๋ชปํ๋ ๋ฌธ์ ๋ฅผ ๋ง๋๋ก ํ๋ค.
async getDecreaseRankStocks(count = 5) {
try {
if (count === 0) return;
const result = await this.getFluctuationRankApiStocks(false);
const liveResult = await this.getFluctuationRankApiLive(result);
await this.datasource.transaction(async (manager) => {
await this.saveFluctuationRankStocks(result, manager);
await this.saveLiveData(liveResult, manager);
this.logger.info('decrease rank stocks updated');
});
} catch (error) {
this.logger.warn(error);
await new Promise((resolve) =>
setTimeout(() => resolve(this.getDecreaseRankStocks(--count)), 2000),
);
}
}
ํ์ง๋ง ์ด๋ ๊ฒ ์์ฑํ์ ๋ ๋ค์๊ณผ ๊ฐ์ด 500 ์๋ฌ๊ฐ ์์์ด ๋ง์ด ๋ฐ๋ณต์ด ๋์๋ค. ๊ทธ ์ด์ ๋ 1๊ฐ์ ๊ณ์ข์์ ํ์ฉ๋ ์์ฒญ์ ์(์ด ๋น 20๊ฐ)๋ฅผ ์ด๊ณผํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ํ๋ฃจ ๋น ์์ ๊ฐ์ ์๋ฌ๊ฐ ์ด๋ ์ ๋ ๋ฐ์ํ๋์ง ์ธก์ ํด ๋ณด์๋ค.
๋๋๊ฒ๋ 1๋ง ๊ฐ ์ด์์ ์์ฒญ์ด ์คํจ๊ฐ ๋์๋ค.
์์ฒญ ์ ์ ์ด๋ฅผ ์คํจํ ์์ธ์ ํ์ฌ ์์ฒญ์ ์ ์ดํ๊ธฐ ์ํ ๋ก์ง์ด ์ค์ ๋ก๋ ์ ์ด๊ฐ ์ ์๋๊ธฐ ๋๋ฌธ์ด์๋ค. ๊ธฐ์กด์ ์งํํ ์์ฒญ ์ ์ด ๋ก์ง์ ํฌ๊ฒ 2๊ฐ์ง์๋ค. ์ฐ์ ์ฒซ ๋ฒ์งธ๋ ๋ก์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
ํด๋น ๋ก์ง์ ์ค์ผ์ค๋ฌ๊ฐ ์ผ์ ์๊ฐ์ด ๋๋ฌํ๋ฉด api ์์ฒญ์ ์งํํ๋ ๋ก์ง์ผ๋ก ๋งค์ฐ ๊ฐ๋จํ๋ค. ๋ฐ๋ผ์ 1๋ถ ์ฃผ๊ธฐ๋ก ์ ๋ฐ์ดํธํ๋ ๋ฐ์ดํฐ(๋ณ๋๋ฅ ์์, ๊ทธ์ ์ฐ๊ด๋ ๋ผ์ด๋ธ ๋ฐ์ดํฐ ๋ฑ)์ ์ฐ์ด๊ฒ ๋๋ค. ํน์ ์๊ฐ์ ๋๋ฌํ์ฌ ์์ํ๊ฒ ๋๋ค๋ฉด ์ด ๋น 20๊ฐ์ ์์ฒญ์ ์งํํ๊ฒ ๋๋ค. ํ์ง๋ง ์ ๋ฐฉ์์ ๋ฌธ์ ์ ์ผ๋ก๋ ๊ฐ ๋ก์ง๋ง๋ค ๋๊ธฐํ๊ฒ ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์๋ค๋ ๊ฒ์ด๋ค. ์ฆ ๋ณ๋๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ์์ค์ ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ๋์์ ์์ฒญ๋์ด ํ์ฉ๋๋ ์์ฒญ ์๋ฅผ ์ด๊ณผํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
๋ ๋ฒ์งธ ๋ก์ง์ ๊ทธ๋ํ ๋ฐ์ดํฐ์ ๊ฐ์ด ํ๋ฒ์ ๋ง์ ์์ฒญ์ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉํ ๋ก์ง์ด๋ค. ํ์ฌ ๊ฐ์ง๊ณ ์๋ ๊ณ์ข์ ์๋งํผ task chunk๋ฅผ ๋๋์ด์ setTimeout์ ๊ฑธ์ด์ ์ผ์ ์๊ฐ์ด ์ง๋ ํ ์์ฒญ์ ์คํํ๋๋ก ํ๋ค. ํ์ง๋ง ์ด๊ฒ๋ ์์ฒญ์ ์ ์ดํ๊ธฐ ํ๋ค์๋ค. ํด๋น ๋ก์ง์ ๋ฌธ์ ๋ ์ฒซ๋ฒ์งธ ๋ก์ง๊ณผ ๊ฐ์ด ๋ค๋ฅธ ์์ฒญ๊ณผ ๊ฒน์น๊ฒ ๋ ๋ ์์ฒญ์ด ์ด๊ณผ๋ ์ ์๋ ๋ฌธ์ ๊ฐ ์๊ณ , setTimeout์ ์ค์ฐจ๊ฐ ๋ง์ด ์์ฌ ์์ธกํ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ์์๋ค. ๋ ํฐ ๋ฌธ์ ๋ก ๋๋ฌด ๋ง์ setTimout์ ์์๋์๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํฐ์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๋ค. ๊ฒฐ๊ตญ ์ ํ๋ ์์ฒญ ์๋ฅผ ์ ์ ์ดํ๊ธฐ ์ํด์ ์๋ก์ด ๋ก์ง์ ๋ง๋ค ์ ๋ฐ์ ์์๋ค.
ํด๋น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ด๋ฅผ ์ ๊ด๋ฆฌํ ์ ์๋ ์ค๊ฐ ์ง์ ์ด ํ์ํ๊ณ , ์ฐ์ ์์ ํ๋ฅผ ์ค๊ฐ ์ง์ ์ผ๋ก ๋์ด ์์ฒญ ์๋ฅผ ์ ์ดํ ์ ์๋๋ก ํ๋ค. ๊ฐ์ ๋ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฐ์ - ํ - ์๋น์ ํํ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ก ํ๋ค.
์ฐ์ ์์ฐ์๋ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์๊ฒ ์์ฒญ task๋ฅผ ์ฝ์ ํ๋๋ก ํ๋ค. ํ์ ๋ค์ด๊ฐ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์์ฒญ url - ์ฃผ๊ฐ API์ ์์ฒญํ url
- ์ฟผ๋ฆฌ - ์์ฒญ์ ํ์ํ ์ฟผ๋ฆฌ
- TR_ID - ๊ฑฐ๋ ๋ฒํธ
- callback - ์์ฒญ์ด ์๋ฃ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์
์์ฐ์์ ์์ฒญ์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ด๋ ์์ฒญ์ด ์คํจํ๊ฑฐ๋ ์ฐ์ ์์๊ฐ ๋์ ์์ ์ ๋จผ์ ๋น ์ ธ๋๊ฐ ์ ์๋๋ก ๋ง๋ค์๋ค.
์ฐ์ ์์ ํ๋ก๋ถํฐ ์์ฒญ์ ๊ฐ์ ธ์ ์ฒ๋ฆฌํ๋ ๊ณณ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ api๋ก๋ถํฐ ๊ฐ์ ธ์จ ํ callback ํจ์์ ์ฒ๋ฆฌํ๋๋ก ํ๋ค. ์ด๋ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด, ๋ ๋์ ์ฐ์ ์์๋ก ์ฌ์์ฒญ์ ํ๋๋กํ๋ค.
ํด๋น ๊ตฌ์กฐ๋ฅผ ์ ์ฉํ ํ ์ด์ ์ ๋นํด์ ์์ฒญ ์ ์ด ์คํจ์ ๋ํ ์๋ฌ๊ฐ ํฌ๊ฒ ์ค์ด๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
- ๐ฉ FE ๊ธฐ์ ์ ํ์ด์
- โจ ์ฐจํธ์ ๋ฐ์ํ ๊ตฌํ๊ณผ useRef ํ์ ๋ฌธ์
- ๐ฃ ๋ถ๋ชจ ์์์ ์ํ์ ๋ฐ๋ผ ์์ ์์๋ ์คํ์ผ ๋ณํ ๋ถ์ฌํ๊ธฐ
- ๐ zod ๋์ ํ๊ธฐ
- ๐ useInfiniteQuery๋ฅผ ์ฌ์ฉํ ๊ทธ๋ํ ๋ฌดํ์คํฌ๋กค ๊ตฌํ
- ๐ซ ์ฌ์ฉ์์ ์์ ๋ณํ ์๋ ๊ทธ๋ํ ์คํฌ๋กค ๊ตฌํํ๊ธฐ
- ๐งช ์๋ง์ ๊ทธ๋ํ ๋ฐ์ดํฐ ์์ฒญ์ ์ด๋ป๊ฒ ์ค์ผ๊น
- ๐ ๋คํฌ๋ชจ๋์์ ์๋ก๊ณ ์นจ ์ ๋ผ์ดํธ๋ชจ๋๊ฐ ์ ๊น ๋ณด์ด๋ ๋ฌธ์
- ๐ ์น์์ผ์ ์ฑํ ๋ฐ์ดํฐ์ REST API์ ์ฑํ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ๊ด๋ฆฌํ๊ธฐ
- ๐ก BE ๊ธฐ์ ์ ํ ์ด์
- โ๏ธ Node WebSocket ํ๊ณ ๋ค๊ธฐ
- โ๏ธ TypeORM Datasource mock ๋ง๋ค๊ธฐ
- โ๏ธ oauth ID range ๋ฌธ์
- ๐ custom pipe์์ Nan์ด ๋ฐ์์ง๋ ๋ฌธ์
- ๐ช nest Websocket์ ์ธ์ ์ด ์๋๋ค๊ณ ?
- ๐ด nginx websocket ์ฐ๊ฒฐ ์ ๋ฌธ์ ๋ฐ์
- ๐ WebPush ๊ตฌํ
- ๐ง ์ฐ์ ์์ ํ๋ก ์์ฒญ ์ ์ดํ๊ธฐ
- ๐ websocket์ด ๋ฆ๊ฒ ํ ๋น๋์ด ๋ฐ์๋๋ ๋ฌธ์
- ๐ฅณ typeorm์ ์ด์ฉํ FCM ์๋ฆผ ์๋น์ค
- ๐ฆ ๋ค์ค ์ ์ ๋์์ฑ ์ ์ด โ ์ฑ๊ธํค, ๋ฎคํ ์ค
- ๐ ๏ธ ์ธํ๋ผ ๊ธฐ์ ์คํ ์ ํ ์ด์
- ๐ Ncloud ์ค์ ๊ณผ์
- ๐ ORM ๊ธฐ์ ์คํ ๋น๊ต
- ๐ค RabbitMQ๋ก ๋ถ์ฐ ์๋ฒ์๊ฒ ๋ฉ์์ง๋ฅผ ๋ถ๋ฐฐํ๊ธฐ
- ๐ข private DB ์๋ฒ์ ์ ์ํ์ง ๋ชปํ๋ ํ์
- ๐ 1์ฃผ์ฐจ ๋ฐํ
- ๐ 2์ฃผ์ฐจ ๋ฐํ
- ๐ 3์ฃผ์ฐจ ๋ฐํ
- ๐ 4์ฃผ์ฐจ ๋ฐํ
- ๐ 5์ฃผ์ฐจ ๋ฐํ
- ๐ ์ต์ข ๋ฐํ