๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ฐExperience

[ToyProject]'๋ญ๋จน์ง€' ๊ฐœ๋ฐœ๊ธฐ

by ๋นˆ์„ฑ_ 2021. 12. 26.
๋ฐ˜์‘ํ˜•

์•„์ด๋””์–ด๋‚˜ ๊ธฐํš์€ ์ž‘๋…„์— ํ•ด๋†จ์ง€๋งŒ 1๋…„์ด ์ง€๋‚œ ์ง€๊ธˆ์—์„œ์•ผ ์™„์„ฑํ•œ ์ฒซ ํ† ์ด ํ”„๋กœ์ ํŠธ ๋ญ๋จน์ง€(what-eat). ’๋ญ๋จน์ง€’๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉฐ ๊ฒช์—ˆ๋˜ ์ด์•ผ๊ธฐ๋ฅผ ๊ณต์œ ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๋ญ๋จน์ง€?

์ ์‹ฌ๊ณผ ์ €๋… ๋ฉ”๋‰ด๋ฅผ ์„ ๋œป ๊ณ ๋ฅด์ง€ ๋ชปํ•˜๊ณ  ํ•˜๋˜ ์ž‘์€ ๋ฏธ๋‹ˆ๊ฒŒ์ž„์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•œ์‹, ์ค‘์‹, ์–‘์‹, ์ผ์‹, ๋ถ„์‹ ์ค‘ ์˜ค๋Š˜์€ ๋จน๊ณ  ์‹ถ์ง€ ์•Š์€ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋นผ๊ณ  ๋‚จ์€ ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ๋ฉ”๋‰ด๋ฅผ ๊ณ ๋ฅด๋Š” ๋ฐฉ์‹์˜ ๊ฒŒ์ž„์ด์—ˆ์ฃ .

’๋ญ๋จน์ง€’๋Š” ๊ทธ ๊ฒŒ์ž„์„ ๊ณ ์Šค๋ž€ํžˆ ์ธํ„ฐ๋„ท์œผ๋กœ ์˜ฎ๊ฒจ๋†“์€ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

์‹คํŒจ

์‚ฌ์‹ค ๋ญ๋จน์ง€๋Š” ์ด๋ฏธ ๋ช‡ ๋ฒˆ์ด๊ณ  ์ œ repository์— ์ด๋Ÿฐ์ €๋Ÿฐ ํ˜•ํƒœ์™€ ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ž”์žฌ๊ฐ€ ๋‚จ์•„์žˆ๊ธฐ๋„ ํ•˜์ฃ . (https://github.com/wesbin/what-eat/releases/tag/v20210317) ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋„ ์ด ๋ฒ„์ „์€ ์ฐธ ๋ง˜์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹คํ–‰ํžˆ ์ €๋Š” ์—ฌ๊ธฐ์„œ ๋ฉˆ์ถœ ์ด์œ ๋Š” ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” '์‹คํŒจ’๋ฅผ ์„ฑ๊ณต์˜ ์–ด๋จธ๋‹ˆ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ด์œ ๋ฅผ ํ•œ๋ฒˆ ์ฐพ์•„๋ณด๊ธฐ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์‹คํŒจ์˜ ์ด์œ 

๊ฒฐ๋ก ์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค. ๋””ํ…Œ์ผํ•œ ๊ณ„ํš(ํ˜น์€ ๊ธฐํš)์˜ ๋ถ€์กฑ.

์‹คํŒจํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ๋“ค์„ ๋Œ์ด์ผœ ๋ณด๋ฉด ์ €๋Š” “๊ทธ๊ฑด ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ , ์ €๊ฑด ๊ทธ๋ ‡๊ฒŒ ๋งŒ๋“ค๋ฉด ๋˜๊ฒ ์ง€”๋ผ๋ฉฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ € ๋จธ๋ฆฟ์†์œผ๋กœ ์ƒ๊ฐํ•œ ๋ชฉ์—…(Mock-up) ์ˆ˜์ค€์˜ ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋ ค ํ–ˆ๋˜ ๊ฒƒ์ด์ฃ . ์ง€๊ธˆ ์ƒ๊ฐํ•˜๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋Š” ๋ป”ํ•œ ๊ฒƒ์ด์—ˆ์ฃ .

๋‹ค์‹œ ๋ญ๋จน์ง€

plan1
plan2
plan3

์ •๋ง ๋ณ„๊ฑฐ ์—†๋Š” ๊ธฐํš์„œ์ž…๋‹ˆ๋‹ค.

ํ˜ผ์ž ๋ณผ ๋• ๋ชฐ๋ž๋Š”๋ฐ ์˜ฌ๋ ค์„œ ๋ณด๋‹ˆ ๊ธ€์”จ ์ •๋ง ์•ˆ ์ด์˜๋„ค

๊ฐค๋Ÿญ์‹œ ํƒญ์— ๋จธ๋ฆฟ์†์— ์žˆ๋˜ ๋‚ด์šฉ์„ ๊บผ๋‚ด๋†“์œผ๋ฉด์„œ ๋ฐฐํฌ๋‚˜ ๊ตฌํ˜„์„ ์–ด๋–ค ์‹์œผ๋กœ ํ•  ๊ฒƒ์ธ์ง€ ์กฐ์‚ฌํ•˜๊ณ  ๋ฉ”๋ชจํ•ด๋‘” ์ˆ˜์ค€์ด์ฃ . ๊ทธ ์™€์ค‘์— ์ค‘๊ฐ„์— 3๋ฒˆ ์ •๋ˆ ์กฐ๊ธˆ์”ฉ ๋‚ด์šฉ์ด ๋ฐ”๋€Œ๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ ๊ธฐํš์„œ์ด์ง€๋งŒ ์—†๋Š” ๊ฒƒ๊ณผ ์žˆ๋Š” ๊ฒƒ์˜ ์ฐจ์ด๋Š” ์—„์ฒญ๋‚ฌ์Šต๋‹ˆ๋‹ค.

’๋ญ๋จน์ง€’๊ฐ€ ์™„์„ฑ์ด ๋˜์—ˆ์œผ๋‹ˆ๊นŒ์š”!!

์™„์„ฑ๋œ ’๋ญ๋จน์ง€’๋Š” https://wesbin.github.io/what-eat/ ์—์„œ ์ฒดํ—˜ํ•˜์‹ค ์ˆ˜ ์žˆ์œผ์‹ญ๋‹ˆ๋‹ค.


์•ž์—์„œ๋Š” ’๋ญ๋จน์ง€’๊ฐ€ ์–ด๋–ป๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋Š”์ง€ ์–˜๊ธฐํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๋Š” ’๋ญ๋จน์ง€’๋ฅผ ์‹ค์ œ๋กœ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ์ผ๋“ค์— ๋Œ€ํ•ด ์–˜๊ธฐํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ •๋ง ๋‹ค์–‘ํ•œ ์žฅ์• ๋ฌผ๋“ค์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. React.js์— ๋Œ€ํ•œ ์ƒ์†Œํ•จ, Github Pages๋ฅผ ์ด์šฉํ•œ ๋ฐฐํฌ. ์ง€๊ธˆ ์ƒ๊ฐํ•˜๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ–ˆ๋˜ ๋ชจ๋“  ์ž‘์—…๋“ค์ด ์ˆ˜์›”ํ•˜๊ฒŒ ์ง„ํ–‰์ด ๋˜์—ˆ๋˜ ์ ์ด ์—†์—ˆ๋˜ ๊ฑฐ ๊ฐ™๋„ค์š”.

๊ทธ๋Ÿฐ ์žฅ์• ๋ฌผ๋“ค ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ๋†’์•˜๋˜ ์žฅ์• ๋ฌผ์ธ Github API ๊ทธ๋ฆฌ๊ณ  Proxy๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ์ œ๊ฐ€ Github API๋ฅผ ์‚ฌ์šฉํ–ˆ๋˜ ์ด์œ ๋ฅผ ๋ง์”€๋“œ๋ ค์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Why?

’๋ญ๋จน์ง€’๋Š” Github๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜์ธ Github Pages(https://pages.github.com/)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. Github์— ์—…๋กœ๋“œ๋œ ์†Œ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ํŠน์ง•์ด ์žˆ๋‹ค๋ฉด Server-side ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์˜ค์ง ์—…๋กœ๋“œ๋œ ์ •์ ์ธ ํŒŒ์ผ๋“ค์„ ์ฝ์–ด๋‚ด์ฃ .

’๋ญ๋จน์ง€’์—์„œ๋Š” ์ถ”์ฒจ์— ์‚ฌ์šฉ๋  ๋ฉ”๋‰ด๋“ค์ด ์ €์žฅ๋  ๊ณณ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. DB ๊ฐ™์€ ๊ฒƒ๋„ ๋ฌผ๋ก  ์ข‹์ง€๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ JSON ํŒŒ์ผ์ด๋ผ๋„ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์œ„์—์„œ ๋ง์”€๋“œ๋ฆฐ Github pages์˜ ํŠน์ง• ๋•Œ๋ฌธ์— DB๋„ JSON ํŒŒ์ผ๋„ ์ด์šฉํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋•Œ ๋ˆˆ์— ๋ˆ ๊ฒŒ Github API๋ฅผ ์ด์šฉํ•˜์—ฌ Repository์˜ issue ๊ธฐ๋Šฅ์„ ์ด์šฉํ•œ ๋Œ“๊ธ€ ์„œ๋น„์Šค์˜€์Šต๋‹ˆ๋‹ค.

์ด๋•Œ ๊ทธ๋ƒฅ Cloud ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ฒ ๋‹ค๊ณ  ์„ ํƒํ–ˆ์œผ๋ฉด ์ด ๊ณ ์ƒ์„ ์•ˆ ํ–ˆ์„ ์ˆ˜๋„…

๊ทธ๋ฆฌ๊ณ  ์ €๋Š” Github API๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด์Šˆ๋ฅผ ๋Œ“๊ธ€๋กœ์„œ๊ฐ€ ์•„๋‹Œ ๋ฉ”๋‰ด๋กœ์„œ ํ™œ์šฉํ•  ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Github API

Github API(https://docs.github.com/en/rest)๋Š” ์ •๋ง ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ €๋งˆ๋‹ค์˜ ํˆด์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ๋‚˜๋ฆ„ ๊ทธ๋ ‡๊ฒŒ ๋๊ณ ์š”.

๊ทธ์ค‘์—์„œ ์ €๋Š” issue๋ฅผ ๊ฐ€์ ธ์™€ ์ฝ๊ณ , ์“ฐ๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฑด ์ •๋ง ์ƒ๊ฐ๋ณด๋‹ค ์‰ฌ์› ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋ณด๋‹ˆ ์žˆ๋„ค์š”. ์ˆ˜์›”ํ•˜๊ฒŒ ํ’€๋ฆฐ ๋ถ€๋ถ„์ด

Github API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์—์„œ URL์„ ํ™•์ธํ•˜๊ณ 

์ ๋‹นํžˆ ๋‚ ๋ ค์ฃผ๋ฉด ๋!

์•„๋ž˜์™€ ๊ฐ™์ด ์š”์ฒญํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ €๋Š” ๊ตณ์ด postman์„ ์ด์šฉํ–ˆ์ง€๋งŒ ์œ„์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•œ GET ์š”์ฒญ์ธ ๊ฒฝ์šฐ์—” ์ฃผ์†Œ์ฐฝ์— ์ž…๋ ฅํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค. POST๋‚˜ PUT, DELETE์˜ ๊ฒฝ์šฐ์—๋„ ํฌ๊ฒŒ ์–ด๋ ต์ง„ ์•Š์Šต๋‹ˆ๋‹ค. Personal access Token์„ ๋ฐœ๊ธ‰๋ฐ›์•„ Header์— Authorization: ’token [๋ฐœ๊ธ‰๋ฐ›์€ ํ† ํฐ ๋ฒˆํ˜ธ]’๋งŒ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ์ˆ˜์›”ํ•˜๊ฒŒ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฑด ์–ด๋””๊นŒ์ง€๋‚˜ ’๊ฐœ์ธ’์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ €์˜ ๊ฒฝ์šฐ์—” ๋‹ค๋ฅธ ์ด์šฉ์ž์˜ ๊ณ„์ • ์ •๋ณด ์ฆ‰, ๋กœ๊ทธ์ธ ๋™์ž‘์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ๊ทธ ๋…€์„์ด ๋“ฑ์žฅํ•˜์ฃ . CORS…

ใ…๋‚˜ใ…ฃใ…“ใ…‡ใ„น ใ…ใ…ฃ;ใ…ใ„ดใ…‡ใ„น

CORS

Cross-Origin Resource Sharing(๊ต์ฐจ ์ถœ์ฒ˜ ๋ฆฌ์†Œ์Šค ๊ณต์œ )๋Š” SOP(Same-Origin Policy)์™€ ์ง์„ ์ด๋ฃจ๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. SOP๋Š” ๋ง ๊ทธ๋Œ€๋กœ “๊ฐ™์€ ์ถœ์ฒ˜์—์„œ๋งŒ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค”๋ผ๋Š” ์ •์ฑ…์ธ๋ฐ ์›น์—์„œ ๋‹ค๋ฅธ ์ถœ์ฒ˜์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ”ํ•œ ์ผ์ด์ฃ . ๊ทธ๋ ‡๊ธฐ์— ์˜ˆ์™ธ ์กฐํ•ญ์„ ๋‘๊ธฐ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์ค‘ ํ•˜๋‚˜๊ฐ€ “CORS ์ •์ฑ…์„ ์ง€ํ‚จ ๋ฆฌ์†Œ์Šค ์š”์ฒญ”์ž…๋‹ˆ๋‹ค. ์ƒ๋žต(CORS์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ด์•ผ๊ธฐ๋Š” ๋‹ค๋ฅธ ๊ธ€์—์„œ ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.) ~

CORS ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€

์ œ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฑด

๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ Access-Control-Allow-Origin์„ ์„ธํŒ…ํ•ด์ฃผ๊ฑฐ๋‚˜ proxy๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์ฃ . ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์ œ๊ฐ€ Github์— ์š”์ฒญํ•ด ์–ป๊ฑฐ๋‚˜

์ณ๋“ค์–ด๊ฐ€์„œ

์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ž์—ฐ์Šค๋ ˆ ๋‚จ๋Š” ๊ฑด proxy์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

proxy server

proxy ์„œ๋ฒ„๋Š” ์ค‘๊ณ„ ์„œ๋ฒ„, ๋‚˜์™€ ์ƒ๋Œ€๋ฐฉ(์ถœ์ฒ˜์™€ ์ถœ์ฒ˜) ์‚ฌ์ด์— ์š”์ฒญ์„ ๋ฐ›๊ณ  ์ „๋‹ฌํ•ด์ฃผ๋Š” ์„œ๋ฒ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋ ค ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜์ง€๋งŒ ์›น ํ˜น์€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์†์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ €ํฌ๊ฐ€ ๋ณด๋‚ด๋Š” ์š”์ฒญ์„ ๋งˆ์น˜ CORS ์ •์ฑ…์„ ์ง€ํ‚จ ๊ฒƒ์ฒ˜๋Ÿผ ์œ„์žฅํ•ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์†์ด๋Š” ๊ฒƒ์ด์ฃ .(proxy์— ๊ด€ํ•œ ์ด์•ผ๊ธฐ๋„ ๋‹ค๋ฅธ ๊ธ€์—์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.)

proxy ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ package.json ์žˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด proxy๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ €์˜ ๊ฒฝ์šฐ์—” github pages๋ฅผ ์ด์šฉํ•ด ๋ฐฐํฌ๋ฅผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐฉ๋ฒ•์€ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•ด์„œ ์ €๋Š” azure์˜ App service๋ฅผ ์ด์šฉํ•ด Node ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌ๋ฅผ ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

{
    "name": ~~~,
    "version": ~~~,
    "proxy": "https://api.github.com",
    ~~~
}

 

์ œ๊ฐ€ azure์— ๋ฐฐํฌํ•œ proxy ์„œ๋ฒ„์˜ ์†Œ์Šค๋Š” ์ด๊ณณ(https://github.com/wesbin/github-proxy)์—์„œ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ ๋ณด์…จ๋‹ค๋ฉด ์•„์‹œ๊ฒ ์ง€๋งŒ ์ •๋ง ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํฌ์ธํŠธ๋Š” app.js์—์„œ ์‚ฌ์šฉํ•œ cors ๋ฏธ๋“ค์›จ์–ด์— ์žˆ์ฃ . ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ CORS ์š”์ฒญ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋“ค์›จ์–ด์ž…๋‹ˆ๋‹ค. ์ €์˜ ๊ฒฝ์šฐ์—” ๋‹ค๋ฅธ ์„ค์ • ์—†์ด ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ๋‹ค์–‘ํ•œ ์„ค์ • ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋‹ˆ ์ฐพ์•„์„œ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์™„์„ฑ

๊ทธ๋ ‡๊ฒŒ ์ œ ์ฒซ ํ† ์ด ํ”„๋กœ์ ํŠธ์ธ ๋ญ๋จน์ง€๊ฐ€ ์™„์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‘์„œ์—†์ด ์ญˆ์šฑ ์ ๊ณ  ๋ณด๋‹ˆ ๊ณผ์—ฐ ์ด ๊ธ€์ด ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์„๊นŒ ์‹ถ๋„ค์š”. ใ… ใ… 

์ €์˜ ๊ธ€์žฌ์ฃผ๊ฐ€ ๋ชจ์ž๋ž€ ๊ฑด์ง€, ๋ฏธ๋ฃจ๊ณ  ๋ฏธ๋ฃจ๋‹ค ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚œ 2๋‹ฌ์ด๋‚˜ ์ง€๋‚œ ์‹œ์ ์—์„œ ์ด ๊ธ€์„ ์“ฐ๊ณ  ์žˆ์–ด ๊ทธ๋•Œ์˜ ๊ฐ์ •์ด ์‚ฌ๋ผ์ง„ ๊ฑด์ง€. ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ๊ณ ์ƒ๋“ค์ด ์ž˜ ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๋Š” ๋Š๋‚Œ์ด ์žˆ๋„ค์š”.

๊ทธ๋ž˜๋„ ์ ์–ด๋„ ์ €์—๊ฒŒ๋Š” ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ๊ณ ์ƒ๋“ค์ด ์ œ ๊ฐœ๋ฐœ ์ด์•ผ๊ธฐ์— ํฐ ๋„์›€์ด ๋  ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์ด ๊ธ€์„ ์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์–ด์ฃผ์‹  ๋ถ„๋“ค์ด ์žˆ๋‹ค๋ฉด ๊ทธ๋ฆฌ๊ณ  ์•„์ง ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด์ง€ ์•Š์œผ์…จ๋‹ค๋ฉด

๊ผญ! ํ•ด๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋Œ€์‹  ๊ณ„ํš์€ ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ์žก์•„๋ณด์„ธ์š”. ์ƒ๊ฐ๋ณด๋‹ค ๋” ํž˜๋“œ๋‹ˆ๊นŒ์š”.

๊ธ€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€