123 - DevOpsSociety/Hanmo-front GitHub Wiki

'ํ•œ๋ชจ(ํ•œ์„ธ์—์„œ ๋ชจ์—ฌ์š”)' ํ”„๋กœ์ ํŠธ ๋ฐœํ‘œ ์ž๋ฃŒ


Slide 1: ํ‘œ์ง€

  • ํ”„๋กœ์ ํŠธ๋ช…: ํ•œ๋ชจ : ํ•œ์„ธ์—์„œ ๋ชจ์—ฌ์š”
  • ํŒ€์›:
    • [cite_start]Frontend: ์œ ์ƒ์ง„, ์ด๊ฒฝํ™˜
    • [cite_start]Backend: ๊น€์˜ˆ๋žŒ, ๊น€ํƒœ๋‚จ, ๋ฐ•๋‹คํ˜œ, ๋ฐ•์ง€ํ›ˆ
  • ๋ฐœํ‘œ์ผ: 2025๋…„ O์›” O์ผ

Slide 2: ๋ชฉ์ฐจ (Agenda)

  1. ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ
  2. ์„œ๋น„์Šค ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ํ๋ฆ„
  3. ์ ์šฉ ๊ธฐ์ˆ  ๋ฐ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜
  4. ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๊ณผ์ • (๋งค์นญ, ์ฑ„ํŒ…)
  5. ์ฃผ์š” ๋„์ „ ๊ณผ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
  6. ํ”„๋กœ์ ํŠธ ์„ฑ๊ณผ ๋ฐ ํ–ฅํ›„ ๊ณ„ํš
  7. Q&A

Slide 3: ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • ์„ ํƒ ๋ฐฐ๊ฒฝ
    • [cite_start]ํ•™๊ธฐ ์ดˆ์™€ ๋‹ฌ๋ฆฌ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉฐ ํ•™์ƒ ๊ฐ„์˜ ๊ต๋ฅ˜๊ฐ€ ์ค„์–ด๋“œ๋Š” ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • [cite_start]ํŠนํžˆ, ๋Œ€ํ•™ ์ถ•์ œ ๊ธฐ๊ฐ„ ๋™์•ˆ ํ•จ๊ป˜ ์ฆ๊ธธ ์นœ๊ตฌ๋ฅผ ๋งŒ๋“ค์–ด ์ถ•์ œ ์ฐธ์—ฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ์‚ผ์•˜์Šต๋‹ˆ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ
    • [cite_start]1:1 ๋™์„ฑ ๋ฐ 2:2 ์ด์„ฑ ๋งค์นญ ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ๊ต๋‚ด์—์„œ ์ƒˆ๋กœ์šด ์ธ์—ฐ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.
    • [cite_start]๊ถ๊ทน์ ์œผ๋กœ ํ•™์ƒ๋“ค ๊ฐ„์˜ ๊ต๋ฅ˜๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋” ์ฆ๊ฑฐ์šด ์บ ํผ์Šค ์ƒํ™œ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.

Slide 4: ์„œ๋น„์Šค ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ํ๋ฆ„

  • ์‚ฌ์šฉ์ž ์ด์šฉ ํ๋ฆ„
    1. [cite_start]์‹œ์ž‘ ๋ฐ ๊ฐ€์ž…: ์ฒซ ํ™”๋ฉด์—์„œ ํšŒ์›๊ฐ€์ž…์„ ์„ ํƒํ•˜๊ณ  [cite: 10][cite_start], SMS๋ฅผ ํ†ตํ•ด ๋ณธ์ธ ์ธ์ฆ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    2. [cite_start]์ •๋ณด ์ž…๋ ฅ: MBTI, ์„ฑ๋ณ„, ํ•™๊ณผ, ์ธ์Šคํƒ€๊ทธ๋žจ ID ๋“ฑ ๋งค์นญ์„ ์œ„ํ•œ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    3. [cite_start]๋žœ๋ค ๋‹‰๋„ค์ž„ ์ƒ์„ฑ: ์ž…๋ ฅํ•œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์žฌ๋ฏธ์žˆ๋Š” ๋žœ๋ค ๋‹‰๋„ค์ž„์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค[cite: 13]. [cite_start](1ํšŒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ )
    4. [cite_start]๋งค์นญ ์‹ ์ฒญ: ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ์›ํ•˜๋Š” ๋งค์นญ(1:1 ๋˜๋Š” 2:2)์„ ์‹ ์ฒญํ•ฉ๋‹ˆ๋‹ค.
    5. [cite_start]๋งค์นญ ์™„๋ฃŒ ๋ฐ ํ™•์ธ: ๋งค์นญ์ด ์™„๋ฃŒ๋˜๋ฉด ํŒ€์›๋“ค์˜ ๋‹‰๋„ค์ž„๊ณผ ์ธ์Šคํƒ€๊ทธ๋žจ ID๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    6. [cite_start]์ปค๋ฎค๋‹ˆํ‹ฐ: ๊ฒŒ์‹œํŒ์—์„œ ๊ณผํŒ… ํ›„๊ธฐ๋‚˜ ์ž์œ ๋กœ์šด ์˜๊ฒฌ์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    7. [cite_start]์ฑ„ํŒ…: ๋งค์นญ๋œ ํŒ€์›๋“ค๊ณผ 24์‹œ๊ฐ„ ๋™์•ˆ ๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ„ํŒ…๋ฐฉ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

Slide 5: ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์ ์šฉ ๊ธฐ์ˆ 

  • ์‹œ์Šคํ…œ ๊ตฌ์„ฑ๋„

    • [cite_start]์‚ฌ์šฉ์ž ์š”์ฒญ์€ **Nginx(๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ)**๋ฅผ ํ†ตํ•ด HTTPS(SSL)๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
    • [cite_start]Docker ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋˜๋ฉฐ [cite: 3, 69][cite_start], Jenkins๋ฅผ ํ†ตํ•ด CI/CD ์ž๋™ ๋ฐฐํฌ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • [cite_start]๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋Š” Spring Framework๋กœ ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ [cite: 3, 7][cite_start], ๋ฐ์ดํ„ฐ๋Š” **AWS RDS(MySQL)**์— [cite: 3][cite_start], ๋งค์นญ ๋Œ€๊ธฐ์—ด๊ณผ ์„ธ์…˜ ๊ด€๋ฆฌ๋Š” Redis์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์ฃผ์š” ๊ธฐ์ˆ  ์Šคํƒ

    • [cite_start]Frontend: React [cite: 3, 7][cite_start], Next.js [cite: 3, 7][cite_start], TypeScript [cite: 3, 7][cite_start], Styled-components [cite: 3, 7][cite_start], Recoil
    • [cite_start]Backend: Java [cite: 3, 7][cite_start], Spring Framework [cite: 3, 7][cite_start], MySQL [cite: 3, 7][cite_start], Redis [cite: 23, 29][cite_start], QueryDSL
    • [cite_start]DevOps/Infra: AWS (RDS, S3) [cite: 3, 7][cite_start], Docker [cite: 3, 7][cite_start], Jenkins [cite: 3, 7][cite_start], Nginx
    • [cite_start]Monitoring: Grafana, Prometheus๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ–ˆ์Šต๋‹ˆ๋‹ค.

Slide 6: ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๊ณผ์ • โ‘  - ๋งค์นญ ์‹œ์Šคํ…œ

  • 1์ฐจ ๊ฐœ๋ฐœ (๋žœ๋ค ๋งค์นญ)

    • [cite_start]์‚ฌ์šฉ์ž๊ฐ€ ๋งค์นญ์„ ์‹ ์ฒญํ•˜๋ฉด Redis ๋Œ€๊ธฐ์—ด์— PENDING ์ƒํƒœ๋กœ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.
    • [cite_start]์กฐ๊ฑด(์„ฑ๋ณ„, ๋งค์นญ ํƒ€์ž…)์„ ๋งŒ์กฑํ•˜๋Š” ์œ ์ €๊ฐ€ ๋ชจ์ด๋ฉด ๋งค์นญ ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•˜๊ณ  MATCHED ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
  • 2์ฐจ ๊ฐœ๋ฐœ (์กฐ๊ฑด ๋งค์นญ - MBTI, ํ•™๋ฒˆ)

    • [cite_start]MBTI ์„ ํ˜ธ ๋งค์นญ: ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํ˜ธํ•˜๋Š” MBTI๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ์ƒํ˜ธ ๊ฐ„์˜ ์„ ํ˜ธ MBTI๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์œ ์ €๋“ค์„ ์šฐ์„ ์ ์œผ๋กœ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๋งค์นญ ๊ทธ๋ฃน์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • [cite_start]ํ•™๋ฒˆ ์„ ํ˜ธ ๋งค์นญ: ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ํ•™๋ฒˆ(์˜ˆ: 20ํ•™๋ฒˆ)์„ ์„ ํƒํ•˜๋ฉด, ํ•ด๋‹น ํ•™๋ฒˆ์˜ ยฑ1 ๋ฒ”์œ„ ๋‚ด์— ์žˆ๋Š” ์œ ์ €๋“ค์„ ํ•„ํ„ฐ๋งํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • [cite_start]์ด๋Ÿฌํ•œ ์กฐ๊ฑด ํ•„ํ„ฐ๋ง์€ Redis์—์„œ 1์ฐจ ํ•„ํ„ฐ๋ง ํ›„, ์„œ๋น„์Šค ๋กœ์ง์—์„œ 2์ฐจ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ DB ๋ถ€ํ•˜๋ฅผ ์ตœ์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋งค์นญ ์ฟจ๋‹ค์šด ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

    • [cite_start]์ •์ƒ ๋งค์นญ ์‹œ 24์‹œ๊ฐ„์˜ ์ฟจ๋‹ค์šด์„ ์ ์šฉํ–ˆ์œผ๋ฉฐ [cite: 98][cite_start], ๊ทธ๋ฃน์ด ํŒŒ๊ดด๋  ๊ฒฝ์šฐ ๋‚จ์€ ์ธ์›์˜ ์ฟจ๋‹ค์šด์€ ์ฆ‰์‹œ ํ•ด์ œํ•˜์—ฌ ์žฌ๋งค์นญ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Slide 7: ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๊ณผ์ • โ‘ก - ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…

  • [cite_start]๊ธฐ๋Šฅ ๋ชฉํ‘œ: ๋งค์นญ๋œ ์‚ฌ์šฉ์ž๋“ค์ด 24์‹œ๊ฐ„ ๋™์•ˆ ์†Œํ†ตํ•˜๋ฉฐ ์—ฐ๋ฝ์ฒ˜๋ฅผ ๊ตํ™˜ํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ฒƒ.
  • ๊ตฌํ˜„ ํ๋ฆ„:
    1. [cite_start]์ฑ„ํŒ…๋ฐฉ ์ž๋™ ์ƒ์„ฑ: ๋งค์นญ ์„ฑ๊ณต ์‹œ, MatchEvent๊ฐ€ ๋ฐœํ–‰๋˜์–ด ์ฑ„ํŒ…๋ฐฉ์„ ์ฆ‰์‹œ ์ƒ์„ฑํ•˜๊ณ  Redis์— 24์‹œ๊ฐ„ TTL๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    2. [cite_start]์—ฐ๊ฒฐ ๋ฐ ์ธ์ฆ: ํด๋ผ์ด์–ธํŠธ๋Š” WebSocket(STOMP)์œผ๋กœ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋ฉฐ, Handshake ๊ณผ์ •์—์„œ JWT ํ† ํฐ์œผ๋กœ ์ฐธ๊ฐ€ ๊ถŒํ•œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    3. [cite_start]๋ฉ”์‹œ์ง€ ๋™๊ธฐํ™”: ์„œ๋ฒ„ ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•˜์—ฌ Redis Pub/Sub ๋ชจ๋ธ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค ๊ฐ„ ๋ฉ”์‹œ์ง€๋ฅผ ๋™๊ธฐํ™”ํ•˜๊ณ  ๋ชจ๋“  ๊ตฌ๋…์ž์—๊ฒŒ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.
    4. [cite_start]์ž๋™ ๋งŒ๋ฃŒ ์ฒ˜๋ฆฌ: Redis์˜ TTL์ด ๋งŒ๋ฃŒ๋˜๋ฉด RoomExpiredListener๊ฐ€ ์ข…๋ฃŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ณ  [cite: 151][cite_start], ์ž์ • ํฌ๋ก ์œผ๋กœ ๋งค์นญ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์ข… ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

Slide 8: ์ฃผ์š” ๋„์ „ ๊ณผ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

  • Backend: Redis ํƒ€์ž… ๋ถˆ์ผ์น˜ ์—๋Ÿฌ

    • [cite_start]๋ฌธ์ œ: RedisTemplate์˜ ํƒ€์ž…์ด Object๋กœ ์„ค์ •๋˜์–ด UserEntity๋ฅผ ์ €์žฅํ•  ๋•Œ Bean ๋“ฑ๋ก ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
    • [cite_start]ํ•ด๊ฒฐ: UserEntity์— ๋งž๋Š” ํƒ€์ž…์„ ๋ช…์‹œํ•œ RedisTemplate<String, UserEntity>๋ฅผ ๋ณ„๋„๋กœ ์ƒ์„ฑํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Backend: ์ž๊ธฐ ์ž์‹ ๊ณผ ๋งค์นญ๋˜๋Š” ๋ฒ„๊ทธ

    • [cite_start]๋ฌธ์ œ: ๋งค์นญ ๋Œ€๊ธฐ์—ด ํ•„ํ„ฐ๋ง ์‹œ, ๋ณธ์ธ์„ ์ œ์™ธํ•˜์ง€ ์•Š์•„ ์ž๊ธฐ ์ž์‹ ๊ณผ ๋งค์นญ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
    • [cite_start]ํ•ด๊ฒฐ: ๋งค์นญ ํ›„๋ณด ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ์ž๊ธฐ ์ž์‹ ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ œ์™ธํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Frontend: ์ฝ”๋“œ ์ค‘๋ณต ๋ฐ ์žฌ์‚ฌ์šฉ์„ฑ ๋ฌธ์ œ

    • [cite_start]๋ฌธ์ œ: ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์— ์ค‘๋ณต๋˜๋Š” ์Šคํƒ€์ผ๊ณผ ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ๊ฐ€ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.
    • [cite_start]ํ•ด๊ฒฐ: ๊ณตํ†ต ์Šคํƒ€์ผ๊ณผ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋“ฑ์„ ๋ณ„๋„์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•˜์—ฌ [cite: 38][cite_start], ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ์ „์ฒด ์ฝ”๋“œ ์–‘์„ ์•ฝ 20% ์ค„์˜€์Šต๋‹ˆ๋‹ค.

Slide 9: ํ”„๋กœ์ ํŠธ ์„ฑ๊ณผ ๋ฐ ํ–ฅํ›„ ๊ณ„ํš

  • ํ”„๋กœ์ ํŠธ ์„ฑ๊ณผ (์ถ•์ œ ๊ธฐ๊ฐ„ ๋ฐฐํฌ)

    • [cite_start]์ด ๊ฐ€์ž…์ž ์ˆ˜: ์•ฝ 200๋ช…์˜ ํ•™์ƒ์ด ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • [cite_start]์ด ๋งค์นญ ์ˆ˜: ์ด 65ํŒ€์˜ ๋งค์นญ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.
  • ํ–ฅํ›„ ๊ฐœ๋ฐœ ๊ณ„ํš

    • [cite_start]๊ธฐ๋Šฅ ๊ณ ๋„ํ™”: ์‚ฌ์šฉ์ž ์‹ ๊ณ  ๋ฐ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ ๊ฐ•ํ™” [cite: 84, 85, 126][cite_start], OCR์„ ์ด์šฉํ•œ ํ•™์ƒ์ฆ ๋ณธ์ธ ์ธ์ฆ ๋„์ž… ๊ฒ€ํ† .
    • [cite_start]์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„ : ๋งค์นญ ํ›„ ๋งŒ๋‚จ ์žฅ์†Œ ์ถ”์ฒœ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ [cite: 86][cite_start], ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ ์„ธ๋ถ„ํ™” (์˜ˆ: ๋ฐฅ๋ชจ, ๊ฒœ๋ชจ).
    • [cite_start]UI/UX ๊ฐœ์„ : ๋””์ž์ด๋„ˆ์™€ ํ˜‘์—…ํ•˜์—ฌ ๋žœ๋”ฉ, ๋งค์นญ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ๋“ฑ์˜ ๋””์ž์ธ์„ ์ง€์†์ ์œผ๋กœ ๊ฐœ์„ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

Slide 10: Q&A

  • ์งˆ์˜์‘๋‹ต
  • ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.