HOME
home
Team
home

๋งˆ์ผ“๋‚˜์™€

ย ๋‚ด๊ฐ€ ๊ธฐ์—ฌํ•œ ๋ถ€๋ถ„

โ€ข
GitHub Actions์™€ AWS Elastic Beanstalk๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์†์  ํ†ตํ•ฉ ๋ฐ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•
โ€ข
CORS ์ฒ˜๋ฆฌ
โ€ข
OpenAI API๋ฅผ ํ™œ์šฉํ•˜์—ฌ PR ์‹œ GPT๊ฐ€ ์ฝ”๋“œ๋ฆฌ๋ทฐ ํ•ด์ฃผ๋„๋ก ์„ค์ •
โ€ข
GitHub์„ ํ†ตํ•œ ํ˜•์ƒ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰, ๋ธŒ๋žœ์น˜ ์ „๋žต ๊ณ„ํš, ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜, PR ์ปจ๋ฒค์…˜, ์ฝ”๋“œ ์ปจ๋ฒค์…˜ ์„ค์ •

ย ์‚ฌ์šฉ ๊ธฐ์ˆ 

โ€ข
DataBase
โ—ฆ
ElasticSearch
โ€ข
BackEnd
โ—ฆ
Kotlin / Spring Boot / Spring Data JPA
โ€ข
DevOps
โ—ฆ
Docker / GitHub Actions / AWS(Elastic Beanstalk, EC2, Lambda, S3, Route53)
โ€ข
Software Architecture Pattern
โ—ฆ
Monolithic Architecture
โ€ข
FrontEnd
โ—ฆ
HTML / CSS / JavaScript / Vue.js
โ€ข
Collaboration
โ—ฆ
GitHub / Slack / Notion / Figma / Miro / Jira

System Architecture

MarketNawa System Architecture

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… 1

๋ฌธ์ œ ๋ฐฐ๊ฒฝ

์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ ๋ฐ์ดํ„ฐ๋ฅผ ํฌ๋กค๋งํ•˜๋Š” ๋„์ค‘, ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋ฐœ์ƒํ•œ Unknown Host ์—๋Ÿฌ๋ฅผ ๊ฒฝํ—˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์™€ Test-NetConnection์„ ์‚ฌ์šฉํ•œ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์˜€์œผ๋‚˜, ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ lookup ๊ณผ์ •์—์„œ DNS ์ฟผ๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
์œˆ๋„์šฐ์—์„œ nslookup ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด DNS ์„œ๋ฒ„์™€์˜ ํ†ต์‹ ์„ ํ™•์ธํ–ˆ์œผ๋‚˜, ๊ธฐ๋Œ€ํ•œ ์‘๋‹ต์„ ์–ป์ง€ ๋ชปํ–ˆ์œผ๋ฉฐ, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ฐ ์ธํ„ฐ๋„ท ์ ‘์† ํ…Œ์ŠคํŠธ๋Š” ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ์›์ธ์œผ๋กœ๋Š” ๋ฐฉํ™”๋ฒฝ ์„ค์ •์ด๋‚˜ DNS ์บ์‹œ ๋ฌธ์ œ๋ฅผ ์˜์‹ฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1.
DNS ์„œ๋ฒ„ ์„ค์ • ํ™•์ธ: DNS ์„œ๋ฒ„ ์„ค์ •์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•˜์˜€๊ณ , ๋ธŒ๋ผ์šฐ์ €์™€ ์ธํ„ฐ๋„ท ์ ‘์† ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋ฌธ์ œ๊ฐ€ DNS ์„œ๋ฒ„ ์ž์ฒด์— ์žˆ์ง€๋Š” ์•Š์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
2.
๋ฐฉํ™”๋ฒฝ ์„ค์ • ํ™•์ธ: ๋ฐฉํ™”๋ฒฝ์ด DNS ์ฟผ๋ฆฌ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•˜๋Š” ์ƒํ™ฉ์„ ๊ณ ๋ คํ•˜์—ฌ, ํŠนํžˆ UDP 53๋ฒˆ ํฌํŠธ๊ฐ€ ์ฐจ๋‹จ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์›ƒ๋ฐ”์šด๋“œ ๊ทœ์น™์—์„œ ์ด์™€ ๊ด€๋ จ๋œ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉํ™”๋ฒฝ ์„ค์ •์„ ์ ๊ฒ€ํ•˜๊ณ  ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
3.
DNS ์บ์‹œ ๋ฌธ์ œ ํ•ด๊ฒฐ: ๋กœ์ปฌ์—์„œ ipconfig/flushdns ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด DNS ์บ์‹œ๋ฅผ ๋น„์šฐ๊ณ  ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•˜์˜€์œผ๋‚˜ ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด DNS ์บ์‹œ ๋ฌธ์ œ๋Š” ์›์ธ์ด ์•„๋‹˜์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.
4.
๋ณด์•ˆ ๊ทธ๋ฃน ์„ค์ • ํ™•์ธ: AWS ๋ณด์•ˆ ๊ทธ๋ฃน์—์„œ ์•„์›ƒ๋ฐ”์šด๋“œ ๊ทœ์น™์ด ๋ชจ๋“  TCP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์˜€๊ณ , ์ด๋ฅผ ํ†ตํ•ด DNS ํŠธ๋ž˜ํ”ฝ์ด ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์„  ๊ฒฐ๊ณผ

โ€ข
์•„์›ƒ๋ฐ”์šด๋“œ ๊ทœ์น™์—์„œ ๋ชจ๋“  TCP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋„๋ก ๋ณด์•ˆ ๊ทธ๋ฃน ์„ค์ •์„ ์ˆ˜์ •ํ•œ ํ›„, DNS ์ฟผ๋ฆฌ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
โ€ข
Unknown Host ์—๋Ÿฌ๋Š” ๋” ์ด์ƒ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๊ณ , ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•œ DNS ์กฐํšŒ๊ฐ€ ์›ํ™œํ•˜๊ฒŒ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค.
โ€ข
๋ฐฉํ™”๋ฒฝ ์„ค์ •์„ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ, DNS ์ฟผ๋ฆฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ํฌ๋กค๋ง ๊ธฐ๋Šฅ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ฒฝํ—˜์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋œ ์ 

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

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… 2

๋ฌธ์ œ ๋ฐฐ๊ฒฝ

Elasticsearch๋ฅผ AWS EC2์— ์„ค์ •ํ•œ ํ›„, ํ”„๋ฆฌํ‹ฐ์–ด(t2.micro) ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰ํ•˜๋ ค ํ–ˆ์ง€๋งŒ ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š๊ณ  ๊ณ„์†ํ•ด์„œ ์‹คํŒจํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. systemctl status elasticsearch์™€ journalctl ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•œ ๊ฒฐ๊ณผ, Elasticsearch๊ฐ€ ์ œ๋Œ€๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ฆฌํ‹ฐ์–ด์˜ ์ œํ•œ๋œ ๋ฆฌ์†Œ์Šค(RAM 1GB)๋กœ ์ธํ•ด Elasticsearch๊ฐ€ ์š”๊ตฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์„ ๊ฐ๋‹นํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์˜ ์›์ธ์œผ๋กœ ์ถ”์ธกํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1.
RAM ํ™•์ธ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ: ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์ด ๋ฌธ์ œ์˜ ์›์ธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„, ํ”„๋ฆฌํ‹ฐ์–ด์—์„œ ์ œ๊ณต๋˜๋Š” RAM(1GB) ๋Œ€์‹  4GB RAM์„ ์ œ๊ณตํ•˜๋Š” ์ธ์Šคํ„ด์Šค ํƒ€์ž…(t2.medium)์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
2.
Elasticsearch ์žฌ์„ค์น˜ ๋ฐ ์„ค์ • ์ตœ์ ํ™”: ๊ธฐ์กด ์„ค์น˜๋œ Elasticsearch๋ฅผ ์™„์ „ํžˆ ์ œ๊ฑฐํ•˜๊ณ , ๋‹ค์‹œ ์„ค์น˜ํ•œ ํ›„ ์„ค์ • ํŒŒ์ผ์„ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. network.host ์„ค์ •์„ 0.0.0.0์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ์™ธ๋ถ€ ์ ‘์†์„ ํ—ˆ์šฉํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
3.
์„œ๋น„์Šค ์žฌ์‹œ์ž‘ ๋ฐ ์ƒํƒœ ํ™•์ธ: ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ ์šฉํ•œ ํ›„ Elasticsearch ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์„  ๊ฒฐ๊ณผ

RAM์„ 4GB๋กœ ํ™•์žฅํ•œ ํ›„ Elasticsearch๋Š” ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ๊ณ , ๋กœ๊ทธ ํŒŒ์ผ์—์„œ ๋” ์ด์ƒ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๊ด€๋ จ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋Š” ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ–ˆ๊ณ , ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด http://ec2-3-35-54-47.ap-northeast-2.compute.amazonaws.com:9200๋กœ ์ ‘์†ํ•ด Elasticsearch๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ฒฝํ—˜์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋œ ์ 

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

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… 3

๋ฌธ์ œ ๋ฐฐ๊ฒฝ

๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ๊ณผ์ •์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ, AWS Elastic Beanstalk ํ™˜๊ฒฝ์—์„œ ๋ฐฐํฌ ์‹œ Java ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ œ๋Œ€๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š๊ณ , CORS ๊ด€๋ จ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ํ”„๋ก ํŠธ์—”๋“œ์—์„œ API ์š”์ฒญ์ด ์ฐจ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด ๋ˆ„๋ฝ๋˜์–ด ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1.
ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘ ๋ฌธ์ œ ํ•ด๊ฒฐ: 00-makeFiles.config ํŒŒ์ผ์„ ์ ๊ฒ€ํ•œ ๊ฒฐ๊ณผ, ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ œ๋Œ€๋กœ ์„ค์ •๋˜์ง€ ์•Š์•˜์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด java -Dloader.main=marketnawa.be.ott.marketnawabe.MarketNawaBeApplicationKt -Dfile.encoding=UTF-8 -jar $JAR_PATH ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜๋„๋ก ์„ค์ •์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
2.
CORS ๋ฌธ์ œ ํ•ด๊ฒฐ: Kotlin์—์„œ CORS ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํŠน์ • ๋„๋ฉ”์ธ์—์„œ๋งŒ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ CORS ์„ค์ •์ด ๋ˆ„๋ฝ๋˜์–ด API ํ˜ธ์ถœ์ด ์ฐจ๋‹จ๋˜์—ˆ์Œ์„ ์ธ์ง€ํ•˜๊ณ , ์„ค์ • ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
3.
ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • ์˜ค๋ฅ˜ ์ˆ˜์ •: ๋ฐฐํฌ ํ™˜๊ฒฝ์— ํ•„์š”ํ•œ ์™ธ๋ถ€ ์„œ๋น„์Šค์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ œ๋Œ€๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์„ ์žฌ๊ฒ€ํ† ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฐ’์„ ๋ชจ๋‘ ์ง€์ •ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ์กฐ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์„  ๊ฒฐ๊ณผ

โ€ข
ํ”„๋ก ํŠธ์—”๋“œ์—์„œ์˜ API ์š”์ฒญ์ด ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๊ณ , CORS ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ€ข
๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ๊ณผ์ •์˜ ์•ˆ์ •์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ฒฝํ—˜์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋œ ์ 

โ€ข
ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด ๋ฐฐํฌ์˜ ํ•ต์‹ฌ ์š”์†Œ์ž„์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์™ธ๋ถ€ ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ ์‹œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •ํ™•ํžˆ ์„ค์ •ํ•ด์•ผ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข
๋ฐฐํฌ ํ™˜๊ฒฝ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•œ ์„ค์ •์ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๋Š” ์ ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์ •์ƒ ๋™์ž‘ํ•˜๋”๋ผ๋„, ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ์ถ”๊ฐ€์ ์ธ ์„ค์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ์„ ์ธ์ง€ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ€ข
ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ๊ณผ์ •์—์„œ ๋กœ๊ทธ์™€ ์„ค์ • ํŒŒ์ผ์„ ๊ผผ๊ผผํžˆ ์ ๊ฒ€ํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
makeFiles.configํŒŒ์ผ
CorsConfig ํŒŒ์ผ

๐Ÿซก ํšŒ๊ณ 

โ€œ๋ฌธ์ œ ํ•ด๊ฒฐ์˜ ๋ณธ์งˆ์„ ๊นจ๋‹ฌ์œผ๋ฉฐ ์„ฑ์žฅํ•˜๋Š” ๊ณผ์ •โ€
๋งˆ์ผ“๋‚˜์™€ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ๊ณผ ํ™˜๊ฒฝ์—์„œ์˜ ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ํ•˜๊ณ  ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ์ค‘์š”ํ•œ ๊ธฐํšŒ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ์  ๋„์ „๊ณผ ์žฅ์• ๋ฅผ ๊ฒช์—ˆ์ง€๋งŒ, ๊ทธ ๊ณผ์ •์—์„œ ๋ฐฐ์šด ์ ์€ ์•ž์œผ๋กœ์˜ ๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ์—ญ๋Ÿ‰์„ ๋”์šฑ ๊ฐ•ํ™”์‹œ์ผœ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ๋ฌธ์ œ ํ•ด๊ฒฐ, ์ธํ”„๋ผ ์ตœ์ ํ™”, ๊ทธ๋ฆฌ๊ณ  ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ์˜ ์„ธ๋ถ€์ ์ธ ์„ค์ • ๊ด€๋ฆฌ์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ์š”์†Œ๋“ค์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฐ’์ง„ ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค.