ํด๋จผ๋ค์ ์ํ ์์ ๊ณต์ ์ดํ๋ฆฌ์ผ์ด์ . ํด๋ฎค ๐งโ๐คโ๐งโค๏ธ๐ถ
14.17.6 ๋ฒ์ ์์ ๋์์ด ํ์ธ๋์์ต๋๋ค
yarn install
.env.sample
ํ์ผ์ ๋ณด๊ณ ์๋ก์ด ํ์ผ์ ์์ฑํฉ๋๋ค.
.env
: ๋ก์ปฌ ํ๊ฒฝ.env.production
: ์ด์ ํ๊ฒฝ
PORT= # ์ฑ์ด ์คํ๋ ํฌํธ
AUTH_JWT_SECRET= # (ํ์ฌ ์ฌ์ฉ๋์ง ์์ต๋๋ค)
# DB ์ฐ๊ฒฐ ์ ๋ณด
DB_HOST=
DB_PORT=
DB_NAME=
DB_USERNAME=
DB_PASSWORD=
# ์ฌ๋ ๋ด ์ค์ ํ์ด์ง์์ ์ฐพ์ ์ ์์ต๋๋ค
SLACK_SIGNING_SECRET= # Basic Information - App Credentials - Signing Secret
SLACK_BOT_TOKEN= # OAuth & Permissions - Bot User OAuth Token
# ์ฌ๋ ๋ด์ด ์ฒ๋ฆฌํ ๋์ ์ฑ๋ ID. ์ฑ๋ ์ฐํด๋ฆญ - Open channel details - ํ๋จ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
SLACK_DIGEST_TARGET_CHANNEL= # digest๋ฅผ ์์ฑํ ๋ ๋ฉ์์ง๋ฅผ ์์งํ ๋์ ์ฑ๋
SLACK_QUEUE_ALLOW_CHANNEL= # ๋ผ๋์ค ๊ณก ์ถ๊ฐ ๋ฉ์์ง๋ฅผ ์์ ํ ์ฑ๋
YOUTUBE_API_KEY= # Google API ์ฝ์์ ํตํด ๋ฐ๊ธ
SOUNDCLOUD_API_KEY= # SoundCloud ์น์์ ์๋ฌด ๋ฆฌํ์คํธ ํ url์ query params๋ก ์ง์ ๋ `client_id`๋ฅผ ์ง์ ํฉ๋๋ค
DB ์ปค๋ฅ์ ์ ๋ณด๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ ํ ์๋ ์ปค๋งจ๋๋ฅผ ์คํํ์ฌ ํ ์ด๋ธ์ ์์ฑํฉ๋๋ค.
npx mikro-orm schema:update --run
๋ผ๋์ค ๊ธฐ๋ฅ ์๋์ ํ์ํ ์ด๊ธฐ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์์ฑํฉ๋๋ค. (์์ง ์๋ฉ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๊ณ ์์ง ์์ต๋๋ค.)
> insert into playlist
id, created_at, updated_at, playlist_type, title, description
PJTHllahrNXiNQF, <ํ์ฌ์๊ฐ>, <ํ์ฌ์๊ฐ>, RADIO, Radio, <null>
> insert into radio
id, room_name, playlist_id, current_track_id, current_track_started_at, current_track_duration
ToOE5kKoO3XC8m0, main, PJTHllahrNXiNQF, <null>, <null>, <null>
yarn start
# ํน์ watch mode
yarn start:dev
yarn build
๋ก ์คํํ๊ณ yarn start:prod
๋ก ๋น๋๋ ํ์ผ์ ์คํํฉ๋๋ค.
์ ์ปค๋งจ๋๋ก ์ฑ ์คํ์ .env.production ํ์ผ์ ํ๊ฒฝ๋ณ์๋ก ์ฌ์ฉํฉ๋๋ค.
Node ๋ฐํ์์ ์ ๊ณตํ๋ ํ๊ฒฝ์ ์๋ฒ๋ฅผ ๋ฐฐํฌ & ์คํ์ํต๋๋ค. ๊ฐ๊ธ์ ๋จ์ผ ์ธ์คํด์ค ํ๊ฒฝ์์ ์ฑ์ ์ด์ฉํ๋ ํด์ผ ์์ฝ ์์ ๊ด๋ จ ์ด์๋ฅผ ์ต์ํ์ํฌ ์ ์์ต๋๋ค. (ec2 ๋ฑ)
- ์์ฝ ์์ ์ด setTimeout(์ธ๋ฉ๋ชจ๋ฆฌ)๋ก ๊ด๋ฆฌ๋๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ๊ด๋ฆฌํ ์๋น์ค์ ๋ฐฐํฌ ๋ฐ ์ด์ฉ์, ํน์ ๋ค์ค ์ธ์คํด์ค ํ๊ฒฝ์์ ํ ๊ด๋ฆฌ์ ์คํจํ ์ ์์ต๋๋ค.
- ๊ถ๊ทน์ ์ผ๋ก๋ ๋ฉ์์งํ ๋์
์ ํด์ผ ์์ ํ๋ฉ๋๋ค.
- ์์ฝ ์์ ์ ์ง์ํ๊ณ , ๋๋ ์ด๊ฐ ์ ์ ๊ฒ
- https://github.com/rabbitmq/rabbitmq-delayed-message-exchange ๋ฅผ ๊ด์ฐฎ์ ํ๋ณด๋ก ๋ณด๊ณ ์์ต๋๋ค.
- ํ์ฌ ์ํ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ ์ฐจ๋ก ์ผ์์ ํด์ ๊ฐ๋ฅํฉ๋๋ค.
- DB์์ radio ํ
์ด๋ธ์ ์กด์ฌํ๋ ๋จ์ผ ๋ก์ฐ์
current_track_id
,current_track_started_at
,current_track_duration
์ ๊ฐ์ ๋ชจ๋null
๋ก ์ค์ ํฉ๋๋ค. - ํด๋น
radio.playlist..tracks
๋ฅผ ๋ชจ๋ ์ ๊ฑฐํฉ๋๋ค. - ์ฑ์ ์ฌ๋ถํ ํฉ๋๋ค.
- DB์์ radio ํ
์ด๋ธ์ ์กด์ฌํ๋ ๋จ์ผ ๋ก์ฐ์
PUT /slack/members
๋ฅผ ์คํํ์ฌ slack_member
ํ
์ด๋ธ์ ์
๋ฐ์ดํธ ํฉ๋๋ค.