JiwonDev

๋ฐฑ์—”๋“œ ์ธํ”„๋ผ #1 ์†Œ๊ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋งŒ๋“ค๊ธฐ

by JiwonDev

ํ•ด๋‹น๊ธ€์€ ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ํ‘ธ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ฐฑ์—”๋“œ ์‹œ์Šคํ…œ ์‹ค๋ฌด๋ฅผ ์ œ ์ž…๋ง›๋Œ€๋กœ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์–ธ์–ด๋Š” ์•„๋‹ˆ์ง€๋งŒ, ๊ฐœ๋ฐœ๊ณผ ์„œ๋ฒ„ ์ธํ”„๋ผ ๊ตฌ์„ฑ์„ ๋„์™€์ฃผ๋Š” ๋„๊ตฌ๋“ค.

 

 

๐Ÿ“Œ ๊ฐœ๋ฐœ๊ณผ ์ธํ”„๋ผ

๊ฐœ๋ฐœ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด, ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ์ข‹์€ ์•„ํ‚คํ…์ฒ˜์— ๊ด€ํ•ด์„œ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‹ค์ œ ์„œ๋น„์Šค์—์„œ๋Š” ๋งž์ดํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋Š” ๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์—ˆ๋Š”์ง€, ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ–ˆ๋Š”์ง€ ๋ณด๋‹ค๋Š” ์„œ๋ฒ„ ๋ฐฐํฌ, ์™ธ๋ถ€ API ํ˜ธ์ถœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์—์„œ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

A Chain is only as strong as its weakest link

์ฒด์ธ๐Ÿ”—์„ ์•„๋ฌด๋ฆฌ ํŠผํŠผํ•œ ์žฌ๋ฃŒ๋กœ ๋„๋ฐฐํ•œ๋‹ค๊ณ  ํ•œ๋“ค, ์ œ์ผ ์•ฝํ•œ ๊ณ ๋ฆฌ๊ฐ€ ๋Š์–ด์ง€๋ฉด ์ „์ฒด๊ฐ€ ๋Š์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ฝ”๋“œ๊ฐ€ ์™„๋ฒฝํ•˜๋‹ค๊ณ  ํ•ด๋„ ์„œ๋น„์Šค ๋ฐฐํฌ, ์ธํ”„๋ผ ๊ตฌ์„ฑ์ด ์ œ๋Œ€๋กœ ๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

 

์žฅ์•  ์—†๋Š” ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ ์ตœ๊ณ ๋ผ๊ณ  ๋ถˆ๋ฆฌ์šฐ๋Š” ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ ๊ฐ™์€ ๋Œ€๊ธฐ์—…๋„ ๋งค๋…„ ๋ช‡ ๋ฒˆ์˜ ํฌ๊ณ  ์ž‘์€ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ“Œ ๋ฌด์—‡์„ ๋ฐฐ์šฐ๋Š”๊ฐ€

๋ฐฑ์—”๋“œ ์ธํ”„๋ผ๋Š” ์„œ๋น„์Šค๋งˆ๋‹ค ๊ตฌ์„ฑ์ด ๋‹ค ๋‹ค๋ฅด๋ฉฐ ์„œ๋น„์Šค๊ฐ€ ํ™•์žฅํ•ด๊ฐ€๋ฉฐ ์ ์  ๋” ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

์ฆ‰ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ๊ตฌ์„ฑ์„ ๋ณด๊ณ  ๊ทธ๋Œ€๋กœ ๋”ฐ๋ผ ๋งŒ๋“œ๋Š” ๊ฑด ๋ณ„ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ๋„๊ตฌ๋“ค๊ณผ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์—ญํ• ์ด ๋ฌด์—‡์ด๊ณ , ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€๋ฅผ ๋ฐฐ์›Œ์•ผํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์„œ๋ฒ„ ๊ตฌ์„ฑ ( ์ถœ์ฒ˜ https://github.com/f-lab-edu/make-delivery )
SaaS (Software as a Service) ํ˜•ํƒœ์˜ ์ „ํ˜•์ ์ธ ํด๋ผ์šฐ๋“œ ์•ฑ ๋ฐฑ์—”๋“œ ๊ตฌ์„ฑ ( ์ถœ์ฒ˜ https://gitple.io/ko/techstack_backend )

 

 

๐Ÿ“Œ ์–ธ์ œ ๊ณต๋ถ€ํ•ด์•ผ ํ• ๊นŒ์š”?

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ์ฐธ ๋ฐฐ์šธ ๊ฒƒ๋„ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋‹น์žฅ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ๋„ ๋ฐ”์œ๋ฐ, ์ธํ”„๋ผ๋Š” ์–ธ์ œ ๋ฐฐ์šฐ๋Š”๊ฒŒ ๋งž์„๊นŒ์š”?

์—ฌ๊ธฐ์— ๋Œ€ํ•ด ์‚ด์ง ํžŒํŠธ๋ฅผ ๋“œ๋ฆฌ์ž๋ฉด, ๊ฐœ๋ฐœ ๊ณต๋ถ€ํ•˜์‹œ๋‹ค ์•„๋ž˜์™€ ๊ฐ™์€ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ธด๋‹ค๋ฉด ์ธํ”„๋ผ๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์›น ์„œ๋น„์Šค์— ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ๋‹นํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•œ ๊ฒฝ์šฐ
  • ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ, ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ์„œ๋น„์Šค์— ์ ์šฉํ•ด๋ณด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
  • ์„œ๋น„์Šค์— ๊ฒ€์ƒ‰์—”์ง„์„ ์ ์šฉํ•ด๋ณด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
  • ์žฅ์•  ์—†๋Š” ์‹œ์Šคํ…œ์„ ๋ชฉํ‘œ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ

 

 

๐Ÿ“Œ ํ…Œ์ŠคํŠธ์šฉ ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ

์ธํ”„๋ผ๋ฅผ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋ ค๋ฉด, ๋จผ์ € ์›น ์„œ๋น„์Šค๊ฐ€ ์žˆ์–ด์•ผ๊ฒ ์ฃ ? ์•„๋ž˜์˜ ์˜ˆ์ œ์— ๋”ฐ๋ผ ์ฒœ์ฒœํžˆ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

 

1. GCP (Google Cloud Platform) ๊ณ„์ • ๋ฐ ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

๋”๋ณด๊ธฐ
[๋ฆฌ์ „์€ ์„œ์šธ], [๋จธ์‹ ์œ ํ˜•์€ e2-micro], [๋ถ€ํŒ…๋””์Šคํฌ๋Š” CentOS7], [๋ฐฉํ™”๋ฒฝ์€ HTTP,HTTPS ํ—ˆ์šฉ]์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ์ž
๋†€๋ž๊ฒŒ๋„ ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค๋ฉด ์„ค์ • ๋์ด๋‹ค. ํ„ฐ๋ฏธ๋„๊นŒ์ง€ ์›น์œผ๋กœ ์ œ๊ณตํ•ด์ค€๋‹ค.

 

 

2. Docker ์„œ๋ฒ„ ๋„์šฐ๊ธฐ

๋‚ด PC๊ฐ€ ์œˆ๋„์šฐ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ๋„์ปค๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋„๋ก Docker Destop์„ ์„ค์น˜ํ•˜๋Š” ๊ฑธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋งŒ ์œˆ๋„์šฐ์˜ ๊ฒฝ์šฐ WSL2๋ฅผ ์„ค์น˜ํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ์˜ค๋ฅ˜(...)๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์–ด์„œ ์•ˆ๋˜๋ฉด ๊ตณ์ด ์„ค์น˜์•ˆํ•ด๋„ ์ง„ํ–‰์€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜ƒ

๊ทธ๋ฆฌ๊ณ  ์œ„์—์„œ ์„ค์น˜ํ•œ GCP ์ฝ˜์†”์— ๋“ค์–ด๊ฐ€ ์„œ๋ฒ„์— docker๋ฅผ ์„ค์น˜ํ•ด์ฃผ์„ธ์š”.

CentosOS7 ๊ธฐ์ค€ ๋ช…๋ น์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.
sudo yum install docker (๋„์ปค ์„ค์น˜)
sudo systemctl start docker (๋„์ปค ์‹คํ–‰)
sudo docker run -d -p 80:80 docker/getting-started (์•„๋ž˜ ์ด๋ฏธ์ง€์— ์„ค๋ช…)

๋”๋ณด๊ธฐ

Docker Destop = Docker + GUI

https://www.docker.com/products/docker-desktop

 

Docker Desktop for Mac and Windows | Docker

Learn why Docker Desktop is the preferred choice for millions of developers building containerized applications. Download for Mac or Windows.

www.docker.com

 ์„ค์น˜ํ•˜๋Š”๋ฐ 3๋ถ„์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์„ค์น˜๋ฅผ ๋ˆŒ๋Ÿฌ๋†“๊ณ  ์•„๋ž˜ ์„ค๋ช…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋  ๋“ฏํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ“Œ Docker๋Š” 1์ดˆ๋งŒ์— ์ƒˆ๋กœ์šด ๋ฆฌ๋ˆ…์Šค๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒํ™” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ์‹œ์Šคํ…œ์ด๋„ˆ ์„œ๋ฒ„์˜ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋‹ด์•„ ๊ฐ€์ƒ๋จธ์‹ (VM)์— ์‹คํ–‰ํ•˜๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์‹คํ–‰ ์ค‘์ธ ํ™˜๊ฒฝ์— ์ƒ๊ด€์—†์ด ์–ธ์ œ๋‚˜ ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰ ๋  ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

 

๊ธฐ์กด์— ์žˆ๋˜ ๊ฐ€์ƒํ™”(VMware)๋ณด๋‹ค Docker๊ฐ€ ์ฃผ๋ชฉ ๋ฐ›๋Š” ์ด์œ ์€, [ํ”„๋กœ์„ธ์Šค ์•ˆ์— ๊ฐ€์ƒOS]๋ฅผ ๋งŒ๋“œ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์•„์˜ˆ ์‹œ์Šคํ…œ OS ์ˆ˜์ค€์œผ๋กœ ๊ฐ€์ƒํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ์ด ๋†’๊ณ  OS์˜ ๊ณตํ†ต๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆ๋งˆ๋‹ค ์ƒˆ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ Docker Image๋ž€ ์„œ๋น„์Šค ์šด์˜์— ํ•„์š”ํ•œ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ, ์ฝ”๋“œ, ์‹คํ–‰ํŒŒ์ผ์„ ๋ชจ์€ ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (MB~GB ํฌ๊ธฐ)
๋„์ปค ์ด๋ฏธ์ง€์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์ด๋ฏธ์ง€๋Š” ์ƒˆ๋กญ๊ฒŒ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Image Layer ๊ฐœ๋…์„ ๋„์ž…ํ•ด ์ปจํ…Œ์ด๋„ˆ๋“ค์€ ์ฝ๊ธฐ์ „์šฉ ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•˜์—ฌ (ubuntu -> nginx -> web app) ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  ์ด๋ฏธ์ง€ ์ž์ฒด๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ๋„ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ค‘์ธ ubuntu์™€ nginx ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด, ๋ ˆ์ด์–ด๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๊ฐ€ ๋งŒ๋“ค web app ์ด๋ฏธ์ง€๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

3. ์ž๋ฐ” ์›น ์„œ๋ฒ„ ๋„์šฐ๊ธฐ

์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Tomcat ์›น ์„œ๋ฒ„๋ฅผ ๋‚ด์žฅํ•œ ์ž๋ฐ” ์••์ถ• ํŒŒ์ผ(JAR)๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Gradle์ด๋‚˜ Maven์„ ์‚ฌ์šฉ์ค‘์ด๋ผ๋ฉด ์†์‰ฝ๊ฒŒ ๋ฐฐํฌ์šฉ JARํŒŒ์ผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋ ต์ง€ ์•Š์œผ๋‹ˆ ์ง์ ‘ ์ฐพ์•„๋ณด๊ธธ ๋ฐ”๋ž˜์š”.

 

๊ทธ๋ฆฌ๊ณ  ๋งŒ๋“ค์–ด์ง„ JAR๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ JVM์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

java -jar MyProjcet.jar

 

์œ„์—์„œ Docker ์„œ๋ฒ„๋ฅผ ๋„์› ๋˜ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ GCP ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

๊ทธ๋ฆฌ๊ณ  wget๊ณผ java๋ฅผ ์„ค์น˜ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

sudo yum install wget
sudo yum install java

 

๋งŒ๋“ค์–ด์ง„ JAR ํŒŒ์ผ์„ 1. GCP ์›น ์„œ๋ฒ„๋กœ ์˜ฎ๊ธฐ๋Š”๊ฒŒ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” Github์— ์—…๋กœ๋“œํ•˜๊ณ  wget์œผ๋กœ jar ๋งํฌ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์œผ๋ฉด ์‰ฝ๊ฒŒ ๊ณต์œ  ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๊ฐ•์˜์—์„œ ๋‚˜์˜จ ์•„๋ž˜์˜ ์˜ˆ์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

wget https://github.com/lleellee0/class101-files/raw/main/cpu-0.0.1-SNAPSHOT.jar
java -jar ๋‹ค์šด๋ฐ›์€ํŒŒ์ผ.jar ( ls ๋ช…๋ น์–ด๋กœ ํ˜„์žฌ ์œ„์น˜์˜ ํŒŒ์ผ์„ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)

 

์ด๋ ‡๊ฒŒ JAR ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋กœ์ปฌ๊ณผ ๋˜‘๊ฐ™์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. GCP ์—์„œ ์ œ๊ณตํ•˜๋Š” ์™ธ๋ถ€ ์•„์ดํ”ผ๋กœ ์ ‘์† ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

* ํฌ๋กฌ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ HTTPS๋กœ ์ ‘์†ํ•˜๋„๋ก ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ํฌํŠธ๋ฅผ 80์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ฃผ์†Œ๋ฅผ HTTP๋กœ ๋ฐ”๊ฟ”์ฃผ์„ธ์š”.

http://์™ธ๋ถ€์•„์ดํ”ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋‚ด๊ฐ€ ๋งŒ๋“  ์Šคํ”„๋ง ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ