Giter Club home page Giter Club logo

book-report's Introduction

๐Ÿ“ [ ๋…ํ›„๊ฐ ] ์„ธ์ƒ์„ ์ง€๋ฐฐํ•˜๋Š” ๋‹ค์„ฏ ๊ฐ€์ง€ ํ˜‘๋ ฅ์˜ ๋ฒ•์น™ ์ดˆ ํ˜‘๋ ฅ์ž - ๋งˆํ‹ด ๋…ธ์™, ๋กœ์ € ํ•˜์ดํ•„๋“œ

โœ๏ธ ์„œ๋ก 

์ด ์ฑ…์„ ์ฝ๊ฒŒ ๋œ ๊ณ„๊ธฐ๋Š” ๊ณต๋ถ€์Šต๊ด€์„ ๊ธธ๋Ÿฌ์ฃผ๋Š” ์˜คํ”ˆ ์นดํ†ก๋ฐฉ์—์„œ ์—ฌ๋Ÿฌ ์ฑ…์„ ์ถ”์ฒœ๋ฐ›์•˜์—ˆ๋Š”๋ฐ, ์ด ์ฑ…์ด ์•Œ๋ผ๋”˜ ์ค‘๊ณ ์„œ์ ์—์„œ ์œ ์ผํ•˜๊ฒŒ ์žฌ๊ณ ๊ฐ€ ๋‚จ์€ ์ฑ…์ด์—ˆ๋‹ค. ์ •๊ฐ€์—์„œ ์•ฝ 50% ํ• ์ธํ•ด์„œ ๊ตฌ๋งคํ–ˆ๋Š”๋ฐ, ์ „์ฒด์ ์ธ ๋‚ด์šฉ์€ ํ˜‘๋ ฅ์„ ์ƒ๋ฌผํ•™, ์‹ฌ๋ฆฌํ•™ ๊ด€์ ์—์„œ ๋‹ค๋ฃฌ ์ฑ…์ด๋‹ค. ํ•จ๊ป˜ ์ผํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด ๋‚˜์˜ ๋ชฉํ‘œ์ธ๋ฐ, ์ด ์ฑ…์€ ํŒ€์›๋“ค์—๊ฒŒ ์–ด๋–ค ๋งˆ์Œ๊ฐ€์ง์œผ๋กœ ์ž„ํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ๋ ค์ค€ ์ฑ…์ด์—ˆ๋‹ค. ์•ฝ 500ํŽ˜์ด์ง€์ •๋„ ๋˜๊ณ , ๊ณต๋ถ€๋ฅผ ํ•˜๊ธฐ ์ „, ํ˜น์€ ์‹œ๊ฐ„์ด ๋‚ ๋•Œ๋งˆ๋‹ค ์ฝ์—ˆ๋‹ค. ์ฝ์€ ๊ธฐ๊ฐ„์€ 21. 5. 26. ~ 21. 7. 14.์ด๋‹ค.


โœ๏ธ ๋ณธ๋ก 

๋‚ด์šฉ์€ ์ฃ„์ˆ˜์˜ ๋”œ๋ ˆ๋งˆ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋‚ด์šฉ์„ ์ž‘์„ฑํ–ˆ๊ณ , ์ฃ„์ˆ˜์˜ ๋”œ๋ ˆ๋งˆ ์ค‘ ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ์ž„ํ•˜๋ฉด ํšจ๊ณผ์ ์ธ์ง€ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๋‹ค. ์ฒ˜์Œ์— ์ฃ„์ˆ˜์˜ ๋”œ๋ ˆ๋งˆ๊ฐ€ ์–ด๋–ค ๊ฒŒ์ž„์ธ์ง€ ์ •ํ™•ํžˆ ๋ชฐ๋ž๋Š”๋ฐ ์ด ์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ๊ธฐ์–ต์— ๋‚จ๋Š” ๋ฌธ๋‹จ์€ ์ฃ„์ˆ˜์˜ ๋”œ๋ ˆ๋งˆ์—์„œ ์ƒ๋Œ€๋ฐฉ์„ ๋ฐฐ์‹ ํ•˜๊ฑฐ๋‚˜ ์ฒ˜๋ฒŒํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋‚˜์ค‘์— ํ•ญ์ƒ ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์ง€ ๋ชปํ•œ๋‹ค๋Š” ์ ์ด์—ˆ๋‹ค. ์ฆ‰, ์ฒ˜๋ฒŒ์€ ํ˜‘๋ ฅ์˜ ์ง„ํ™”๋ฅผ ์œ„ํ•œ ๋งค์ปค๋‹ˆ์ฆ˜์ด ์•„๋‹ˆ๋ผ๋Š” ์ ์ด๋‹ค. ๊ดœ์ฐฎ์€ ์„ฑ์ ์„ ๊ฑฐ๋‘” ์ด๋“ค์€ ๋ณด๋ณต์„ฑ ์ฒ˜๋ฒŒ๋กœ ์‚ฌํƒœ๋ฅผ ์•…ํ™”์‹œํ‚ค์ง€ ์•Š์•˜๊ณ  ๋ฐฐ์‹ ์œผ๋กœ ๋Œ€์‘ํ–ˆ์„ ๋ฟ์ด๋‹ค. ๋˜ ๋ณด์ƒ์€ ์ฒ˜๋ฒŒ๋ณด๋‹ค ๋”์šฑ ์ฐฝ์กฐ์ ์ธ ํ˜•ํƒœ์˜ ํ˜‘๋ ฅ์„ ๋‚ณ๋Š”๋ฐ, ํ•จ๊ป˜ ํšจ์œจ์ ์œผ๋กœ ์ผํ•˜๋Š” ๊ฒƒ ์ด์ƒ์„ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ์–ด์„œ ์ฐฝ์กฐ์„ฑ์„ ์ž๊ทนํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๋‚˜๋จธ์ง€ ๋‚ด์šฉ์€ ํ‰ํŒ(๊ฐ„์ ‘ ์ƒํ˜ธ์„ฑ), ๊ณต๊ฐ„ ์„ ํƒ, ๋‹ค์ˆ˜์ค€ ์„ ํƒ, ํ˜ˆ์—ฐ ์„ ํƒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์—ˆ๋Š”๋ฐ, ์ œ์ผ ๊ธฐ์–ต์— ๋‚จ๋Š” ์ฃผ์ œ๊ฐ€ ์ฃ„์ˆ˜์˜ ๋”œ๋ ˆ๋งˆ์˜€๋‹ค.


โœ๏ธ ๊ฒฐ๋ก 

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

์ด์ „์—๋„ ์ฑ…์„ ๋ช‡๋ฒˆ ์ฝ์—ˆ์ง€๋งŒ ํ‹ˆํ‹ˆ์ด ์‹œ๊ฐ„๋‚ ๋•Œ๋งˆ๋‹ค ๋…์„œํ•˜๋ฉฐ ์™„๋…ํ•œ ์ ์€ ์ฒ˜์Œ์ธ๊ฒƒ ๊ฐ™๋‹ค. ์•ž์œผ๋กœ ์ž์ฃผ ์ด๋Ÿฐ ์Šต๊ด€์„ ๊ฐ€์ ธ์•ผ๊ฒ ๋‹ค.


๐Ÿ“ [ ๋…ํ›„๊ฐ ] HTML5 & CSS3 - ์ธ์‚ฌ์ดํŠธ

โœ๏ธ ์„œ๋ก 

์ด ์ฑ…์€ ์•Œ๋ผ๋”˜ ์ค‘๊ณ ์„œ์ ์— ๋“ค๋ €์„ ๋•Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ด€๋ จํ•œ ์ฑ…์ด ์–ด๋–ค๊ฒƒ์ด ์žˆ๋Š”์ง€ ๊ตฌ๊ฒฝํ•˜๋‹ค HTML5๋ฅผ ๋‹ค๋ฃฌ ์ฑ…์ธ๋ฐ, ๊ฐ€๊ฒฉ์„ ์•ฝ 50% ์ •๋„ ํ• ์ธ(22,000 -> 11,800)ํ•˜๊ธธ๋ž˜ ์–ผ๋ฅธ ๊ตฌ๋งคํ•œ ์ฑ…์ด๋‹ค. ์•Œ๋ผ๋”˜ ์˜จ๋ผ์ธ์—๋Š” ์ ˆํŒ์ด ๋˜์–ด ๋” ์ด์ƒ ํŒ”์ง€ ์•Š๋Š” ์ฑ…์ด๋‹ค. ์ „์ฒด ํŽ˜์ด์ง€๋Š” ์•ฝ 300ํŽ˜์ด์ง€์ด๊ณ , ์ฝ์€ ๊ธฐ๊ฐ„์€ 21. 8. 28. ~ 21. 10. 9.์ด๋‹ค.


โœ๏ธ ๋ณธ๋ก 

์ฑ…์€ HTML5 ์™€ CSS3์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ฃผ๋กœ ๋‹ค๋ฃจ๋Š”๋ฐ, ๋‚˜์—๊ฒŒ ์žˆ์–ด ๊ฐ€์žฅ ๋„์›€์ด ๋๋˜ ๋‚ด์šฉ์€ ์‹œ๋ฉ˜ํ‹ฑ ์›น(sementic web)์ด๋‹ค. ์‹œ๋ฉ˜ํ‹ฑ ํƒœ๊ทธ๋ฅผ ์–ด๋–ค ์‹œ๊ธฐ์— ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ์™œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ๋“ฑ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•˜๋Š” ์ ๊ณผ ๊ทธ๋ž˜ํ”ฝ ๋‚ด์šฉ์„ ํ…์ŠคํŠธ๋กœ ํ•ด์„ํ•ด์„œ ์ฝ์–ด์ฃผ๋Š” ์Šคํฌ๋ฆฐ ๋ฆฌ๋”๋ฅผ ์ด์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค์„ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ค ๋งˆํฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ (์ž˜ ๋ชฐ๋ž๋Š”๋ฐ HTML5์— ๋„์ž…ํ•œ role ์†์„ฑ์„ ํ†ตํ•ด ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ ์•„์ฃผ ์‰ฝ๊ฒŒ ํŽ˜์ด์ง€๋ฅผ ๋ถ„์„ํ•˜๊ณ , ๋ชจ๋“  ์—ญํ• ์„ ๋ถ„๋ฅ˜ํ•ด์„œ ํŽ˜์ด์ง€์˜ ์ƒ‰์ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.)๊ณผ ์‹ค๋ฌด์ ์ธ ์š”์†Œ๋“ค์„ ๊ณ ๋ คํ•ด ๊ธฐ๋Šฅ์ด ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ์˜ ๋Œ€์ฒ˜๋ฐฉ๋ฒ•๋„ ์ด ์ฑ…์„ ์ฝ๋Š”๋ฐ ๋„์›€์ด ๋งŽ์ด ๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹œ๋ฉ˜ํ‹ฑ ์›น์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ธฐ๋ก์œผ๋กœ ๋‚จ๊ธฐ๊ณ  ์‹ถ์–ด ๊ฒŒ์‹œ๋ฌผ์— ํฌ์ŠคํŒ…ํ–ˆ๋‹ค. ์ฑ…์€ ๋‹ค์Œ์˜ ์ฃผ์ œ๋“ค์„ ๋‹ค๋ฃจ๊ณ  ์žˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ฐœ์„ 
  2. ์‹œ๋งจํ‹ฑ ๋งˆํฌ์—…์œผ๋กœ ๋ธ”๋กœ๊ทธ ๋ฆฌ๋‰ด์–ผํ•˜๊ธฐ
  3. ์‚ฌ์šฉ์ž ์ค‘์‹ฌ์˜ ์›น ํผ ๋งŒ๋“ค๊ธฐ
  4. CSS3๋กœ ๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๋งŒ๋“ค๊ธฐ
  5. ์ ‘๊ทผ์„ฑ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ
  6. ์บ”๋ฒ„์Šค์— ๊ทธ๋ฆฌ๊ธฐ
  7. ์˜ค๋””์˜ค์™€ ๋น„๋””์˜ค
  8. ๋ˆˆ์„ ์ฆ๊ฒ๊ฒŒ
  9. ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฐ์ดํ„ฐ๋กœ ์ž‘์—…ํ•˜๊ธฐ
  10. ๋‹ค๋ฅธ API ์ด์šฉํ•˜๊ธฐ
  11. ๊ณง ์šฐ๋ฆฌ ๊ณ์œผ๋กœ ์˜ฌ ๊ฒƒ
  12. ๊ธฐ๋Šฅ ์ƒ‰์ธ

์ด ์ฑ…์˜ ๋‹จ์ ์€ ๋ฐœํ–‰์ด ์˜ค๋ž˜๋๋‹ค๋Š” ์ ์ธ๋ฐ, ์ดˆํŒ์ด 2011๋…„์ด๋‹ค. ๊ทธ๋ž˜์„œ์ธ์ง€ ์ฑ…์˜ ์˜ˆ์ œ ์ฝ”๋“œ๋Š” jQuery๋ฅผ ์‚ฌ์šฉํ•ด์„œ jQuery๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์ดํ•ดํ•˜๊ธฐ ์กฐ๊ธˆ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹œ์—๋Š” ํ˜ธํ™˜๋˜์ง€ ์•Š๋˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง€๊ธˆ์€ ํ˜ธํ™˜๋˜๋„๋ก ๋ณ€๊ฒฝ๋œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์ ์„ ์—ผ๋‘ํ•ด์•ผ ํ•œ๋‹ค.


โœ๏ธ ๊ฒฐ๋ก 

HTML5์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์ž์„ธํ•˜๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์ ์€ ๋งค์šฐ ์ข‹์•„ ๊ฐœ๋…์„ ์•Œ๊ณ  ์‹ถ์€ ๋ถ„๋“ค์—๊ฒŒ๋Š” ์ถ”์ฒœํ• ๋งŒํ•œ ์ฑ…์ด์ง€๋งŒ, ์ฑ…์˜ ๋ฐœํ–‰์ด ์˜ค๋ž˜๋œ ์ ๊ณผ jQuery๋ฅผ ์ด์šฉํ•œ ์˜ˆ์ œ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด ์‹ค์Šตํ•  ์ˆ˜ ์—†๋Š” ์ ์€ ์•„์‰ฌ์› ๋‹ค.


๐Ÿ“ [ ๋…ํ›„๊ฐ ] ๊ทธ๋ฆผ์œผ๋กœ ์ดํ•ดํ•˜๋Š” AWS ๊ตฌ์กฐ์™€ ๊ธฐ์ˆ  - ์˜ค๊ฐ€์‚ฌ์™€๋ผ ์‹œ๊ฒŒํƒ€์นด

โœ๏ธ ์„œ๋ก 

์ด ์ฑ…์„ ์ฝ๊ฒŒ ๋œ ๊ณ„๊ธฐ๋Š” ์ปค์Šคํ…€๋ฒ…์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ๋กœ๋”ฉ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?๋ผ๋Š” ๊ณ ๋ฏผ์— AWS S3 ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ์Œ์„ ๋จน์—ˆ๋Š”๋ฐ, ์ •์ž‘ AWS์˜ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ๋„ ์ž˜ ๋ชฐ๋ผ์„œ AWS์˜ ์ „์ฒด์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ๊ตฌ๋งคํ–ˆ๋‹ค. ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ๊นŒ AWS์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ๋„ ์ž˜ ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์„œ์ ์„ ๊ตฌ๋งคํ•˜๊ฒ ๋‹ค๊ณ  ๋งˆ์Œ์„ ๋จน์—ˆ๊ณ , ์•Œ๋ฆฌ๋”˜ ์ค‘๊ณ ์„œ์ ์œผ๋กœ ๊ตฌ๋งคํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ถœํŒ๋œ์ง€ ์–ผ๋งˆ ์•ˆ ๋œ ์„œ์ ์ด์–ด์„œ ๋งค๋ฌผ์ด ์—†์–ด ์ƒˆ ์ฑ…์œผ๋กœ ๊ตฌ๋งคํ–ˆ๋‹ค. ๊ฐ€๊ฒฉ์€ 16,200์›, ์ถœํŒ ์ผ์ž๋Š” 2021๋…„ 6์›” 30์ผ, ์ด ํŽ˜์ด์ง€๋Š” 280์ชฝ์ด๋‹ค. ๋…์„œ ๊ธฐ๊ฐ„์€ 21. 10. 14 ~ 21. 10. 18.์ด๋‹ค. ๋‚ด์šฉ์ด ์–ด๋ ต์ง€ ์•Š์•„์„œ ๊ธˆ๋ฐฉ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฑ…์ด์—ˆ๋‹ค.


โœ๏ธ ๋ณธ๋ก 

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

AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋Š” 165๊ฐœ ์ด์ƒ์ด ์žˆ๋Š”๋ฐ, ์ด ์ค‘์—์„œ S3, cloudFront๋Š” ๋‹ค์Œ์— ์ž์„ธํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ณ  ๋‚˜๋จธ์ง€ EC2, IAM, AMI, EBS, ELB, ์Šค๋ƒ…์ƒท, ์˜คํ†  ์Šค์ผ€์ผ๋ง, cloudWatch, Elastic IP, ๋ฆฌ์ „(region), VPC, ์„œ๋ธŒ๋„ท, CIDR ๋“ฑ์€ ์šฉ์–ด์˜ ๊ฐœ๋…๋งŒ ์‚ด์ง ์•Œ์•„๋ณด์ž.

  1. EC2(Amazon Elastic Compute Cloud: ์ปดํ“จํŒ… ์šฉ๋Ÿ‰์„ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด ์„œ๋ฒ„์— ํ•„์š”ํ•œ ์„ธํŠธ๋ฅผ ํด๋ผ์šฐ๋“œ์—์„œ ๋นŒ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ์ž„๋Œ€ ์„œ๋ฒ„๋Š” ์ด๋ฏธ ๋งŒ๋“ค์–ด์ง„ ์„œ๋ฒ„ ๊ธฐ๊ณ„๋‚˜ ์„œ๋ฒ„ ๊ธฐ๋Šฅ์„ ๋นŒ๋ฆฌ๋Š” ๊ฒƒ์ด์ง€๋งŒ, ํด๋ผ์šฐ๋“œ์˜ ๊ฒฝ์šฐ์—๋Š” ๋นŒ๋ฆฐ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ์˜ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ฐฉ๊ฐํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒƒ์ด EC2๋Š” ๋งค๋‹ˆ์ง€๋“œ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„ ๋ฐ ๋„คํŠธ์›Œํฌ ์šด์˜์€ AWS๊ฐ€ ๋‹ด๋‹นํ•˜์ง€๋งŒ, OS๋ฅผ ํฌํ•จํ•˜์—ฌ ํ•„์š”ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์„ค์น˜ํ•˜๊ณ  ์šด์˜ํ•ด์•ผ ํ•œ๋‹ค.
  2. IAM(Identity and Access Management): AWS์˜ ์ธ์ฆ ๋ฐฉ์‹์ด๋‹ค. AWS๋Š” ์„œ๋น„์Šค ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ธ์ฆ ๋ฐฉ์‹์ด ๊ผญ ํ•„์š”ํ•˜๋‹ค. AWS ๊ณ„์ •๊ณผ ๋น„์Šทํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, AWS ๊ณ„์ •์€ ๊ณ„์•ฝ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ณ„์ •์ธ๋ฐ ๋ฐ˜ํ•ด, IAM์€ ๊ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ ‘์†์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์‚ฌ๋žŒ์— ๋Œ€ํ•ด ๋ถ€์—ฌํ•˜๋Š” IAM์„ IAM์‚ฌ์šฉ์ž๋ผ๊ณ  ํ•œ๋‹ค.
  3. AMI(Amazon Machine Image): EC2๋ฅผ ์ง€ํƒฑํ•˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. AMI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋Œ€๋Ÿ‰์œผ๋กœ ์‰ฝ๊ฒŒ ์ƒ์„ฑ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ์„ ๊ธฐ๋กํ•œ ํ…œํ”Œ๋ฆฟ์ด๋‹ค. ์ธ์Šคํ„ด์Šค(๊ฐ€์ƒ ์„œ๋ฒ„)๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ธˆํ˜•๊ณผ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ, ๊ธˆํ˜•์„ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด ๋‘๋ฉด ์–ผ๋งˆ๋“ ์ง€ ๊ฐ™์€ ์„ค์ •์˜ ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋™์ผํ•œ ์„œ๋ฒ„๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ํ•„์š” ํ•  ๋•Œ ์„œ๋ฒ„๋งˆ๋‹ค OS๋ฅผ ์„ค์น˜ํ•˜๊ณ , ์•„ํŒŒ์น˜, ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋“ฑ ๊ฐ™์€ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•  ๋•Œ AMI๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹จ ๋ช‡ ๋ถ„๋งŒ์— ๋™์ผํ•œ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  4. EBS(Amazon Elastic Block Store): ์˜๊ตฌ์ ์ธ ๋ธ”๋ก ์ŠคํŠธ๋ฆฌ์ง€ ๋ถˆ๋ฅจ์œผ๋กœ ์ฃผ๋กœ EC2 ์ธ์Šคํ„ด์Šค์™€ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์Šคํ† ๋ฆฌ์ง€๋Š” HDD์™€ SSD์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ์— ์žฅ์ฐฉํ•˜๋Š” ์ €์žฅ์žฅ์น˜์ธ HDD์™€ SDD๋ฅผ ๋– ์˜ฌ๋ฆฌ๋ฉด ํŽธํ•˜๋‹ค.
  5. ELB(Elastic Load Balancing): AWS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์ด๋‹ค. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋Š” ์„œ๋ฒ„์— ์ง‘์ค‘๋˜๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์„œ๋ฒ„ ์—ฌ๋Ÿฌ ๋Œ€๋‚˜ ๋„คํŠธ์›Œํฌ์— ๋ถ„๋ฐฐํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์„œ๋ฒ„ ํ•œ ๋Œ€์— ์ง‘์ค‘๋˜๋Š” ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€ํ•˜ ๋ถ„์‚ฐ ์žฅ์น˜๋ผ๊ณ ๋„ ํ•œ๋‹ค.
  6. ์Šค๋ƒ…์ƒท(snapshot): ์–ด๋–ค ์‹œ์ ์˜ ์„œ๋ฒ„ ๋””์Šคํฌ ์ƒํƒœ๋ฅผ ํ†ต์งธ๋กœ ๋ณด์กดํ•œ ํŒŒ์ผ์ด๋‚˜ ํด๋” ๋“ฑ์˜ ์ง‘ํ•ฉ์ด๋‹ค. ํ†ต์งธ๋กœ ๋ณด์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ OS์™€ ์„ค์ • ์ •๋ณด ๋“ฑ๋„ ๋ชจ๋‘ ํฌํ•จ๋œ๋‹ค. ๋ณดํ†ต ์†Œํ”„ํŠธ์›จ์–ด ํ˜น์€ OS ๊ฐฑ์‹  ์ž‘์—… ๋“ฑ์„ ํ•  ๋•Œ ๋ฌด์–ธ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฐ”๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ๋ฐฑ์—…ํ•˜๊ธฐ ์œ„ํ•ด ์Šค๋ƒ…์ƒท์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋˜ํ•œ ๊ฐœ์ธ์ด AWS์—์„œ AMI๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์Šค๋ƒ…์ƒท์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
  7. ์˜คํ†  ์Šค์ผ€์ผ๋ง(Auto Scaling): ์„œ๋ฒ„์˜ ์•ก์„ธ์Šค ์ƒํƒœ์— ๋”ฐ๋ผ ์„œ๋ฒ„ ๋Œ€์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ด๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. AWS๋Š” EC2 Auto Scaling์„ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ CloudWatch์—์„œ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜ ์ •๋ณด(CPU ๋ถ€ํ•˜, ๋„คํŠธ์›Œํฌ ํ†ต์‹ ๋Ÿ‰ ๋“ฑ) ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์Šค์ผ€์ผ๋ง์— ์ฐธ๊ณ  ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  8. CloudWatch: ๊ฐ AWS ์„œ๋น„์Šค์˜ ๋ฆฌ์†Œ์Šค ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๊ด€๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋น„์Šค์ด๋‹ค. AWS์˜ ๊ฐ ์„œ๋น„์Šค์—์„œ ์ง€ํ‘œ, ๋กœ๊ทธ ๋“ฑ์„ ์ˆ˜์ง‘, ๊ธฐ๋กํ•œ๋‹ค. ์ˆ˜์ง‘ํ•œ ๋กœ๊ทธ๊ฐ€ ์ž„๊ณ„ ๊ฐ’์„ ๋„˜์œผ๋ฉด ํŠน์ • ๋™์ž‘์ด ์ผ์–ด๋‚˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์‹œ ์ƒํ™ฉ์— ๋Œ€์ฒ˜ํ•˜๋Š” ๊ด€๋ฆฌ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
  9. Elastic IP: AWS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ •์ ์ธ ๊ณต์ธ(public) IPv4 ์ฃผ์†Œ์ด๋‹ค. EC2 ์ธ์Šคํ„ด์Šค๋Š” ์ •์ง€ ํ›„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๊ณต์ธ IP์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค. ์ด๋Š” ์„œ๋ฒ„๋กœ์„œ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ๊ณ ์ • IP ์ฃผ์†Œ๋ฅผ ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๊ณ , ์ด๋•Œ ๊ณ ์ • IP๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด Elastic IP์ฃผ์†Œ์ด๋‹ค.
  10. ๋ฆฌ์ „(Region): AWS๋Š” ์ „ ์„ธ๊ณ„ 25์ง€์—ญ์— ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ง€๋ฆฌ์  ๋ถ„๋ฅ˜๊ฐ€ ๋ฆฌ์ „์ด๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ง€์—ญ์„ ์ง€์ •ํ•˜๋Š”๋ฐ ๊ตญ๋‚ด์—์„œ๋Š” ์„œ์šธ์— ์œ„์น˜ํ•ด์žˆ๋‹ค. ๊ตญ๋‚ด์˜ ๋งŽ์€ ์‚ฌ๋žŒ์ด ์„œ์šธ ๋ฆฌ์ „์„ ์„ ํƒํ•˜์ง€๋งŒ, ์•„์ง ์„œ์šธ ๋ฆฌ์ „์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค๋งŒ ๋ฏธ๊ตญ ๋™๋ถ€ ๋“ฑ ๋‹ค๋ฅธ ๋ฆฌ์ „์„ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค. ๋ฆฌ์ „์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์ด๋‹ค. ๊ฐ ๋ฆฌ์ „์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ(AZ)์ด ๊ฐ๊ฐ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋…๋ฆฝ๋œ ์„ค๋น„๋กœ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค. ์ฆ‰ ์„ธ๊ณ„ ๊ฐ๊ตญ์— ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ์žˆ์–ด ์ „ ์„ธ๊ณ„์ ์ธ ํ™•์žฅ์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  11. VPC(Amazon Virtual Private Cloud): ์›น ์„œ๋ฒ„๋‚˜ DB ์„œ๋ฒ„์™€ ๊ฐ™์€ ์„œ๋ฒ„๋Š” ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ•œ ์žฅ์†Œ์— ๋ชจ์•„์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์„œ๋ฒ„๋กœ์„œ์˜ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค. AWS ์„œ๋น„์Šค์ธ EC2๋‚˜ RDS(Relational Database Service) ๋“ฑ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด Amazon VPC์ด๋‹ค. AWS ๊ณ„์ • ์ „์šฉ ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋กœ, AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋งŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ EC2๋‚˜ RDS์˜ ๊ฒฝ์šฐ VPC๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๊ธฐ ๋•œ๋ˆ„์— ๋ฆฌ์†Œ๋ฅด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ์„œ๋น„์Šค์ด๋‹ค.
  12. ์„œ๋ธŒ๋„ท(subnet): ์ปค๋‹ค๋ž€ ๋„คํŠธ์›Œํฌ๋ฅผ ์ž‘๊ฒŒ ๋‚˜๋ˆˆ ๋„คํŠธ์›Œํฌ๋ฅผ ๋งํ•œ๋‹ค. ๋„คํŠธ์›Œํฌ๋ฅผ ๋ถ„ํ• ํ•ด ์ง์ ‘ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ์ขํžˆ๊ณ , ๋ฐฉํ™”๋ฒฝ์„ ์„ค์ •ํ•ด ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•œ๋‹ค. VPC๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์•„๋ž˜์— ์šฉ๋„์— ๋”ฐ๋ผ์„œ ์„œ๋ธŒ๋„ท(์ž‘์€ ๋„คํŠธ์›Œํฌ)์„ ์ƒ์„ฑํ•œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋„คํŠธ์›Œํฌ์˜ ๊ฒฝ์šฐ ์„œ๋ธŒ๋„ท๋ผ๋ฆฌ ํ†ต์‹ ํ•˜๋ ค๋ฉด ๋ผ์šฐํŒ…์ด ํ•„์š”ํ•˜์ง€๋งŒ VPC์˜ ๊ฒฝ์šฐ์—๋Š” ๋ผ์šฐํŒ… ์—†์ด๋„ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  13. CIDR(Classless Inter-Domain Routing): ๋„คํŠธ์›Œํฌ์™€ ์„œ๋ธŒ๋„ท์˜ ๋ฒ”์œ„๋ฅผ ๋‚˜๋ˆ„๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ‘œ๊ธฐ๋ฒ•์„ ๋งํ•œ๋‹ค. ํ”„๋ฆฌํ”ฝ์Šค ํ‘œ๊ธฐ๋ผ๊ณ ๋„ ํ•˜๋Š”๋ฐ /24, /20์ฒ˜๋Ÿผ /(์Šฌ๋ž˜์‹œ) ๋’ค์— ๋„คํŠธ์›Œํฌ ๊ธธ์ด๋ฅผ ์ˆซ์ž๋กœ ์ ์–ด์„œ ํ‘œ๊ธฐํ•œ๋‹ค. 255.255.255.0 ์ด๋‚˜ 255.255.255.40๊ณผ ๊ฐ™์ด ์„œ๋ธŒ๋„ท ๋งˆ์Šคํฌ๋กœ ํ‘œ๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ, AWS๋Š” CIDR์„ ์‚ฌ์šฉํ•œ๋‹ค. /24๋Š” 256๊ฐœ, /20์€ 4,096๊ฐœ๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ (2์˜ 32 - ๋„คํŠธ์›Œํฌ์˜ ๊ธธ์ด) ** 2๋ฅผ ๊ธฐ์–ตํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ณ„์‚ฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ ๊ฐœ๋…์™ธ์—๋„ DHCP, IP ๋งˆ์Šค์ปค๋ ˆ์ด๋“œ, NAT, ์ธ๋ฐ”์šด๋“œ ๋ฐ ์•„์›ƒ๋ฐ”์šด๋“œ, VPC ์—”๋“œํฌ์ธํŠธ, ๊ฐ€์„ค ์‚ฌ์„ค๋ง ๋“ฑ์ด ์žˆ์œผ๋‚˜, AWS ๊ณ ์œ  ์„œ๋น„์Šค๊ฐ€ ์•„๋‹Œ ๋„คํŠธ์›Œํฌ ๊ฐœ๋…์ด๋ฏ€๋กœ ์ƒ๋žตํ•˜๊ฒ ๋‹ค.


โœ๏ธ ๊ฒฐ๋ก 

๊ฒฐ๋ก ์ ์œผ๋กœ ๋‹น์žฅ ํ”„๋กœ์ ํŠธ์— ๋„์›€์ด ๋œ ๊ฐœ๋…์€ S3, CloudFront ์ •๋„๊ฐ€ ๋˜๊ฒ ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•˜์ง€ ์•Š๊ณ  ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์š”์ฆ˜์— cloud์˜ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ์—…์ธ AWS์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…๊ณผ ๊ตฌ์กฐ ๋“ฑ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋‚˜๋จธ์ง€ cloud ์„œ๋น„์Šค๋„ ๋น„์Šทํ•  ๊ฒƒ์ด๊ณ  ๋‚˜์ค‘์— ์–ธ์  ๊ฐ€ ํ•œ๋ฒˆ์€ ์จ๋จน์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•˜๋ฉฐ ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค. ์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ๋Š๋‚€์ ์€ AWS์— ๊ด€ํ•ด ์ฒ˜์Œ ๋“ค์–ด๋ณด๋Š” ๊ฐœ๋…์ด ๋งŽ์•˜๊ณ  ์ฒ˜์Œ AWS ํ™ˆํŽ˜์ด์ง€์— ์ ‘์†ํ–ˆ์„ ๋•Œ๋Š” ์™ธ๊ณ„์–ด์ฒ˜๋Ÿผ ๋Š๊ปด์กŒ๋˜ ๋‹จ์–ด๋“ค์ด ์ด์ œ๋Š” ์กฐ๊ธˆ์”ฉ ๋ณด์ด๋Š” ๊ฒƒ์— ์‹ ๊ธฐํ–ˆ๋‹ค. WEB์— ๊ด€ํ•œ ์ „๋ฐ˜์ ์ธ ์ง€์‹์„ ์•Œ๋ ค๋ฉด ๋งŽ์€ ๊ณต๋ถ€๋ฅผ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ๋„ ๋Š๊ผˆ๋‹ค.


๐Ÿ“ [ ๋…ํ›„๊ฐ ] ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ํŒจํ„ด๊ณผ ์›๋ฆฌ - ์ด๋‹จ ๋งˆ์ฝง

โœ๏ธ ์„œ๋ก 

ํ•ญ์ƒ ์›น์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ๊ฒฝํ•˜๋‹ค๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„ ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋กœ ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.(์˜ค๋Š˜์˜ ์ง‘) ๋‚ด๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ๋„ ํ•ญ์ƒ ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋กœ ๋งŒ๋“ค๋ ค๊ณ  ๋…ธ๋ ฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€์˜ ์šฉ์–ด๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค๊ฒƒ์ด๊ณ  ์–ธ์ œ ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š”๊ฐ€? ์–ด๋–ป๊ฒŒํ•˜๋ฉด ์œ ์ €๊ฐ€ ๋ณด๊ธฐ ํŽธํ•œ ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ? ํ•˜๋Š” ์ฐฐ๋‚˜์— ์ด ์ฑ…์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฑ…์€ ์•Œ๋ผ๋”˜์—์„œ ์ฃผ๋ฌธํ–ˆ๊ณ  ์•ฝ 200ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ์ฝ์€ ๊ธฐ๊ฐ„์€ 21.10.19. ~ 21.11.4.์ด๋‹ค.


โœ๏ธ ๋ณธ๋ก 

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

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

// querySelector, addEventListener, getComputedStyle DOM ์†์„ฑ์˜ ์ง€์›์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด๋ฌธ
if ( !( "querySelector" in document && "addEventListener" in window && "getComputedStyle" in window)){
  return;
}

// DOM ์†์„ฑ์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋ฉด HTML์š”์†Œ์— enhanced ํด๋ž˜์Šค๋ฅผ ์ ์šฉํ•œ๋‹ค.
window.document.documentElement.className += " enhanced";

๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ๊ฐ€๋ณ€ ์ด๋ฏธ์ง€์™€ ๊ฐ€๋ณ€ ๋™์˜์ƒ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋„ ์„ค๋ช…ํ–ˆ๋‹ค. ๋จผ์ €, ๋™์˜์ƒ์€ ์ด๋ฏธ์ง€์™€ ๋‹ฌ๋ฆฌ ๊ณ ์œ ํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ HTML์—์„œ ํฌ๊ธฐ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ์ด๋•Œ, ์ข…ํšก๋น„(aspect radio)๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋„ฃ์–ด์•ผํ•˜๋Š”๋ฐ 4:3 ๋น„์œจ์€ padding-bottom: 75%๋ฅผ ๋„ฃ๊ณ , 16:9 ๋น„์œจ์€ padding-bottom: 56.2757202%๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. padding-top ํ˜น์€ padding-bottom์— ํผ์„ผํŠธ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ๊ทธ ๊ฐ’์€ ๊ทธ๊ฒƒ์„ ๋‘˜๋Ÿฌ์‹ผ ์ปจํ…Œ์ด๋‹ ๋ธ”๋ก์˜ ๋†’์ด์— ๋Œ€ํ•œ ๋น„์œจ์ด ์•„๋‹ˆ๋ผ ๋„ˆ๋น„์— ๋Œ€ํ•œ ๋น„์œจ์ด ๋œ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ์ˆ˜์ง ํŒจ๋”ฉ์€ ํ•ญ์ƒ ๊ทธ๊ฒƒ์„ ๋‘˜๋Ÿฌ์‹ธ๊ณ  ์žˆ๋Š” ๋ฐ•์Šค ๋„ˆ๋น„์˜ 75%, 56.2757202%๊ฐ€ ๋œ๋‹ค.

<!DOCTYPE html>
<head>
  <style>
    .intro{
      position: relative;
      padding-top: 25px;  /* IE5 IE6์˜ ๊นจ์ง„ ์ƒ์ž ๋ชจ๋ธ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„ */
			padding-bottom: 75%;  /* 4:3 */
      padding-bottom: 56.2757202%;  /* 16:9 */
      height: 0;
    }

    .intro video {
      position: absolute;
      left: 0;
      top: 0;
      height: 100%;
      width: 100%;
    }
  </style>
</head>
<body>
  <div class="intro">
    <video controls>
      <source src="/media/cc0-videos/flower.mp4"
              type="video/mp4">
      Sorry, your browser doesn't support embedded videos.
  </video>
  </div>
</body>
</html>

๊ฐ€๋ณ€ํ˜• ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์œ ์šฉํ•œ ์—ฌ๋Ÿฌ CSS ์†์„ฑ ์ค‘ background-size ์†์„ฑ์„ ์ด์šฉํ–ˆ๋‹ค. ๋งŒ์•ฝ, ์ด๋ฏธ์ง€์˜ ๋„ˆ๋น„ ํ˜น์€ ๋†’์ด๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ๋‘˜๋Ÿฌ์‹ผ ์ปจํ…Œ์ด๋‹ ๋ธ”๋ก๋ณด๋‹ค ๋” ํฌ๋‹ค๋ฉด ์ปจํ…Œ์ด๋‹ ๋ธ”๋ก ๋ฐ”๊นฅ์˜ ๋‚˜๋จธ์ง€ ํ”ฝ์…€๋“ค์€ ๋ณด์ด์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ background-size ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์™€ ๊ฐ™์€ ํ˜„์ƒ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ๊ธธ์ด๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ฅผ auto๋กœ ์„ค์ •ํ•˜๋ฉด ํŠน์ • ๋„ˆ๋น„ ๋˜๋Š” ๋†’์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€๋กœ์„ธ๋กœ ๋น„์œจ์„ ์œ ์ง€ํ•œ ์ฑ„ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋œ๋‹ค. ๋งŒ์•ฝ, ๊ฐ€๋กœ ์„ธ๋กœ ๋น„์œจ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฑ„์šฐ๊ณ  ์‹ถ์„ ๋•Œ background-size: cover๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ๊ฐ€ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์ด๋ฏธ์ง€์˜ ์ผ๋ถ€๊ฐ€ ๋ทฐ์— ๋ณด์ด์ง€ ์•Š์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿด๋•Œ๋Š” background-size: contain๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์•ˆ์˜ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€ ์ „์ฒด๊ฐ€ ๋ฐ˜๋“œ์‹œ ๋ณด์ธ๋‹ค. ์ด์™ธ์—๋„ ๋ฐ˜์‘ํ˜•๊ด‘๊ณ , flex, grid ๋“ฑ์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์ ํ˜€์žˆ๋‹ค.


โœ๏ธ ๊ฒฐ๋ก 

์ด ์ฑ…์„ ์ฝ์—ˆ๋‹ค๊ณ  ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋ฅผ 100% ์ดํ•ดํ–ˆ๋‹ค๊ณ  ํ•˜๊ธฐ๋Š” ํž˜๋“ค๋‹ค. ๋ฐ˜์‘ํ˜•์„ ์‹œ๋„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๊ณ  ์ง€๊ธˆ๋„ ๊พธ์ค€ํžˆ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ๋Š” ๋ถ„์•ผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ, ์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ๋ฐ˜์‘ํ˜•ํŽ˜์ด์ง€๊ฐ€ ์™œ ์ƒ๊ธฐ๊ฒŒ ๋˜์—ˆ๊ณ  ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ธฐ์ดˆ์ ์ธ ์ง€์‹, ์‘์šฉ ์˜ˆ์ œ ๋“ฑ์„ ๋ฐฐ์›Œ์„œ ์ข‹์•˜๋‹ค. ์ œ์ผ ๋‚จ๋Š” ์ง€๋ฌธ์€ ๋ฐ˜์‘ํ˜• ํŽ˜์ด์ง€๋Š” ํŠน์ • ๊ธฐ๊ธฐ ์ค‘์‹ฌ์˜ ๋ถ„๊ธฐ์ ์„ ์„ค์ •ํ•˜์ง€ ์•Š๊ณ  ์š”์†Œ๋“ค์˜ ๊ฒฝ๊ณ„์„  ์œ„์น˜์— ๋”ฐ๋ผ ๋ ˆ์ด์•„์›ƒ ์‹œ์Šคํ…œ์„ ์กฐ์ ˆํ•œ๋‹ค๋ฉด, ๋”์šฑ ๊ฒฌ์‹คํ•˜๊ณ  ๋ฏธ๋ž˜ ์ง€ํ–ฅ์ ์ธ ๋ ˆ์ด์•„์›ƒ์„ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ๋˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์•„์ง ์ƒ์ƒํ•ด๋ณธ ์ ๋„ ์—†๋Š” ๊ธฐ๊ธฐ์™€ ๋ธŒ๋ผ์šฐ์ €๋„ ๋” ์ž˜ ๋Œ€๋น„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.๋ผ๋Š” ๋ง์ธ๋ฐ, ์š”์ฆ˜์—๋Š” ๋ชจ๋ฐ”์ผ, ํƒœ๋ธ”๋ฆฟ, ๋ฐ์Šคํฌํ†ฑ ์‚ฌ์ด์˜ ๊ฒฝ๊ณ„๊ฐ€ ํ๋ ค์ง€๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๊ฐ€๊นŒ์šด ๋ฏธ๋ž˜์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“œ๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์Šค๋งˆํŠธํฐ๊ณผ ํ™”๋ฉด ํฌ๊ธฐ๊ฐ€ ๊ฑฐ์˜ ๋น„์Šทํ•œ ์Šค๋งˆํŠธ ์›Œ์น˜์—์„œ๋„ ํ‘œ์‹œ๋ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๊ธฐ ์ข…๋ฅ˜์— ํ•œ์ •์ง“์ง€ ๋ง๊ณ  ํ™˜๊ฒฝ์  ํŠน์„ฑ์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ๊ฑด์„ค์ ์ธ ๋ฐฉํ–ฅ์ด๋ผ๋Š” ์˜๋ฏธ์ธ๊ฒƒ ๊ฐ™๋‹ค.


๐Ÿ“ [ ๋…ํ›„๊ฐ ] Web Development with Node & Express 2ํŒ์„ ์ฝ๊ณ ...

โœ๏ธ ์„œ๋ก 

์ด ์ฑ…์„ ๋ณด๊ฒŒ ๋œ ๊ณ„๊ธฐ๋Š” ์—˜๋ฆฌ์Šค ํŒ€ ํ”„๋กœ์ ํŠธ์—์„œ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์žˆ๋˜ ๋‚˜์—๊ฒŒ ๋ฌด์ง€ํ–ˆ๋˜ ๋ฐฑ์—”๋“œ ํŒŒํŠธ๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๋งจ๋•…์— ํ—ค๋”ฉํ•˜๋Š”๊ฒฉ์œผ๋กœ ๋ฐฑ์—”๋“œ์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์ด๋ฆฌ์ €๋ฆฌ ์ฐพ์•„๋ณด๋˜ ์ค‘ ๋น„๊ต์  ์ตœ๊ทผ(2021.5.21.)์— ์ถœํŒํ–ˆ๊ณ  Spring์„ ๋‹ค๋ฃจ๋Š” ์ฑ…์ด ์•„๋‹ˆ๋ผ Express.js๋ฅผ ๋‹ค๋ฃจ๋Š” ์„œ์ ์ด์–ด์„œ ๊ตฌ๋งคํ–ˆ๋‹ค. ์ฑ…์€ ์•Œ๋ผ๋”˜์—์„œ ์ฃผ๋ฌธํ–ˆ๊ณ , ์ฑ…์€ ์•ฝ 450ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์œผ๋ฉฐ ๋…์„œ๊ธฐ๊ฐ„์€ 2022.01.25 ~ 2022.02.19์ด๋‹ค.


โœ๏ธ ๋ณธ๋ก 

ํ‹ˆํ‹ˆ์ด ์ฑ…์„ ์ฝ์œผ๋ฉฐ ๋‹น์žฅ์— ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š”ํ„ฐ๋ผ ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ์ฃผ์ œ๋งŒ ๋จผ์ € ์‚ดํŽด๋ดค๋‹ค. ์ต์Šคํ”„๋ ˆ์Šค ์†Œ๊ฐœ, ํ’ˆ์งˆ๋ณด์ฆ, ์ฟ ํ‚ค์™€ ์„ธ์…˜, ๋ฏธ๋“ค์›จ์–ด, ์ง€์†์„ฑ, ๋ผ์šฐํŒ…, REST API์™€ JSON, SPA, ๋ณด์•ˆ ํŒŒํŠธ์˜€๋‹ค. ์ด ์ค‘์—์„œ ๊ฐ€์žฅ ๊ธฐ์–ต์— ๋‚จ๋Š” ๋ถ€๋ถ„์€ ๋ฐ”๋กœ ๋ฏธ๋“ค์›จ์–ด, ์ฟ ํ‚ค์™€ ์„ธ์…˜์ธ๋ฐ, ๋‚˜๋Š” JWT๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฆ์„ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ ์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค๋ฅผ ์ „ํ˜€ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ๊ฒฐ๊ตญ cookie-parser ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์˜€๋‹ค.. (์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ 3์‹œ๊ฐ„์„ ์‚ฝ์งˆํ–ˆ๋‹ค.) ๋•๋ถ„์— ๋ฏธ๋“ค์›จ์–ด์˜ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฟ ํ‚ค์— ๋Œ€ํ•ด ๊ธฐ์กด์— ์•Œ๊ณ ์žˆ๋˜ ์ง€์‹๊ณผ ๋”๋ถˆ์–ด ๋ช‡ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ์ฟ ํ‚ค์˜ ๊ด€ํ•ด ์•Œ์•„๋‘ฌ์•ผ ํ•  ์ค‘์š”ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ์‚ฌ์šฉ์ž๊ฐ€ ์ฟ ํ‚ค ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  - ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ด๋Š” ์ฟ ํ‚ค๋Š” ๋ชจ๋‘ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ฟ ํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ์ฝ˜ํ…์ธ ๋ฅผ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๊ธด ํ•˜์ง€๋งŒ, ๋–ณ๋–ณํ•œ ๋ชฉ์ ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ตณ์ด ์•”ํ˜ธํ™”ํ•  ์ด์œ ๊ฐ€ ์—†๋‹ค. ์„œ๋ช…๋œ (Signed)์ฟ ํ‚ค๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ์ฝ๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ธด ํ•˜๊ฒ ์ง€๋งŒ, ์•”ํ˜ธํ™”๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์ด ์•„๋‹ˆ๋‹ค.

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

3. ์ฟ ํ‚ค๋Š” ๊ณต๊ฒฉ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.
  - XSS(cross-site-scripting attack) ๊ณต๊ฒฉ ์ค‘ ์•…์˜์ ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ์ฟ ํ‚ค ์ฝ˜ํ…์ธ ๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค. ์„œ๋ฒ„์— ์ „์†๋˜๋Š” ์ฟ ํ‚ค๋ฅผ ๋งน์‹ ํ•ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜๋‹ค. `์„œ๋ช…๋œ ์ฟ ํ‚ค(Signed cookie)`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ์ฟ ํ‚ค๋ฅผ ๋ณ€์กฐํ–ˆ์„ ๊ฒฝ์šฐ ๊ทธ ํ”์ ์ด ๋ช…๋ฐฑํžˆ ๋“œ๋Ÿฌ๋‚˜๋ฏ€๋กœ ๊ณต๊ฒฉ์„ ๋ง‰๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค. (์„œ๋ช…๋œ ์ฟ ํ‚ค๋Š” ์ผ๋ฐ˜์ ์ธ ์ฟ ํ‚ค๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค. ์„œ๋ช…๋œ ์ฟ ํ‚ค์—์„œ ์‚ฌ์šฉ๋œ ์ด๋ฆ„์„ ์ผ๋ฐ˜ ์ฟ ํ‚ค์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.) ๋˜๋Š” `httpOnly` ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฟ ํ‚ค๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์„œ๋ฒ„์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ํ™œ์šฉ๋„๊ฐ€ ์กฐ๊ธˆ ๋–จ์–ด์ง€์ง€๋งŒ ํ›จ์”ฌ ์•ˆ์ „ํ•˜๋‹ค.

4. ์ฟ ํ‚ค๋ฅผ ๋‚จ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆˆ์น˜์ฑˆ๋‹ค.
  - ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ์ฟ ํ‚ค๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์ €์žฅํ•˜๋ฉด ์‚ฌ์šฉ์ž๋ฅผ ์งœ์ฆ๋‚˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”ผํ•ด์•ผ ํ•œ๋‹ค. ์ฟ ํ‚ค๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ํ•ด๋ผ.

5. ์ฟ ํ‚ค์—์„œ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” option
  - domain: ์ฟ ํ‚ค์— ๋„๋ฉ”์ธ์„ ์—ฐ๊ฒฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํ˜„์žฌ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๋„๋ฉ”์ธ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ๊ณผ ์—ฐ๊ฒฐํ•  ์ˆ˜๋Š” ์—†๋‹ค.
  - path: ์ฟ ํ‚ค๊ฐ€ ์ ์šฉ๋  ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•œ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์ธ `/`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์ดํŠธ์˜ ๋ชจ๋“  ํŽ˜์ด์ง€์— ์ฟ ํ‚ค๊ฐ€ ์ ์šฉ๋œ๋‹ค. ๊ฒฝ๋กœ๋ฅผ `/foo`๋กœ ์„ค์ •ํ•˜๋ฉด `/foo`, `/foo/bar` ๋“ฑ์— ์ ์šฉ๋œ๋‹ค.
  - maxAge: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฟ ํ‚ค๋ฅผ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ์ง€์ •ํ•œ๋‹ค. ์ด ์˜ต์…˜์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์„ ๋•Œ ์‚ญ์ œ๋œ๋‹ค. `expired` ์˜ต์…˜์—์„œ ๋งŒ๋ฃŒ ๋‚ ์งœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ฌธ๋ฒ•์ด ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์— `maxAge`๋ฅผ ๊ถŒํ•œ๋‹ค.
  - secure: `HTTPS` ์—ฐ๊ฒฐ์„ ํ†ตํ•ด์„œ๋งŒ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•œ๋‹ค.
  - httpOnly: ์„œ๋ฒ„์—์„œ๋งŒ ์ฟ ํ‚ค๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. ์ฆ‰, client์—์„œ๋Š” ์ฟ ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค. XSS๊ณต๊ฒฉ์„ ๋ง‰๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค.
  - signed: ์ฟ ํ‚ค์— ์„œ๋ช…์„ ํ•ด์„œ `res.cookie`๊ฐ€ ์•„๋‹ˆ๋ผ `res.signedCookies`์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์„œ๋ช…๋œ ์ฟ ํ‚ค๊ฐ€ ๋ณ€์กฐ๋˜๋ฉด ์„œ๋ฒ„๋Š” ๊ทธ ์ฟ ํ‚ค๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์›๋ž˜ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค.

๋˜ํ•œ, passport๋ฅผ ์ด์šฉํ•ด ์ธ์ฆํŒŒํŠธ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, GitHub Strategy๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ์ฆ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” passport ํ™ˆํŽ˜์ด์ง€์˜ docs์™€ ๋น„์Šทํ•˜๊ฒŒ ์ž‘์„ฑํ–ˆ์ง€๋งŒ, ๋‹ค์Œ ์ฝ”๋“œ๋Š” ๋‚ด๊ฐ€ GitFarm ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์„ฑํ•œ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ์ด๋‹ค. ์ฝ”๋“œ๋Š” ์งง์•„๋ณด์ด์ง€๋งŒ ๋‚˜์˜ ์„œ๋น„์Šค์— ํ•„์š”ํ•œ ์ •๋ณด์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜๋Š”๋ฐ ๊ทธ ์ž‘์—…์ด ์ƒ๊ฐ๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค.

// passport/strategy/GitHub.js
import GitHub from "passport-github2";
import keys from "../../config/keys.js";
import { User } from "../../model/index.js";

const GitHubStrategy = GitHub.Strategy;
const { clientID, clientSecret, callbackURL } = keys.GitHub;

const config = {
  clientID,
  clientSecret,
  callbackURL,
};

export default new GitHubStrategy(
  config,
  async (accessToken, refreshToken, profile, done) => {
    const { username } = profile;
    const { id, avatar_url: avatarUrl } = profile._json;

    const findUser = await User.findOne({ id });
    if (!findUser) {
      const newUser = new User({
        id,
        username,
        avatarUrl,
        accessToken,
      });

      newUser.save();
      return done(null, newUser);
    }
    return done(null, findUser);
  },
);

// routes/api/auth.js
router.get(
  "/github",
  passport.authenticate("github", {
    scope: ["repo", "profile", "user"],
    session: false,
  }),
);

router.get(
  "/github/callback",
  passport.authenticate("github", {
     session: false,
    failureRedirect: "/api/auth/login/failed",
  }),
  async (req, res) => {
    const { id, username } = req.user;
    const payload = { id, username };
    const token = await createToken(payload);
    res.cookie("token", token, cookieConfig);
    res.redirect("/loading");
  },
);

โœ๏ธ ๊ฒฐ๋ก 

์ด ์ฑ…์„ ์ฝ์œผ๋ฉฐ ์ตœ์†Œํ•œ์˜ ๋ฐฑ์—”๋“œ์—์„œ ํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ๋„์›€์„ ๋งŽ์ด ๋ฐ›์•˜๋‹ค. ์•„์ง๊นŒ์ง€ ์šฐ๋ฆฌ๋‚˜๋ผ์—์„œ๋Š” Express.js๋ณด๋‹ค Spring์„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋ฐฑ์—”๋“œ์˜ ํฐ ํ‹€์€ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. JAVA๋ณด๋‹ค JS๋ฅผ ๋” ์ž˜ ์•Œ๋ฉด์„œ ๋ฐฑ์—”๋“œ๋ฅผ ๋ง›๋ณด๊ณ  ์‹ถ์€ ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœํ•ด์ฃผ๊ณ  ์‹ถ์€ ์ฑ…์ด๋‹ค.

reference

  1. ํ•œ ๊ถŒ์œผ๋กœ ๋๋‚ด๋Š” Node & Express : ๋ชจ๋˜ ์›น์„ ์œ„ํ•œ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ๊ฒƒ
  2. Passport-GitHub2

๐Ÿ“ [ ๋…ํ›„๊ฐ ] ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” Http & Network Basic์„ ์ฝ๊ณ ...

โœ๏ธ ์„œ๋ก 

๊ธฐ์ˆ ๋ฉด์ ‘์„ ์ค€๋น„ํ•˜๋‹ค๊ฐ€ ์ฃผ์†Œํ‘œ์‹œ์ฐฝ์— www.naver.com์„ ์ž…๋ ฅํ•˜๊ณ  Enter๋ฅผ ์น˜๊ณ ๋‚˜์„œ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ Œ๋”๋ง๋˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•ด๋‹ฌ๋ผ๋Š” ๋ง์„ ๋“ฃ๊ณ  ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์ชฝ์„ ๋‹ค๋ฃฌ ์„œ์ ์ด ์žˆ๋Š”์ง€ ์ฐพ์•„๋ณด๋‹ค ์ด ์ฑ…์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์•Œ๋ผ๋”˜์—์„œ ๊ตฌ๋งคํ•˜์˜€๊ณ , ๊ตฌ๋งค์ž์˜ ํ‰๋„ ๋‚˜๋ฆ„ ๊ดœ์ฐฎ์•˜๋‹ค. ๋…์„œ๊ธฐ๊ฐ„์€ 22.3.31. ~ 4.5.์ด๊ณ , ์ฑ…์€ ์•ฝ 300ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์ง€๋งŒ, ๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช…ํ•ด์ฃผ๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋งŽ์•„ ์˜ˆ์ƒ๋ณด๋‹ค ๋นจ๋ฆฌ ์ฝ์—ˆ๋‹ค. ์ฒซ ์ถœํŒ์ด 2015๋…„์ด๋ผ ํ˜„์žฌ ํŠธ๋ Œ๋“œ(WEB 3.0 ๋“ฑ)๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์ง€ ์•Š๋Š” ์ ์ด ์•„์‰ฌ์› ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ๋‚ด์šฉ์€ ์•„์ง๊นŒ์ง€๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ, ํ”„๋กœํ† ์ฝœ์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์•Œ๊ณ  ์‹ถ์€ ๋ถ„๋“ค์—๊ฒŒ ์ถ”์ฒœํ•˜๊ณ  ์‹ถ์€ ์ฑ…์ด๋‹ค. ์ฐธ๊ณ ์‚ฌํ•ญ์œผ๋กœ ์ฑ… ์ œ๋ชฉ์— Basic์ด ๋“ค์–ด๊ฐ€์„œ ๊ทธ๋Ÿฐ์ง€ ํ•œ ๊ฐœ๋…์„ ๊นŠ์ˆ™ํžˆ ์„ค๋ช…ํ•ด์ฃผ์ง€๋Š” ์•Š๋Š”๋‹ค.

โœ๏ธ ๋ณธ๋ก 

์ปจํ…์ธ ๋Š” ์ด 11์žฅ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๊ณ , ์›น๊ณผ ๋„คํŠธ์›Œํฌ์˜ ๊ธฐ๋ณธ๋ถ€ํ„ฐ HTTP, HTTPS, ์›น ๊ณต๊ฒฉ๊ธฐ์ˆ ๊นŒ์ง€ ์ž‘์„ฑ๋˜์–ด์žˆ๋‹ค.

HTTP๋Š” ๋“ฑ์žฅ ๋‹น์‹œ ์ฃผ๋กœ ํ…์ŠคํŠธ๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด์—ˆ์ง€๋งŒ, ํ”„๋กœํ† ์ฝœ ์ž์ฒด๊ฐ€ ์ƒ๋‹นํžˆ ์‹ฌํ”Œํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์‘์šฉ ๋ฐฉ๋ฒ•์„ ๊ณ ๋ คํ•ด ๊ธฐ๋Šฅ์ด ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์›น์ด๋ผ๋Š” ํ‹€์„ ๋„˜์–ด ๋‹ค์–‘ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

ํ”„๋กœํ† ์ฝœ์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ์ธํ„ฐ๋„ท๊ณผ ๊ด€๋ จํ•œ ํ”„๋กœํ† ์ฝœ๋“ค์„ ๋ชจ์€ ๊ฒƒ์„ TCP/IP๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. TCP/IP๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต, ํŠธ๋žœ์ŠคํฌํŠธ ๊ณ„์ธต, ๋„คํŠธ์›Œํฌ ๊ณ„์ธต, ๋งํฌ ๊ณ„์ธต ์ด๋ ‡๊ฒŒ 4๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„๋Š”๋ฐ, ๊ณ„์ธตํ™” ๋˜์–ด์žˆ๋Š” ์ด์œ ๋Š” ์–ด๋””์„ ๊ฐ€ ์‚ฌ์–‘์ด ๋ฐ”๋€” ๋•Œ ์ „์ฒด๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ๋ณด๋‹ค ์‚ฌ์–‘์ด ๋ณ€๊ฒฝ๋œ ํ•ด๋‹น ๊ณ„์ธต๋งŒ ๋ฐ”๊พธ๋ฉด ์ˆ˜์ •์„ ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฐ ๊ณ„์ธต์„ ๊ฑฐ์น  ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ํ—ค๋”์— ํ•ด๋‹น ๊ณ„์ธต์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ๋ฐ˜๋Œ€๋กœ ์ˆ˜์‹ ์ธก์—์„œ๋Š” ํ•ด๋‹น ๊ณ„์ธต๋งˆ๋‹ค ์‚ฌ์šฉํ•œ ํ—ค๋”๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

IP์˜ ์—ญํ• ์€ ๊ฐœ๊ฐœ์ธ์˜ ํŒจํ‚ท์„ ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. IP ์ฃผ์†Œ๋Š” ๊ฐ ๋…ธ๋“œ์— ๋ถ€์—ฌ๋œ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  MAC์€ ๊ฐ ๋„คํŠธ์›Œํฌ ์นด๋“œ์— ํ• ๋‹น๋œ ๊ณ ์œ ์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. IP์ฃผ์†Œ๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ MAC ์ฃผ์†Œ๋Š” ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

IPํ†ต์‹ ์€ MAC์ฃผ์†Œ์— ์˜์กดํ•ด์„œ ํ†ต์‹ ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์—์„œ ์—ฌ๋Ÿฌ๋Œ€์˜ ์ปดํ“จํ„ฐ์™€ ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ๋ฅผ ์ค‘๊ณ„ํ•ด์„œ ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค.(๊ฐ™์€ ๋žœ์„  ๋‚ด์— ์žˆ๋Š” ๊ฒฝ์šฐ ์ œ์™ธ) ์ค‘๊ณ„ํ•˜๋Š” ๋™์•ˆ, ๋‹ค์Œ์œผ๋กœ ์ค‘๊ณ„ํ•  ๊ณณ์˜ MAC ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ์ ์ง€๋ฅผ ์ฐพ์•„๊ฐ€๋Š”๋ฐ, ์ด๋•Œ ARP(Address Resolution Protocol)์ด๋ผ๋Š” ํ”„๋กœํ† ์ฝœ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

TCP(Transfer Control Protocol)์€ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ๋งํ•ด ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์‰ฝ๊ฒŒ TCP ์„ธ๊ทธ๋จผํŠธ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋‹จ์œ„ ํŒจํ‚ท์œผ๋กœ ์ž‘๊ฒŒ ๋ถ„ํ•ดํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋งํ•˜๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ๋„์ฐฉํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, ์ƒ๋Œ€์—๊ฒŒ ํ™•์‹คํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด 3-way-handshaking๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŒจํ‚ท์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์—์„œ ๋๋‚˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๋ณด๋ƒˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ƒ๋Œ€์—๊ฒŒ ํ™•์ธํ•˜๊ณ  SYN, ACK ์ด๋ผ๋Š” TCPํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์†ก์‹ ์ธก์—์„œ๋Š” ์ตœ์ดˆ SYN ํ”Œ๋ž˜๊ทธ๋ฅผ ์ƒ๋Œ€์—๊ฒŒ ์ ‘์†ํ•จ๊ณผ ๋™์‹œ์— ํŒจํ‚ท์„ ๋ณด๋‚ด๊ณ , ์ˆ˜์‹ ์ธก์—์„œ๋Š” SYN/ACK ํ”Œ๋ž˜๊ทธ๋กœ ์†ก์‹ ์ธก์— ์ ‘์†ํ•จ๊ณผ ๋™์‹œ์— ํŒจํ‚ท์„ ์ˆ˜์‹ ํ•œ ์‚ฌ์‹ค์„ ์ „ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์†ก์‹ ์ธก์ด ACK ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ณด๋‚ด ํŒจํ‚ท ๊ตํ™˜์ด ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ์ „ํ•ฉ๋‹ˆ๋‹ค.

1. ํฌ๋กฌ ์ฃผ์†Œํ‘œ์‹œ์ฐฝ์— `www.naver.com`์„ ์ž…๋ ฅํ•œ๋‹ค.
2. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ `protocol`, `host`, `port๋ฅผ` ํŒŒ์‹ฑํ•œ๋‹ค.
3. `HSTS`๋ฅผ ํ†ตํ•ด `HTTPS`๋กœ ์ด์ „์— ์ ‘์†ํ•œ ๋„๋ฉ”์ธ์ด์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
4. `DNS`๊ฐ€ `Domain`์„ `IP`๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
5. `Router`๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ์ˆ˜์‹  ํ•  ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” `Gateway`๋กœ ์ด๋™ํ•œ๋‹ค.
6. `ARP`๋ฅผ ์ด์šฉํ•ด `IP`์ฃผ์†Œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ `MAC`์ฃผ์†Œ๋ฅผ ์กฐ์‚ฌํ•œ๋‹ค.
7. `TCP`๋ฅผ ์ด์šฉํ•ด ์†Œ์ผ“ํ†ต์‹ ์„ ์ง„ํ–‰ํ•œ๋‹ค. ์ด๋•Œ, ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ํ™•์‹คํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด `3-way-handshaking`๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. (`HTTPS`์ผ ๋•Œ๋Š” `HTTP`์™€ `SSL`์ด ํ†ต์‹ ํ•˜๊ณ  `SSL`์ด `TCP`์™€ ํ†ต์‹ ํ•œ๋‹ค.)
8. ์ •์ƒ์ ์œผ๋กœ `TCP socket`์— ์—ฐ๊ฒฐ๋˜๋ฉด, ์„œ๋ฒ„์— ํŽ˜์ด์ง€๋ฅผ ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•œ๋‹ค.
9. ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ `HTML, CSS, JS`๋ฅผ ๋ณด๋‚ด์ค€๋‹ค.

โœ๏ธ ๊ฒฐ๋ก 

์ด๋ ‡๊ฒŒํ•ด์„œ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์‚ดํŽด๋ดค๋‹ค. ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ๋ฐฐ์šธ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๋Ÿฐ ๊ฐœ๋…์€ ์„œ์ ์œผ๋กœ ๋ณด๋Š”๊ฒŒ ๋” ํŽธํ•˜๋‹ค. (์ตœ๊ทผ ํŠธ๋ Œ๋“œ๋Š” ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋Š”๊ฒŒ ์ข‹๋‹ค.) ์‚ฌ์‹ค, ํ•™๋ถ€๊ณผ์ •์—์„œ๋„ ์ด์™€ ๋น„์Šทํ•œ ์ •๋ณดํ†ต์‹ ๊ณตํ•™๊ฐœ๋ก ๊ณผ๋ชฉ์„ ์ˆ˜๊ฐ•ํ•œ์ ์ด ์žˆ์œผ๋‚˜ ํ›‘๊ณ  ์ง€๋‚˜๊ฐ€๋“ฏ ๋ฐฐ์šฐ๊ณ  ์˜ค๋ž˜๋˜์–ด์„œ ์ž์„ธํžˆ ๊ธฐ์–ต์ด ๋‚˜์ง€ ์•Š์•˜๋‹ค. Typescript, React ๋“ฑ์˜ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋ณด๋Š”๊ฒƒ๋„ ์ข‹์ง€๋งŒ, ๊ทผ๋ณธ์ ์œผ๋กœ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ†ต์‹ ์ด ๋˜์–ด์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋„คํŠธ์›Œํฌ์™€ ๊ด€๋ จํ•œ ์„œ์ ์„ ์ž์ฃผ ์ฝ์–ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

Reference

  1. ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” HTTP & Network Basic
  2. HSTS - MDN

๐Ÿ“ [ ๋…ํ›„๊ฐ ] TCP/IP ์‰ฝ๊ฒŒ, ๋” ์‰ฝ๊ฒŒ๋ฅผ ์ฝ๊ณ ...

โœ๏ธ ์„œ๋ก 

์ตœ๊ทผ์— ์ฝ์—ˆ๋˜ ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” Http & Network Basic(๋…ํ›„๊ฐ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ)์„ ์ฝ๊ณ  ๋‚˜์„œ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ „์ฒด ํ๋ฆ„์„ ๋Œ€๋žต ํŒŒ์•…ํ–ˆ๋Š”๋ฐ, HTTP๋Š” TCP ํ‘œ์ค€์— ์˜์กดํ•œ๋‹ค๋Š” MDN๊ธ€์„ ๋ณด๊ณ  ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•Œ๊ณ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ์˜ ์ง‘ํ•ฉ์ธ TCP/IP๋ฅผ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์„œ์ ์€ ์—†๋Š”์ง€ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ์ด ์ฑ…์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

์—ฌ๋‹ด์œผ๋กœ TCP/IP๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœํ† ์ฝœ์„ ์ง€์นญํ•˜๋Š” ๋ง์ด ์•„๋‹ˆ๋ผ ์ธํ„ฐ๋„ท์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ข… ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์„ ํ•œ๋ฐ ๋ชจ์•„ ์ผ์ปซ๋Š” ๋ง์ด๋‹ค. TCP/IP๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ด์œ ๋Š” ํ”„๋กœํ† ์ฝœ์ค‘ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ํ”„๋กœํ† ์ฝœ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐœ๋ณ„ ํ”„๋กœํ† ์ฝœ์„ ์ผ์ปซ์ง€ ์•Š๊ณ , ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ์˜ ์ง‘ํ•ฉ์˜ ์˜๋ฏธ๋กœ ๊ตณ์ด ๊ตฌ๋ถ„ํ•  ๋•Œ๋Š” TCP/IP ํ”„๋กœํ† ์ฝœ ์Šค์œ„ํŠธ(TCP/IP Protocol Suite) ํ˜น์€ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ์Šค์œ„ํŠธ(Internet Protocol Suite)๋ผ๊ณ  ๋ถ€๋ฅด๋ฉด ๋œ๋‹ค.

์ฑ…์€ ์•Œ๋ผ๋”˜์—์„œ ๊ตฌ๋งคํ–ˆ์œผ๋ฉฐ ๋…์„œ๊ธฐ๊ฐ„์€ 22.4.18. ~ 22.4.21.์ด๋‹ค. ์ฑ… ํŽ˜์ด์ง€๋Š” ์•ฝ 170ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์œผ๋ฉฐ, ๊ธ€๋งŒ ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๊ทธ๋ฆผ์œผ๋กœ ์„ค๋ช…ํ•ด์ฃผ๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋งŽ์•„ ์˜์™ธ๋กœ ๋นจ๋ฆฌ ์ฝ์—ˆ๋‹ค. 1์‡„ ๋ฐœํ–‰์€ 2016๋…„์ด๊ณ  3์‡„ ๋ฐœํ–‰์€ 2020๋…„์ด๋‹ค. ๋น„๊ต์  ์ตœ์‹  ์„œ์ ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์ˆ ์ด ๋ฐ”๋€Œ์—ˆ์œผ๋ฉด ์–ด์ฉŒ์ง€?๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์œผ๋‚˜, OSI 7๊ณ„์ธต์€ ์•„์ง๋„ ๋„๋ฆฌ ์“ฐ์ด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

โœ๏ธ ๋ณธ๋ก 

์ฑ…์€ TCP/IP๋งŒ ์ง‘์š”ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ OSI 7๊ณ„์ธต์„ ํ•œ ์ฑ•ํ„ฐ์”ฉ ์†Œ๊ฐœํ•ด์ฃผ๊ณ  ์žˆ๋‹ค. ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ, ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต, ํŠธ๋žœ์ŠคํฌํŠธ ๊ณ„์ธต, ๋ผ์šฐํŒ…๊ณผ ์ธํ„ฐ๋„ท ๊ณ„์ธต, ํ•˜๋“œ์›จ์–ด์™€ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค ๊ณ„์ธต, ๋ณด์•ˆ ์ˆœ์œผ๋กœ ์ฑ•ํ„ฐ๊ฐ€ ๋‚˜๋‰˜์–ด์žˆ๋‹ค. ์ •๋ณดํ†ต์‹ ๊ณตํ•™์„ ์ „๊ณตํ•œ ๋‚˜๋กœ์„œ๋Š” ์ฑ…์—์„œ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๋‚ด์šฉ์ด ํ•™๋ถ€ ์ „๊ณต์—์„œ ๋ฐฐ์šด๋‚ด์šฉ๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ, ์ „๊ณต์„œ์ ์ด ์ด ์ •๋„๋กœ ์‰ฝ๊ณ  ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์คฌ๋‹ค๋ฉด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์ด ๋งค๋ฒˆ ๋“ค์—ˆ๋‹ค. ๐Ÿ˜… ๐Ÿ˜… ๋งŽ์€ ๋‚ด์šฉ ์ค‘ ์ด๋ฒˆ ๋…ํ›„๊ฐ์€ ํŠธ๋žœ์ŠคํฌํŠธ๊ณ„์ธต์˜ TCP์™€ ์ธํ„ฐ๋„ท๊ณ„์ธต์˜ IP์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

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

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

๊ฐ€๋” ๋ฐฐํฌ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ HTTP ์„œ๋ฒ„๋Š” 80๋ฒˆ ํฌํŠธ๋กœ ๊ณ ์ •๋˜์–ด์žˆ๋Š”๋ฐ, ํด๋ผ์ด์–ธํŠธ์˜ ํฌํŠธ๋Š” ๋ฌด์—‡์ผ๊นŒ?๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ ์ ์ด ์žˆ๋Š”๋ฐ, ํด๋ผ์ด์–ธํŠธ์ธ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋‹ค์ด๋‚˜๋ฏน ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ์• ๋‹น์ดˆ ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š๋‹ค. ๋‹ค์ด๋‚˜๋ฏน ํฌํŠธ๋Š” 49152 ~ 65535๋ฒˆ์œผ๋กœ ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•˜๋‹ค๊ฐ€ ํ†ต์‹ ์ด ์ข…๋ฃŒ๋˜๋ฉด ํฌํŠธ๋ฅผ ๋ฐ˜๋‚ฉํ•œ๋‹ค.

TCP๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์— ์‹ ๋ขฐ์„ฑ์„ ๋”ํ•˜๊ธฐ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์„ธ๊ทธ๋จผํŠธ(segment)๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜๊ณ , ์ „์†ก์†๋„๋ฅผ ์กฐ์ •ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜์„๊ฒฝ์šฐ ์žฌ์ „์†ก์„ ํ•˜๊ฒŒ ๋œ๋‹ค. TCP ํ†ต์‹ ์€ ์ปค๋„ฅ์…˜ ์—ฐ๊ฒฐ์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š”๋ฐ, ์ปค๋„ฅ์…˜์„ ๋งบ๋Š” ๊ณผ์ •์€ 3๋‹จ๊ณ„๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ 3-way-handshake๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ปค๋„ฅ์…˜์ด ๋งบ์–ด์ง€๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋˜๊ณ , ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๋๋‚˜๋ฉด ์ปค๋„ฅ์…˜์„ ๋Š๋Š”๋‹ค. ์•ž์—์„œ ์ „์†ก์†๋„๋ฅผ ์กฐ์ •ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ๋„คํŠธ์›Œํฌ ๊ฒฝ๋กœ๊ฐ€ ํ˜ผ์žกํ•˜์—ฌ ํ†ต์‹  ์†๋„๋ฅผ ๋‚ฎ์ถฐ์•ผ ํ•˜๋ฉด, ์ธํ„ฐ๋„ท ๊ณ„์ธต์˜ ํ—ค๋” ์•ˆ์— ํ˜ผ์žก ํ”Œ๋ž˜๊ทธ๊ฐ€ ON์œผ๋กœ ์„ค์ •๋˜๊ณ , ์†ก์ˆ˜์‹  ์ธก ์–‘์ชฝ์ด ECE ํ”Œ๋ž˜๊ทธ์™€ CWR ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ†ต์‹  ์†๋„๋ฅผ ์กฐ์ •ํ•œ๋‹ค.

๋‹ค์Œ์œผ๋กœ ์ธํ„ฐ๋„ท ๊ณ„์ธต์˜ IP์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์ธํ„ฐ๋„ท ๊ณ„์ธต์€ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด๋•Œ IP Address๋ผ๊ณ  ํ•˜๋Š” ์‹๋ณ„์ž ์ •๋ณด๋ฅผ ์‹ค๋งˆ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฒด๊ณ„๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ์—ญํ• ์ด ๊ฐ๊ฐ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋ชฉ์ ์ง€๊นŒ์ง€ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ผ์šฐํ„ฐ(router)๋ผ๊ณ  ํ•˜๋Š” ๋„คํŠธ์›Œํฌ ์žฅ๋น„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ผ์šฐํ„ฐ๋Š” ๋„คํŠธ์›Œํฌ์™€ ๋„คํŠธ์›Œํฌ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š”๋ฐ, ํ•˜๋‚˜์˜ ๋ผ์šฐํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชฉ์ ์ง€๊นŒ์ง€ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋„คํŠธ์›Œํฌ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ณ , ๊ทธ ๊ฒฝ๋กœ์ƒ์— ์žˆ๋Š” ๋ผ์šฐํ„ฐ์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ์œ„์ž„ํ•˜๊ฒŒ ๋œ๋‹ค. ์ตœ์ข… ๋ชฉ์ ์ง€๋ฅผ ์ฐพ๊ธฐ๊นŒ์ง€ ์—ฐ์‡„์ ์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋ผ์šฐํ„ฐ๊ฐ€ ๋ชฉ์ ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์•„ ๋‚˜๊ฐ€๋Š” ๊ณผ์ •์„ ๋ผ์šฐํŒ…(routing)์ด๋ผ๊ณ  ํ•œ๋‹ค. IP Address์™€ ๊ด€๋ จ๋œ ๊ธฐ์ˆ ๋กœ๋Š” ์ˆซ์ž๋กœ ๋œ IP Address๋ฅผ ์‚ฌ๋žŒ์ด ์•Œ์•„๋ณด๊ธฐ ์‰ฌ์šด ๋„๋ฉ”์ธ๋ช…๊ณผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” DNS(Domain Name System) ๋“ฑ์ด ์žˆ๋‹ค.

์ˆ˜์‹ ์ž๋กœ ์ง€์ •๋œ ์ปดํ“จํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๊ฒฝ๋กœ๋กœ ์ธํ•ด ํŒจํ‚ท์ด ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด IPv4 ํ—ค๋”์—์„œ๋Š” ์ƒ์กด๊ธฐ๊ฐ„(TTL, Time To Live) (ํ‹ฐ์•„๋ผ & ์ดˆ์‹ ์„ฑ์˜ TTL(TIME TO LOVE) ์•„๋‹˜.) ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ์ƒ์กด ๊ธฐ๊ฐ„์„ ์ดˆ๊ณผํ•œ ํŒจํ‚ท์ด ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐœ๊ฒฌ๋˜๋ฉด ํ•ด๋‹น ํŒจํ‚ท์„ ์†Œ๋ฉธ์‹œํ‚ค๋„๋ก ๊ทœ์ •ํ•˜๊ณ  ์žˆ๋‹ค.

โœ๏ธ ๊ฒฐ๋ก 

์ด๋ ‡๊ฒŒํ•ด์„œ TCP/IP์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ดค๋‹ค. FE ๊ธฐ์ˆ ๋ฉด์ ‘์—์„œ ์ž์ฃผ ๋ฌผ์–ด๋ณด๋Š” ์งˆ๋ฌธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ฃผ์†Œํ‘œ์‹œ์ฐฝ์— www.google.com์„ ์น˜๊ณ ๋‚˜์„œ ์ผ์–ด๋‚˜๋Š” ์ผ๋“ค๊ณผ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๊ณผ์ •์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์•Œ๋ ค๋‹ฌ๋ผ๊ณ  ํ•˜๋Š” ์งˆ๋ฌธ์ด ๋งŽ์€๋ฐ, ์ด ์ฑ…์„ ๋น„๋กฏํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ์„œ์ ์„ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ์ „๋ฐ˜์ ์ธ ํ๋ฆ„์„ ์ฝ๊ณ  ์ดํ•ดํ•˜๋ฉฐ ๋จธ๋ฆฌ์†์— ๋„ฃ๊ณ  ์งˆ๋ฌธ์ด ๋“ค์–ด์™”์„ ๋•Œ ์ž˜ ๋Œ€๋‹ตํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค. ์‹ค์ œ๋กœ ์ตœ๊ทผ์— ๋ณธ ๊ธฐ์ˆ ๋ฉด์ ‘์—๋„ ๋™์ผํ•œ ์งˆ๋ฌธ์ด ๋‚˜์™”์—ˆ๋Š”๋ฐ, ๋„คํŠธ์›Œํฌ ๊ด€๋ จ ์„œ์ ์„ 2๊ถŒ์ •๋„ ๋ด์„œ ๊ทธ๋Ÿฐ์ง€ ์ž์‹ ์žˆ๊ฒŒ ๋Œ€๋‹ตํ–ˆ๊ณ  ๋ฉด์ ‘๊ด€๋‹˜๊ป˜์„œ๋„ ๊ตฌ์ฒด์ ์œผ๋กœ ์ž˜ ์•ˆ๋‹ค๊ณ  ์นญ์ฐฌํ•ด์ฃผ์…จ๋‹ค.

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

Reference

  1. https://developer.mozilla.org/ko/docs/Web/HTTP/Overview#http%EC%99%80_%EC%97%B0%EA%B2%B0
  2. https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=91820548
  3. https://ko.wikipedia.org/wiki/OSI_%EB%AA%A8%ED%98%95
  4. https://ko.wikipedia.org/wiki/%EB%8F%84%EB%A9%94%EC%9D%B8_%EB%84%A4%EC%9E%84_%EC%8B%9C%EC%8A%A4%ED%85%9C

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.