BambiTalk์ ๋ถ๋ถ ๋๋ ์ปคํ์ด ์๊ธฐ ์ถ์ฐ ์ ํ์ ์ก์ ์ผ์ ์ ํจ๊ป ๊ด๋ฆฌํ๊ณ , ์ค์๊ฐ ์ฑํ ์ ํตํด ์ํตํ ์ ์๋๋ก ๋์์ฃผ๋ ์ ์ฉ ์ํต ์ฑ์ ๋๋ค.
์ผ์ ๊ณผ ํ ์ผ, ๋ฉ์์ง๋ฅผ ํ ๊ณณ์์ ๊ณต์ ํ๋ฉฐ ์ก์์ ํ์ํ ์ปค๋ฎค๋์ผ์ด์ ์ ๋ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ค์ด์ค๋๋ค.
- ๐งก BambiTalk
- ๐ ๏ธ Tech Stacks
- ๐ง Motivation
- ๐น๏ธ Features
- ๐ฅ Challenges
- ๐ Repository Links
- ๐๏ธ Schedule
๊ธฐ์กด์ ์ก์ ๊ด๋ จ ์ฑ๋ค์ ๋๋ถ๋ถ ์ ๋ณด ์ ๊ณต์ด๋ ์ปค๋ฎค๋ํฐ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ด, ๋ถ๋ถ ๋๋ ์ปคํ์ด ํจ๊ป ์ผ์ ์ ๊ด๋ฆฌํ๊ณ ์ค์๊ฐ์ผ๋ก ์ํตํ ์ ์๋ ์ ์ฉ ์ฑ์ ์ฐพ๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
์ก์๋ ํ ์ฌ๋๋ง์ ๋ชซ์ด ์๋๋ฉฐ, ํจ๊ป ๊ณํํ๊ณ ์คํํ๋ ๊ณผ์ ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค.
ํ์ง๋ง ์ค์ ๋ก๋ ์๋ก์ ์ผ์ ์ด๋ ํ ์ผ์ ๊ณต์ ํ๊ธฐ ์ด๋ ต๊ณ , ์ปค๋ฎค๋์ผ์ด์
๋ ์ฌ๋ฌ ์ฑ์ ์ค๊ฐ๋ฉฐ ๋ฒ๊ฑฐ๋กญ๊ฒ ์ด๋ฃจ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
BambiTalk์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ์ก์ ์ผ์ ๊ณผ ํ ์ผ์ ํจ๊ป ๊ด๋ฆฌํ๊ณ ์ค์๊ฐ ์ฑํ ์ผ๋ก ์ํตํ ์ ์๋ โ1:1 ์ก์ ์ ์ฉ ์ํต ์ฑโ์ ๋ชฉํ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค.
BambiTalk์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ง์คํฉ๋๋ค.
๋๊ฐ ์ด๋ค ์ผ์ ์ ๋ฑ๋กํ๋์ง, ์ค๋ ํด์ผ ํ ์ผ์ด ๋ฌด์์ธ์ง ํ๋์ ํ์ธํ๊ณ ํจ๊ป ๊ด๋ฆฌํ ์ ์์ด์.
์บ๋ฆฐ๋์๋ ๋ถ๋ถ ์ค ๋๊ฐ ์ผ์ ์ ๋ฑ๋กํ๋์ง ์ด๋ชจ์ง๋ก ๊ตฌ๋ถ๋๋ฉฐ,
๊ฐ ์ผ์ ์ ์๊ฐ์์ผ๋ก ์ ๋ฆฌ๋๊ณ ์๋ฃ ์ฌ๋ถ๋ ์ฒดํฌ๋ฐ์ค๋ก ๊ฐ๋จํ๊ฒ ํ์ํ ์ ์์ต๋๋ค.
์์คํ ์ก์ ๋ํ๋ฅผ ์ํ ์ ์ฉ ์ฑํ ๋ฐฉ!
์๋ก์ ๋ฉ์์ง๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฃผ๊ณ ๋ฐ๊ณ , ์ผ์ ์ด๋ ํ ์ผ๊ณผ ์ฐ๊ฒฐ๋ ์ปค๋ฎค๋์ผ์ด์
๋ ๋งค๋๋ฝ๊ฒ ์ด์ด์ง๋๋ค.
๋ํ, ์ฌ์ง๊ณผ ๋์์๋ ์์ ๋กญ๊ฒ ์ ์กํ ์ ์์ด ์ก์ ์๊ฐ์ ์์ํ๊ฒ ๊ณต์ ํ ์ ์์ต๋๋ค.
BambiTalk์ ์ฑํ
๊ธฐ๋ฅ์ ๋จ์ํ ํ
์คํธ ๋ฉ์์ง๋ฅผ ๋์ด, ์ฌ์ง๊ณผ ๋์์ ๊ฐ์ ๋ฏธ๋์ด ํ์ผ๋ ์ฃผ๊ณ ๋ฐ์ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค.
์ด๊ธฐ์๋ WebSocket ๊ธฐ๋ฐ ์ฑํ
์ ํ์ผ ์ ์ก ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํด, ํ์ผ์ base64
๋ก ์ธ์ฝ๋ฉํด ์์ผ ๋ฉ์์ง์ ํฌํจ์ํค๋ ๋ฐฉ์์ ์ ํํ์ต๋๋ค.
๊ฐค๋ฌ๋ฆฌ์์ ์ ํํ ์ด๋ฏธ์ง๋ ๋ฌธ์ ์์ด ์ ์ก๋์์ง๋ง, ์นด๋ฉ๋ผ๋ก ์ง์ ์ดฌ์ํ ์ฌ์ง์ด๋ ๋์์์ ์ ์กํ ๊ฒฝ์ฐ, ์์ผ ์ฐ๊ฒฐ์ด ์๊ธฐ์น ์๊ฒ ๋์ด์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ฒ์์๋ ์ด ๋ฌธ์ ๊ฐ ํ๋ฉด ํฌ์ปค์ค ์ฒ๋ฆฌ ๋ฐฉ์ ๋๋ฌธ์ด๋ผ๊ณ ํ๋จํ์ต๋๋ค.
ํ์ฌ ์ฑํ
๋ฐฉ์ useFocusEffect
ํ
์ ์ด์ฉํด, ํ๋ฉด์ ์ง์
ํ๋ฉด ์์ผ์ ์ฐ๊ฒฐํ๊ณ ๋ฒ์ด๋๋ฉด ํด์ ํ๋ ๊ตฌ์กฐ๋ก ๋์ด ์์ต๋๋ค.
์ด๋ก ์ธํด ์ธ๋ถ ์ฑ์ธ ์นด๋ฉ๋ผ๋ฅผ ์คํํ๋ฉด์ ์ฑํ
๋ฐฉ ํฌ์ปค์ค๊ฐ ์ ์ ํด์ ๋๊ณ , ๊ทธ ์๊ฐ ์์ผ ์ฐ๊ฒฐ์ด ๋๊ธฐ๋ ๊ฒ์ผ๋ก ๋ณด์์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ๊ธฐ์กด์ useRef
๋ก ๊ด๋ฆฌํ๋ ์์ผ ๊ฐ์ฒด๋ฅผ Zustand ์คํ ์ด๋ก ์ฎ๊ฒจ ์ ์ญ์์ ์์ผ ์ํ๋ฅผ ์ ์งํ๋ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
ํ์ง๋ง ๊ตฌ์กฐ ๊ฐ์ ์ดํ์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ , ๊ฒฐ๊ตญ ๊ทผ๋ณธ์ ์ธ ์์ธ์ ์ ์ก ๋ฐฉ์ ์์ฒด์ ์์์ ํ์ธํ์ต๋๋ค.
์นด๋ฉ๋ผ๋ก ์ดฌ์ํ ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฉ๋์ด ํฌ๊ณ , ์ด๋ฅผ base64๋ก ์ธ์ฝ๋ฉํด WebSocket์ผ๋ก ์ ์กํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ๊ณผ๋ํ๊ฒ ์ฆ๊ฐํ์ต๋๋ค.
์ด๋ก ์ธํด ์์ผ ์ฐ๊ฒฐ์ด ๊ณผ๋ถํ๋ก ๋๊ธฐ๋ ํ์์ด ๋ฐ์ํ ๊ฒ์
๋๋ค.
์ฆ, WebSocket์ ํตํด ๋์ฉ๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ์กํ๋ ๋ฐฉ์์ ๊ธฐ์ ์ ์ผ๋ก ๊ตฌ์กฐ์ ํ๊ณ๊ฐ ์๋ ๋ฐฉ์์ด์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ํ์ผ ์ ์ก๊ณผ ๋ฉ์์ง ์ ์ก์ ์์ ํ ๋ถ๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ๋ฆฌํฉํ ๋ง์ ์งํํ์ต๋๋ค.
- ํ์ผ ์
๋ก๋ ์ ์ฉ API (
POST /api/v1/files
)๋ฅผ ๊ตฌํํ์ต๋๋ค. - ํด๋ผ์ด์ธํธ์์๋ ์ดฌ์ํ๊ฑฐ๋ ์ ํํ ํ์ผ์ ํด๋น API์ ๋จผ์ ์ ๋ก๋ํฉ๋๋ค.
- ์๋ฒ๋ ํ์ผ์ S3์ ์ ์ฅํ ๋ค, ํด๋ผ์ด์ธํธ์
Signed URL
์ ์๋ต์ผ๋ก ๋ฐํํฉ๋๋ค. - ์ดํ ํด๋ผ์ด์ธํธ๋ ์ด URL๊ณผ ๋ฉ์์ง ํ์ (์: IMAGE, VIDEO)๋ง ํฌํจํ ๋ฉ์์ง๋ฅผ WebSocket์ผ๋ก ์ ์กํฉ๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก WebSocket ๋ฉ์์ง์๋ ์ค์ ํ์ผ ๋ฐ์ดํฐ๊ฐ ์๋, ๊ฐ๋ณ๊ณ ์์ ํ ๋งํฌ ์ ๋ณด๋ง ํฌํจ๋ฉ๋๋ค.
์ด ๊ตฌ์กฐ๋ฅผ ํตํด ๋์ฉ๋ ์ ์ก์ผ๋ก ์ธํ ์์ผ ์ฐ๊ฒฐ ์ข ๋ฃ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๊ณ , ์ค์๊ฐ์ฑ๊ณผ ์์ ์ฑ์ ๋ชจ๋ ๊ฐ์ถ ๋ฏธ๋์ด ๋ฉ์์ง ์ ์ก ๊ธฐ๋ฅ์ ์์ฑํ ์ ์์์ต๋๋ค.
์ด๋ฒ ๊ฒฝํ์ ํตํด, WebSocket์ ํ ์คํธ ๊ธฐ๋ฐ ์ค์๊ฐ ํต์ ์๋ ์ ํฉํ์ง๋ง, ๋์ฉ๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ค๋ฃจ๋ ๋ฐ๋ ํ๊ณ๊ฐ ์๋ค๋ ์ ์ ๋ค์ ํ๋ฒ ๊นจ๋ฌ์ ์ ์์์ต๋๋ค.
๊ธฐ์กด์ ์ฑํ ๊ธฐ๋ฅ์ ๋ํด, ๋ฉ์์ง ์ฝ์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ํํ๊ฒ ๋ฐ์ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ ํ์ต๋๋ค.
์ฒ์์๋ ์ฝ์ ์ํ ๋๊ธฐํ๋ฅผ ์ํด Polling
๋ฐฉ์๋ ๊ณ ๋ คํ์ง๋ง, ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์ ํฉํ์ง ์๋ค๊ณ ํ๋จํ์ต๋๋ค.
- ์๋ฒ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์ํ๋ฅผ ์์ฒญํด์ผ ํ๋ฏ๋ก ํธ๋ํฝ๊ณผ ๋ฆฌ์์ค ๋ญ๋น.
- ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ๋ฉ์์ง๋ฅผ ์ฝ์ ์์ ๊ณผ ๋๊ธฐํ์ ์๊ฐ์ฐจ๊ฐ ๋ฐ์ํ ์ ์์.
๋์ WebSocket์ ํ์ฉํด, ๋ค์ ๋ ๊ฐ์ง ์ํฉ์์๋ง ์ฝ์ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ ๋ฐฉ์์ผ๋ก ๋ฐฉํฅ์ ์ก์์ต๋๋ค
- ์ฌ์ฉ์๊ฐ ์ฑํ ๋ฐฉ์ ์ ์ํ์ ๋
- receive_message ์ด๋ฒคํธ์ ์๋ตํ์ ๋
์ด ๋ ์์ ์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๊ณ ์๋ ์ํ์์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์, ๋ณ๋์ ์ฃผ๊ธฐ์ ํ์ธ ์์ด๋ ์ฝ์ ์ํ๋ฅผ ์ ํํ๊ณ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ ์ ์๋ค๊ณ ํ๋จํ์ต๋๋ค.
ํด๋ผ์ด์ธํธ๋ ์ฑํ
๋ฐฉ์ ์ ์ํ ์ํ์์ ๋ฉ์์ง๋ฅผ ์์ ํ๋ฉด, ์ฆ์ read_all_messages
์ด๋ฒคํธ๋ฅผ ์๋ฒ์ ์ ์กํฉ๋๋ค.
์ด ์ด๋ฒคํธ๋ ๋ฉ์์ง๋ฅผ ์ค์ ๋ก ์ฝ์ ์๊ฐ ๋ฐ์ํ๋ฏ๋ก, ์ฝ์ ์ฒ๋ฆฌ ํ์ด๋ฐ์ด ๋ช
ํํฉ๋๋ค.
socketInstance.on('receive_message', (message) => {
handleMessageReceived(message);
readAllMessages(); // read_all_messages ์ด๋ฒคํธ emit
});
.
.
.
const readAllMessages = () => {
if (!socket) return;
socket.emit('read_all_messages');
};
๋ํ ์์ผ ์ฐ๊ฒฐ ์งํ(์ฑํ ๋ฐฉ ์ง์ ์)์๋ ์๋ฒ ์ธก์์ ์๋์ผ๋ก ์ฝ์ ์ฒ๋ฆฌ๋ฅผ ์ํํ ์ ์๋๋ก ๊ตฌํํ์ต๋๋ค.
์๋ฒ๋ ๋ค์ ๋ ๊ฐ์ง ์ํฉ์์ ์ฝ์ ์ฒ๋ฆฌ ๋ก์ง์ ์คํํฉ๋๋ค
- ์์ผ ์ฐ๊ฒฐ ์์
- ํด๋ผ์ด์ธํธ๊ฐ ์ฑํ
๋ฐฉ์ ์
์ฅํ๋ฉด, ํด๋น ์ปคํ ๋ฐฉ(
couple-{id}
)์ ์์ผ์ joinํฉ๋๋ค. - ๊ทธ ์งํ, DB์์ ํด๋น ์ ์ ๊ฐ ๋ณด๋ด์ง ์์ ๋ชจ๋ ๋ฉ์์ง๋ฅผ ์ฝ์ ์ฒ๋ฆฌํ๊ณ ,
- ๊ฐ์ ๋ฐฉ์ ์๋ ์๋๋ฐฉ์๊ฒ
update_read_status
์ด๋ฒคํธ๋ฅผ ์ ์กํ์ฌ, ์๋๋ฐฉ ํ๋ฉด์์๋ ๋ฉ์์ง๊ฐ ์ฝํ ์ํ๋ก ํ์๋๋๋ก ํฉ๋๋ค.
read_all_messages
์ด๋ฒคํธ ์์ ์
-
์ฌ์ฉ์๊ฐ ๋ฉ์์ง๋ฅผ ์์ ํ๊ณ ์ฝ์ ์์ฒญ์ ๋ณด๋ด๋ฉด, ์๋ฒ๋ ๋์ผํ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
@SubscribeMessage('read_all_messages') async readAllMessages(@ConnectedSocket() client: Socket) { await this.messageUseCase.readAllMessages(client.data.coupleId, client.data.userId); this.server.to(`couple-${client.data.coupleId}`).emit('update_read_status', client.data.userId); }
์ด ๊ตฌ์กฐ๋ฅผ ํตํด, ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ๋ฉ์์ง๋ฅผ ์ฝ์ ์์ ์๋ง ์๋ฒ์ ์ฝ์ ์ํ๋ฅผ ๋๊ธฐํํ๋ฉฐ,
์๋๋ฐฉ์ update_read_status
์ด๋ฒคํธ๋ฅผ ํตํด ์์ ์ ๋ฉ์์ง๊ฐ ์ฝํ์์ ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
BambiTalk์ ๋ชจ๋ ์ผ์ , ์ฑํ , ์๋ฆผ ๊ธฐ๋ฅ์ ์ปคํ ๋จ์(coupleId)๋ก ์ฐ๋๋์ด์ผ ์ ์์ ์ผ๋ก ๋์ํฉ๋๋ค.
ํ์ง๋ง ํ์๊ฐ์ ์งํ์๋ ๋ ์ฌ์ฉ์๊ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์, ์ด๋ ์ฝ๋๋ฅผ ํตํด ์๋ก๋ฅผ ์ฐ๊ฒฐํ ๋ค, ์ปคํ๋ก ๋งค์นญ๋ ์ํ์์๋ง ์๋น์ค๋ฅผ ์จ์ ํ ์ด์ฉํ ์ ์๋๋ก ์ค๊ณํ์ต๋๋ค.
์ด๋ ์ฝ๋๋ฅผ ๋ฐ๊ธํ ๋ค, ์ด๋ฅผ ์ด๋์ ์ ์ฅํ๊ณ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ์ง ๊ณ ๋ฏผ์ด ํ์ํ์ต๋๋ค.
์ฒ์์๋ DB์ Couple
ํ
์ด๋ธ์ inviteCode
์ปฌ๋ผ์ ์ถ๊ฐํด ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๊ณ ๋ คํ์ง๋ง,
์ด ๊ฒฝ์ฐ ์ด๋ ์ฝ๋ ์ ํจ์ฑ ํ์ธ์ ์ํด ๋งค๋ฒ DB๋ฅผ ์กฐํํด์ผ ํ๋ ๋นํจ์จ์ ์ธ ๊ตฌ์กฐ๋ผ๊ณ ํ๋จํ์ต๋๋ค.
๋์ , ๋ง๋ฃ ์๊ฐ ์ค์ ๊ณผ ์๋ ์ญ์ ๊ฐ ๊ฐ๋ฅํ Redis๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
Redis๋ฅผ ํ์ฉํ๋ฉด ์ด๋ ์ฝ๋๊ฐ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์๋์ผ๋ก ์ญ์ ๋๋ฏ๋ก,
๋ณ๋์ ์ ๋ฆฌ ์์
์์ด๋ ๊ฐ๋ณ๊ณ ํจ์จ์ ์ธ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ก์ต๋๋ค.
์ด๋ ์ฝ๋๋ฅผ Redis์ ์ ์ฅํ ๋, ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง ํค ๊ตฌ์กฐ๋ก ๋ถ๋ฆฌํ์ฌ ์ค๊ณํ์ต๋๋ค.
ํค ์ด๋ฆ | ์ญํ | TTL |
---|---|---|
invite:{inviteCode} |
์ฝ๋ ์ ๋ ฅ ์ ์กฐํ์ฉ -> coupleId, userId ์ ์ฅ | 15๋ถ |
couple:{coupleId}:invite |
์ค๋ณต ๋ฐ๊ธ ๋ฐฉ์ง์ฉ -> inviteCode ์ ์ฅ | 15๋ถ |
invite:{code}
โ ์ฝ๋ ์ ๋ ฅ ์ ์กฐํ์ฉ
- ์ด๋์ฝ๋๋ฅผ ๋ฐ์ ์ฌ์ฉ์๊ฐ ์ด๋ ์ฝ๋๋ฅผ ์
๋ ฅํ์ ๋, ํด๋น ์ฝ๋๊ฐ ์ด๋ค ์ปคํ(
coupleId
)์ ์ํ ๊ฒ์ด๋ฉฐ, ๋๊ฐ ์ด๋ํ(userId
) ๊ฒ์ธ์ง๋ฅผ ์ฆ์ ์กฐํํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. - ์ด ํค ํ๋๋ง์ผ๋ก ์ด๋ ์ฝ๋์ ์ ํจ์ฑ ๊ฒ์ฆ๊ณผ ์ฐ๊ฒฐ ๋์ ์ ๋ณด ํ์ธ์ด ๊ฐ๋ฅํ๋ฉฐ,
- ์ฝ๋ ์ฌ์ฉ์ด ์๋ฃ๋๋ฉด ํด๋น ํค๋ง ์ญ์ ํด๋ ๊ด๋ จ ์ ๋ณด๊ฐ ๋ชจ๋ ์ ๊ฑฐ๋ฉ๋๋ค.
couple:{coupleId}:invite
โ ์ค๋ณต ๋ฐ๊ธ ๋ฐฉ์ง์ฉ
- ํ ์ปคํ์ด ์ฌ๋ฌ ์ด๋ ์ฝ๋๋ฅผ ๋์์ ๋ฐ๊ธํ์ง ๋ชปํ๋๋ก ์ ํํ๊ธฐ ์ํด ์ถ๊ฐํ ํค์ ๋๋ค.
- ์ด๋ ์ฝ๋๋ฅผ ๋ฐ๊ธํ ๋, ๋จผ์ ์ด ํค๊ฐ ์กด์ฌํ๋์ง ํ์ธํ์ฌ ๊ธฐ์กด ์ฝ๋๊ฐ ์์ง ์ ํจํ ๊ฒฝ์ฐ์๋ ์ฌ๋ฐ๊ธํ์ง ์๋๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ง๋ฃ์๊ฐ(TTL)์ ์ค์ ํจ์ผ๋ก์จ, ์ด๋ ์ฝ๋ ์ ํจ ์๊ฐ์ด ์ง๋๋ฉด ์๋์ผ๋ก ๋ง๋ฃ๋๋๋ก ๊ด๋ฆฌํฉ๋๋ค.
- ์ด ํค๋ก ์ธํด ์ด๋ ์ฝ๋ ๋ฐ๊ธ ๋ก์ง์์ ์ค๋ณต ์์ฑ์ ํจ๊ณผ์ ์ผ๋ก ๋ฐฉ์งํ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ ์ด๋ ์ฝ๋ ์์ฒด์ ์ ๋ณด์, ์ปคํ ๋จ์๋ก ๋ฐ๊ธ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ๋ถ๋ฆฌํด ์ ์ฅํจ์ผ๋ก์จ, ์ด๋ ์ฝ๋ ๊ธฐ๋ฅ์ ๋ณด๋ค ์์ ์ ์ผ๋ก ์ค๊ณํ ์ ์์์ต๋๋ค.
ํด๋ผ์ด์ธํธ ๋ ํฌ์งํ ๋ฆฌ | ์๋ฒ ๋ ํฌ์งํ ๋ฆฌ
ํ๋ก์ ํธ ๊ธฐ๊ฐ : 2025.06.23(์) ~ 2025.07.18(๊ธ)
- 1์ฃผ์ฐจ : ์์ด๋์ด ์ ์ ๋ฐ ๊ธฐํ
- 2~4์ฃผ์ฐจ : ๊ฐ๋ฐ
- ์ฑํ ์ฑ ํธ์ ์๋ฆผ ๊ธฐ๋ฅ
- ์ผ์ ๋ฑ๋ก ๋ฐ ํ๋ฃจ ์ ๋ฆฌ๋ง์ธ๋ ํธ์ ์๋ฆผ ๊ธฐ๋ฅ
- ์ฑํ ํญ๋ฒํผ ์์ฝ์ ๋ฉ์์ง ์นด์ดํธ ๋ฑ์ง
- ์ ํ ๋ก๊ทธ์ธ
- ํ ์คํธ์ฝ๋ ์์ฑ
- ๊ฒ์คํธ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ
- ์น์์ผ ๋ถํ ํ ์คํธ