๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring/Boost Course Web

2.1 Web๊ฐœ๋ฐœ์˜ ์ดํ•ด

1) ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด๋“ค

์ €๊ธ‰ ์–ธ์–ด

์ €๊ธ‰ ์–ธ์–ด๋Š” ๊ธฐ๊ณ„ ์ค‘์‹ฌ์˜ ์–ธ์–ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๊ณ„๊ฐ€ ์ง์ ‘ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋Š” ๋ง๋กœ 'ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค'๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ๋Š” ์ „๊ธฐ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์ „๊ธฐ์‹ ํ˜ธ์ธ ์ผœ์กŒ๋‹ค(on)์™€ ๊บผ์กŒ๋‹ค(off) 2๊ฐ€์ง€ ์ƒํƒœ ๊ฐ’์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณดํ†ต ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ผœ์กŒ๋‹ค๋Š” 1, ๊บผ์กŒ๋‹ค๋Š” 0์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 0๊ณผ 1๋กœ ํ‘œํ˜„๋˜๋Š” ์ˆซ์ž๋ฅผ ์šฐ๋ฆฌ๋Š” 2์ง„์ˆ˜๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

2์ง„์ˆ˜๋กœ ์ด๋ค„์ง„ ๊ฐ’์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„์–ด(Machine Language)๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์ˆซ์ž๋กœ๋งŒ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜๋„ ๊ต‰์žฅํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ˆซ์ž๋กœ๋งŒ ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์‚ฌ์šฉ์ด ๊ต‰์žฅํžˆ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ์ด ์ˆซ์ž๋กœ ๋œ ๋ฌธ์žฅ๊ณผ 1:1๋กœ ๋Œ€์‘ํ•˜๋Š” ๊ธฐํ˜ธ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ๊ธฐํ˜ธ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹จ ๊ธฐํ˜ธ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์€ ๊ธฐ๊ณ„๊ฐ€ ๋ฐ”๋กœ ์•Œ์•„๋“ค์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐํ˜ธ๋กœ ์ž‘์„ฑ๋œ ๋ฌธ์žฅ๋“ค์„ ์›๋ž˜์˜ ์ˆซ์ž๋กœ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ๊ณผ์ •์ด ๋” ํ•„์š”ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ณผ์ •์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋„๊ตฌ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ(Compiler)๋ผ๊ณ  ๋งํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ๊ธฐํ˜ธ๋กœ ์ž‘์„ฑ๋œ ์–ธ์–ด๋ฅผ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด(Assembly Language)๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ๋Š” ์•„์ฃผ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๊ธฐ๊ณ„์–ด์™€ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋งŒํผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์–ด๋ ต๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

๊ณ ๊ธ‰ ์–ธ์–ด

๊ณ ๊ธ‰ ์–ธ์–ด๋Š” ์‚ฌ๋žŒ ์ค‘์‹ฌ์˜ ์–ธ์–ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ์ด ์ข€ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋ฌธ๋ฒ•์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ์œ„ํ•ด์„  ์ž‘์„ฑ๋œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ฒˆ์—ญํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์ปดํŒŒ์ผํ•œ๋‹ค๊ณ  ๋งํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์ปดํŒŒ์ผ๋Ÿฌ๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์•ž์—์„œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋„ ๊ธฐ๊ณ„์–ด๋กœ ์ปดํŒŒ์ผ์ด ๋œ๋‹ค๊ณ  ๋งํ–ˆ์—ˆ์ฃ ?

์ปดํ“จํ„ฐ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง€๊ณ , ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๊ด€๋ จ๋œ ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ ์‚ฌ๋žŒ ์ค‘์‹ฌ์˜ ์–ธ์–ด๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ณ ๊ธ‰ ์–ธ์–ด๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์–ธ์–ด๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • FORTRAN : ์ตœ์ดˆ์˜ ๊ณ ๊ธ‰์–ธ์–ด ์ค‘์˜ ํ•˜๋‚˜๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณผํ•™ ๊ณ„์‚ฐ์šฉ์œผ๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ณต๋Œ€์—์„œ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • COBOL : FORTRAN๊ณผ ๋”๋ถˆ์–ด ์—ญ์‚ฌ๊ฐ€ ์˜ค๋ž˜๋œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์—…๋ฌด์—์„œ ์‚ฌ์šฉํ•  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, ํ˜„์žฌ๋„ ์€ํ–‰ ๋“ฑ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • PROLOG : ๋…ผ๋ฆฌํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์จ, ๋…ผ๋ฆฌ์‹์„ ํ† ๋Œ€๋กœ ์˜ค๋ธŒ์ ํŠธ์™€ ์˜ค๋ธŒ์ ํŠธ ๊ฐ„์˜ ๊ด€๊ณ„์— ๊ด€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • C : 1972๋…„ ๋ฏธ๊ตญ ๋ฒจ ์—ฐ๊ตฌ์†Œ์˜ ๋ฐ๋‹ˆ์Šค ๋ฆฌ์น˜์— ์˜ํ•ด ๊ฐœ๋ฐœ๋œ ๊ณ ๊ธ‰ ์–ธ์–ด๋กœ์จ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

  • Erlang :์Šค์›จ๋ด์˜ ์—๋ฆญ์Šจ์—์„œ ๊ฐœ๋ฐœํ•œ ํ•จ์ˆ˜ํ˜• ๋ณ‘ํ–‰์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋ฉฐ ํ†ต์‹  ์ธํ”„๋ผ๋ฅผ ์œ„ํ•œ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

  • Lisp : LISt Processsor์˜ ์•ฝ์ž๋กœ์จ ๋Œ€ํ‘œ์ ์ธ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์—ญ์‚ฌ๋ฅผ ๋งํ•  ๋•Œ, ํ˜„๋Œ€์˜ ์ปดํ“จํ„ฐ๋ฅผ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ณ ๊ธ‰ ์–ธ์–ด ์ค‘ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๊ฒƒ์ด ํฌํŠธ๋ž€์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋กœ ์˜ค๋ž˜๋œ ๊ฒƒ์ด ๋ฐ”๋กœ ์ด ๋ฆฌ์Šคํ”„์ž…๋‹ˆ๋‹ค.

  • Swift : 2014๋…„ WWDC(Apple WorldWide Developers Conference)์—์„œ ๊ณต๊ฐœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด๋กœ ํ˜„๋Œ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฐœ์ „์„ ๋Œ€๋‹ค์ˆ˜ ๊ณ„์Šนํ•œ ๋ชจ๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Kotlin : IntelliJ IDEA์˜ ๊ฐœ๋ฐœ์‚ฌ JetBrains์—์„œ 2011๋…„์— ๊ฐœ๋ฐœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. JVM๊ธฐ๋ฐ˜์˜ ์–ธ์–ด์ด๋ฉฐ Java์™€์˜ ์ƒํ˜ธ ์šด์˜์ด 100% ์ง€์›๋ฉ๋‹ˆ๋‹ค. Swift์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ˜„๋Œ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฐœ์ „์„ ๋Œ€๋‹ค์ˆ˜ ๊ณ„์Šนํ•œ ๋ชจ๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ผ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Clojure : ํด๋กœ์ €(Clojure)๋Š” ๋ฆฌ์น˜ ํžˆํ‚ค(Rich Hickey)๊ฐ€ ๋งŒ๋“  ๋ฆฌ์Šคํ”„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฐฉ์–ธ์œผ๋กœ์„œ, ๋ฒ”์šฉ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

  • Python : ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ์ž๊ฐ€ ์ฝ๊ธฐ ์‰ฝ๊ณ  ์ ์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ์—๊ฒŒ ์ถ”์ฒœ๋˜๋Š” ์–ธ์–ด์ด๋ฉฐ, ๋ฐ์ดํ„ฐ ๊ณผํ•™์—์„œ๋„ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ ์›น์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ์—์„œ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ python์€ ML (machine learning)์—์„œ๋„ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • JAVA : 1995๋…„ ์ฌ ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ์ฆˆ ์—์„œ ๊ฐœ๋ฐœํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋งค๋…„ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ธ๊ธฐ 1๋“ฑ์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ธ๊ธฐ๊ฐ€ ๋งŽ์€ ์–ธ์–ด

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ค‘์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์–ธ์–ด๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

์‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ด€์ ์œผ๋กœ ์–ธ์–ด๋ฅผ ๋ฐ”๋ผ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์œ„๋ฅผ ๋งค๊ธด๋‹ค๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ์—…์ด๋‚˜ ์–ธ๋ก ์˜ ๊ฒฝ์šฐ ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ github, stackoverflow์™€ ๊ฐ™์€ ์‚ฌ์ดํŠธ์—์„œ ์–ธ๊ธ‰๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

Github์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์–ธ์–ด 15๊ฐœ

์ถœ์ฒ˜ https://octoverse.github.com/

์ด์™ธ์—๋„ ํ‹ฐ์˜ค๋ฒ (https://www.tiobe.com)์˜ ์ž๋ฃŒ๋ฅผ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณต์‹ ๋ ฅ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

 

ํ‹ฐ์˜ค๋ฒ ์˜ ์ˆœ์œ„๋ฅผ ๋ณด๋ฉด 2016, 2017๋…„๋„ 1๋“ฑ์€ Java์–ธ์–ด๊ฐ€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ, ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์˜ ์ธ๊ธฐ๊ฐ€ ๋†’์•„์ง€๋ฉด์„œ ๋น„์œจ์ด ๋–จ์–ด์ง„ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2006๋…„๋ถ€ํ„ฐ ์›น๊ณผ ๊ด€๋ จ๋œ ์–ธ์–ด๋“ค์ด ์ธ๊ธฐ๋ฅผ ์–ป๊ธฐ ์‹œ์ž‘ํ•˜์˜€๊ณ , 2012๋…„๋ถ€ํ„ฐ๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์–ธ์–ด๊ฐ€ ์ธ๊ธฐ๋ฅผ ์–ป๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  2016๋…„๋ถ€ํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ๊ณผํ•™๊ณผ ๊ด€๋ จ๋œ ์–ธ์–ด๋“ค์ด ์ธ๊ธฐ๋ฅผ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

์›น ๊ด€๋ จ ์ธ๊ธฐ ์–ธ์–ด

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

  • PHP : ์›น์˜ 80% ์ด์ƒ์ด PHP๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ PHP๋Š” ์›น ๊ฐœ๋ฐœ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 

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

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

  • Ruby : ๋น ๋ฅธ ๊ฐœ๋ฐœ์— ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋‹จ์ˆœํ•จ๊ณผ ์„ธ๋ จ๋œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ๊ธฐ ์žˆ๋Š” ์–ธ์–ด ์ค‘์˜ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.




2) ์›น์˜ ๋™์ž‘ (HTTP ํ”„๋กœํ† ์ฝœ ์ดํ•ด)

HTTP (Hypertext Transfer Protocol)๋ž€?

  • ํŒ€ ๋ฒ„๋„ˆ์Šค๋ฆฌ(Tim Berners-Lee)์™€ ๊ทธ๊ฐ€ ์†ํ•œ ํŒ€์€ CERN์—์„œ HTML๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐ ์›น ๋ธŒ๋ผ์šฐ์ € ๊ด€๋ จ ๊ธฐ์ˆ ๊ณผ HTTP๋ฅผ ๋ฐœ๋ช…ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์„œํ™”๋œ ์ตœ์ดˆ์˜ HTTP๋ฒ„์ „์€ HTTP v0.9(1991๋…„)์ž…๋‹ˆ๋‹ค.

  • HTTP๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ(protocol)์ž…๋‹ˆ๋‹ค.

  • HTTP๋Š” ๊ณ„์† ๋ฐœ์ „ํ•˜์—ฌ HTTP/2๊นŒ์ง€ ๋ฒ„์ „์ด ๋“ฑ์žฅํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

 

HTTP ์ž‘๋™๋ฐฉ์‹

  • HTTP๋Š” ์„œ๋ฒ„/ํด๋ผ์ด์–ธํŠธ ๋ชจ๋ธ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

  • ์žฅ์ 
    - ๋ถˆํŠน์ • ๋‹ค์ˆ˜๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์„œ๋น„์Šค์—๋Š” ์ ํ•ฉํ•˜๋‹ค.
    - ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๊ณ„์† ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์ตœ๋Œ€ ์—ฐ๊ฒฐ ์ˆ˜๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ์€ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋‹จ์ 
    - ์—ฐ๊ฒฐ์„ ๋Š์–ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ํด๋ผ์ด์–ธํŠธ์˜ ์ด์ „ ์ƒํ™ฉ์„ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค.
    - ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ๋ฌด์ƒํƒœ(Stateless)๋ผ๊ณ  ๋งํ•œ๋‹ค.
    - ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•Œ๋ฌธ์— ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ Cookie์™€ ๊ฐ™์€ ๊ธฐ์ˆ ์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

URL (Uniform Resource Locator)

  • ์ธํ„ฐ๋„ท ์ƒ์˜ ์ž์›์˜ ์œ„์น˜

  • ํŠน์ • ์›น ์„œ๋ฒ„์˜ ํŠน์ • ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋กœ ํ˜น์€ ์ฃผ์†Œ

  • ์š”์ฒญ ๋ฉ”์†Œ๋“œ : GET, PUT, POST, PUSH, OPTIONS ๋“ฑ์˜ ์š”์ฒญ ๋ฐฉ์‹์ด ์˜จ๋‹ค.

  • ์š”์ฒญ URI : ์š”์ฒญํ•˜๋Š” ์ž์›์˜ ์œ„์น˜๋ฅผ ๋ช…์‹œํ•œ๋‹ค.

  • HTTP ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ : ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „์ด๋‹ค.

 

์ฒซ๋ฒˆ์งธ ์ค„์˜ ์š”์ฒญ๋ฉ”์†Œ๋“œ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์˜ ์ข…๋ฅ˜๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ฐ๊ฐ์˜ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์ตœ์ดˆ์˜ ์›น ์„œ๋ฒ„๋Š” GET๋ฐฉ์‹๋งŒ ์ง€์›ํ•ด์คฌ์Šต๋‹ˆ๋‹ค.

  • GET : ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. (SELECT)

  • POST : ์ •๋ณด๋ฅผ ๋ฐ€์–ด๋„ฃ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. (INSERT)

  • PUT : ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. (UPDATE)

  • DELETE : ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. (DELETE)

  • HEAD : (HTTP)ํ—ค๋” ์ •๋ณด๋งŒ ์š”์ฒญํ•œ๋‹ค. ํ•ด๋‹น ์ž์›์ด ์กด์žฌํ•˜๋Š”์ง€ ํ˜น์€ ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

  • OPTIONS : ์›น์„œ๋ฒ„๊ฐ€ ์ง€์›ํ•˜๋Š” ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฅ˜๋ฅผ ์š”์ฒญํ•œ๋‹ค.

  • TRACE : ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ˆ์ปจ๋ฐ echo ์„œ๋น„์Šค๋กœ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.



3) ์›น Front-End ์™€ ์›น Back-End

์›นํ”„๋ก ํŠธ์—”๋“œ?

์‚ฌ์šฉ์ž์—๊ฒŒ ์›น์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์ฝ˜ํ…์ธ (๋ฌธ์„œ, ๋™์˜์ƒ, ์‚ฌ์ง„ ๋“ฑ)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ(์š”๊ตฌ์‚ฌํ•ญ)์— ๋ฐ˜์‘ํ•ด์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

์›นํ”„๋ก ํŠธ์—”๋“œ์˜ ์—ญํ• 

  • ์›น์ฝ˜ํ…์ธ ๋ฅผ ์ž˜ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.(์‹ ๋ฌธ,์ฑ…๋“ฑ๊ณผ ๊ฐ™์ด) - HTML

  • ์ ์ ˆํ•œ ๋ฐฐ์น˜์™€ ์ผ๊ด€๋œ ๋””์ž์ธ ๋“ฑ์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.(๋ณด๊ธฐ ์ข‹๊ฒŒ) - CSS

  • ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ์ž˜ ๋ฐ˜์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.(์†Œํ†ตํ•˜๋“ฏ์ด) - Javascript

 

์›ํ•˜๋Š” ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

HTML์ด๋ผ๋Š” ๊ฒƒ์€ ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ž˜ ํ‘œํ˜„ํ•ด ์ค๋‹ˆ๋‹ค.

 

์›นํŽ˜์ด์ง€๋ฅผ ๊พธ๋ฏธ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ๊ฐ์˜ HTML ํƒœ๊ทธ(๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•œ ๊ฐ ์กฐ๊ฐ ๋‹จ์œ„)๋ฅผ ๊พธ๋ฏธ๊ธฐ ์œ„ํ•œ ๊ทœ์น™์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค

CSS๋Š” ์ด๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.

 

HTML,CSS๋ฅผ ์ด๋ฆฌ์ €๋ฆฌ ์›€์ง์ด๊ณ  ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฑฐ์˜ˆ์š”.

JavaScript๊ฐ€ ๊ทธ๊ฑธ ํ•ด์ค๋‹ˆ๋‹ค.

 

๋ฐฑ์—”๋“œ(Back-End)๋ž€?

backend๋Š” ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ €์žฅํ•˜๋ฉฐ, ์š”์ฒญ์— ๋”ฐ๋ผ ์ •๋ณด๋ฅผ ๋‚ด๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๊ฐ€๋ น ์‡ผํ•‘๋ชฐ์ด๋ผ๋ฉด, ์ƒํ’ˆ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ฃผ๋ฌธ์„ ๋ฐ›์•„์„œ ์ €์žฅํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€์‹ฌ์žˆ์–ด ํ•˜๋Š” ์ƒํ’ˆ์„ ๊ณจ๋ผ์ฃผ๋Š” ์—ญํ• ์ด back-End์˜ ์—ญํ• ์ด๋‹ค.

 

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•  ๊ฒƒ๋“ค

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(JAVA,  Python, PHP, Javascript ๋“ฑ)

  • ์›น์˜ ๋™์ž‘ ์›๋ฆฌ

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜(algorithm), ์ž๋ฃŒ๊ตฌ์กฐ ๋“ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฐ˜ ์ง€์‹

  • ์šด์˜์ฒด์ œ, ๋„คํŠธ์›Œํฌ ๋“ฑ์— ๋Œ€ํ•œ ์ดํ•ด

  • ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ดํ•ด(์˜ˆ: Spring)

  • DBMS์— ๋Œ€ํ•œ ์ดํ•ด์™€ ์‚ฌ์šฉ๋ฐฉ๋ฒ•(์˜ˆ: MySQL, Oracle ๋“ฑ)

 

[์ฐธ๊ณ  ์ž๋ฃŒ] ์›นํ”„๋ก ํŠธ์—”๋“œ ์—ญํ• ์„ ์•„์ฃผ์•„์ฃผ ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”! http://html-css-js.com

 

 




4) browser์˜ ๋™์ž‘

๋ธŒ๋ผ์šฐ์ €๋Š” ์›”๋“œ์™€์ด๋“œ์›น(WWW)์—์„œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰, ํ‘œํ˜„ํ•˜๊ณ  ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.

 

์ธํ„ฐ๋„ท์—์„œ ํŠน์ • ์ •๋ณด๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ ์ž…๋ ฅ์ฐฝ์ด ์žˆ๊ณ  ์„œ๋ฒ„์™€ HTTP๋กœ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ ๋ชจ๋“ˆ๋„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ๋ฌธ์„œ(HTML, CSS, Javascript)๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ•ด์„๊ธฐ(Parser)๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ์—”์ง„์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์ด ๋Œ€ํ‘œ์ ์ธ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

์‚ฌํŒŒ๋ฆฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” webkit๋ Œ๋”๋ง์—”์ง„์˜ ์ฒ˜๋ฆฌ๊ณผ์ •

์ถœ์ฒ˜ https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/

HTML์„ ํ•ด์„ํ•ด์„œ DOM Tree๋ฅผ ๋งŒ๋“ค๊ณ , CSS๋ฅผ ํ•ด์„ํ•ด์„œ ์—ญ์‹œ CSS Tree(CSS Object Model)์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. 

์ด ๊ณผ์ •์—์„œ Parsing ๊ณผ์ •์ด ํ•„์š”ํ•˜๋ฉฐ ํ† ํฐ ๋‹จ์œ„๋กœ ํ•ด์„๋˜๋Š” ๋ฐฉ์‹์€ ์ผ๋ฐ˜์ ์ธ ์†Œ์Šค์ฝ”๋“œ์˜ ์ปดํŒŒ์ผ ๊ณผ์ •์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

DOM Tree์™€ CSS Tree, ์ด ๋‘ ๊ฐœ๋Š” ์—ฐ๊ด€๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ Render Tree๋กœ ๋‹ค์‹œ ์กฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์กฐํ•ฉ๋œ ๊ฒฐ๊ณผ๋Š” ํ™”๋ฉด์— ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜ํ• ์ง€ ํฌ๊ธฐ์™€ ์œ„์น˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ดํ›„์— ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ๋œ Render Tree์ •๋ณด๋ฅผ ํ†ตํ•ด์„œ ํ™”๋ฉด์— ์–ด๋–ค ๋ถ€๋ถ„์— ์–ด๋–ป๊ฒŒ ์ƒ‰์น ์„ ํ• ์ง€ Painting๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

- ์ปดํŒŒ์ผ์€ CPU๊ฐ€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋Š” machine code ๋˜๋Š” VM์ด ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋Š” byte code ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋‹จ๊ณ„

 

How Browsers Work: Behind the scenes of modern web browsers ์˜ ๋ฒˆ์—ญ๋ณธ์ž…๋‹ˆ๋‹ค.

https://d2.naver.com/helloworld/59361 

 

5) browser์—์„œ์˜ ์›น ๊ฐœ๋ฐœ

HTML ๋ฌธ์„œ๊ตฌ์กฐ

 

์•Œ๊ฒŒ ๋œ ๋ช‡ ๊ฐ€์ง€ ํŠน์ง•

  • HTML๋ฌธ์„œ๋Š” html์ด๋ผ๋Š” ํƒœ๊ทธ๋กœ ์‹œ์ž‘ํ•ด์„œ htmlํƒœ๊ทธ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค.

  • head๋Š” ๋ฌด์—‡์„ ํ•˜๋Š” ๊ฑธ๊นŒ์š”?

  • body๋Š” ๋ฌด์—‡์„ ํ•˜๋Š” ๊ฑธ๊นŒ์š”?

  • HTML์€ ๊ณ„์ธต์ ์ž…๋‹ˆ๋‹ค.

  • HTML์€ tag๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. <tag class="title">์•ˆ๋…•ํ•˜์„ธ์š”</tag>

  • JavaScript์™€ CSS๊ฐ€ html ์•ˆ์— ์—ฌ๊ธฐ์ €๊ธฐ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

 

<!doctype html>

<html>

 <head>

   <meta charset="utf-8">

   <meta name="viewport" content="width=device-width, initial-scale=1">

   <title>์ €๋ฅผ์†Œ๊ฐœํ•ด์š”</title>

   <link rel="stylesheet" href="css/style.css">

   <script src="js/start.js"></script>

 </head>

 <body>

   <h1>์•ˆ๋…•ํ•˜์„ธ์š”</h1>

   <div>์ฝ”๋“œ์Šค์ฟผ๋“œ ํฌ๋กฑ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค</div>

   <script src="js/library.js"></script>

   <script src="js/main.js"></script>

 </body>

</html>

 

HTML ๋ฌธ์„œ ์•ˆ์— HTMLํƒœ๊ทธ๋ฟ ์•„๋‹ˆ๋ผ CSS, JavaScript์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

JavaScript ์ฝ”๋“œ๋Š” body ํƒœ๊ทธ ๋‹ซํžˆ๊ธฐ ์ „์— or ๋‹ซํžˆ๊ณ  ๋‚˜์„œ ์œ„์น˜ํ•˜๋Š” ๊ฒƒ์ด ๋ Œ๋”๋ง์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์•„๋„ ์ข‹๊ณ , 

css์ฝ”๋“œ๋Š” head ์•ˆ์— ์œ„์น˜ํ•ด์„œ ๋ Œ๋”๋ง ์ฒ˜๋ฆฌ ์‹œ์— ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋” ๋นจ๋ฆฌ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

[์ฐธ๊ณ ๋งํฌ] ์›น์—์„œ html, css, javascript๋ฅผ ์‰ฝ๊ฒŒ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ http://www.jsbin.com

์‚ฌ์ดํŠธ ์ถ”์ฒœ jsbin.com (git๊ณผ ๋น„์Šทํ•œ ๊ฐœ๋…์œผ๋กœ)



6) ์›น์„œ๋ฒ„

์›น ์„œ๋ฒ„๋ž€?

  • ์›น ์„œ๋ฒ„๋Š” ์†Œํ”„ํŠธ์›จ์–ด(Software)๋ฅผ ๋ณดํ†ต ๋งํ•˜์ง€๋งŒ, ์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์ปดํ“จํ„ฐ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

  • ์›น ์„œ๋ฒ„์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์€ ํด๋ผ์ด์–ธํŠธ(Client)๊ฐ€ ์š”์ฒญํ•˜๋Š” HTML ๋ฌธ์„œ๋‚˜ ๊ฐ์ข… ๋ฆฌ์†Œ์Šค(Resource)๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋… - ์›น ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์›น ํฌ๋กค๋Ÿฌ๊ฐ€ ์š”์ฒญํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋Š” ์ปดํ“จํ„ฐ์— ์ €์žฅ๋œ ์ •์ (static)์ธ ๋ฐ์ดํ„ฐ์ด๊ฑฐ๋‚˜ ๋™์ ์ธ ๊ฒฐ๊ณผ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ƒˆ๋กœ ๊ณ ์นจ (๋‹ค์‹œ ์š”์ฒญ)

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” www.naver.com์ด๋ผ๋Š” ์›น ์„œ๋ฒ„์— ์ ‘์†์„ ํ–ˆ์„ ๊ฑฐ๊ณ ์š”.

ํ•ด๋‹น ์ฃผ์†Œ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ๋ณด์ด๋Š” HTML ๋ฌธ์„œ๋ฅผ ์š”์ฒญํ–ˆ์–ด์š”.

๊ทธ๋Ÿฌ๋ฉด ์›น ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ HTML ๋ฌธ์„œ๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „์†ก๋ฐ›์€ HTML ๋ฌธ์„œ๋ฅผ ์ฝ์–ด๋“ค์ธ ํ›„์— ํ•ด์„์„ ํ•ด์š”.

HTML ๋ฌธ์„œ๋ฅผ ์•Œ๋งž๊ฒŒ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ์ด๋ฏธ์ง€, CSS, JavaScript์™€ ๊ฐ™์€ ์ด๋Ÿฐ ๋ฆฌ์†Œ์Šค๋“ค์— ๋Œ€ํ•ด์„œ URL์„ ์ถ”์ถœํ•ด๋‚ด๊ณ ์š”. ์›น ์„œ๋ฒ„์—๊ฒŒ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์›น ์„œ๋ฒ„๋Š” ๋™์‹œ์— ์š”์ฒญํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์—ฌ์„œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ „์†กํ•ด์š”.

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์•„๊นŒ ํ•ด์„ํ–ˆ๋˜ HTML ๋ฌธ์„œ์™€ ๊ทธ๋ฆฌ๊ณ  ์ฝ์–ด๋“ค์ธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‘๋‹ต์„ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ๋ณด์ด๊ฒŒ ํ•˜๋Š” ๊ฑฐ์˜ˆ์š”.

 

๋ Œ๋”๋ง: ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ ๋ณด์—ฌ์ฃผ๋Š” ์ž‘์—…




์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ข…๋ฅ˜

  • ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์›น ์„œ๋ฒ„๋Š” Apache, Nginx, Microsoft IIS

  • Apache์›น ์„œ๋ฒ„๋Š” Apache Software Foundation์—์„œ ๊ฐœ๋ฐœํ•œ ์›น์„œ๋ฒ„๋กœ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด(Open-source Software)์ด๋ฉฐ, ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ ์šด์˜์ฒด์ œ์—์„œ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Nginx๋Š” ์ฐจ์„ธ๋Œ€ ์›น์„œ๋ฒ„๋กœ ๋ถˆ๋ฆฌ๋ฉฐ ๋” ์ ์€ ์ž์›์œผ๋กœ ๋” ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋น„์Šคํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์„œ๋ฒ„์ด๋ฉฐ Apache์›น ์„œ๋ฒ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์˜คํ”ˆ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.



7) WAS

 

ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๊ตฌ์กฐ

ํด๋ผ์ด์–ธํŠธ(Client)๋Š” ์„œ๋น„์Šค(Service)๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„(Server)์—๊ฒŒ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜์—ฌ ์‘๋‹ต ๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.





DBMS (DataBase Management System)

๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.

๋ฏธ๋“ค์›จ์–ด (MiddleWare)

ํด๋ผ์ด์–ธํŠธ ์ชฝ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋งŽ์„ ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ ๊ด€๋ฆฌ(๋ฐฐํฌ ๋“ฑ)๋กœ ์ธํ•ด ๋น„์šฉ์ด ๋งŽ์ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํด๋ผ์ด์–ธํŠธ์™€ DBMS์‚ฌ์ด์˜ ๋ฏธ๋“ค์›จ์–ด ์„œ๋ฒ„์—์„œ ๋™์ž‘ํ•˜๋„๋ก ํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ๋Š” ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ๋งŒ ๋‹ด๋‹นํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

WAS (Web Application Server)

WAS๋Š” ์ผ์ข…์˜ ๋ฏธ๋“ค์›จ์–ด๋กœ ์›น ํด๋ผ์ด์–ธํŠธ(๋ณดํ†ต ์›น ๋ธŒ๋ผ์šฐ์ €)์˜ ์š”์ฒญ ์ค‘ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ํ•˜๋„๋ก ์ง€์›ํ•˜๋Š” ๋ชฉ์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. * ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•ด์„œ ์–ป์€ ๊ฒฐ๊ณผ → ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋ผ ๋งํ•จ

๊ธฐ๋Šฅ1 ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘์† ๊ธฐ๋Šฅ ์ œ๊ณต, ๊ธฐ๋Šฅ 2 ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜(๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„) ๊ด€๋ฆฌ, ๊ธฐ๋Šฅ 3 ์—…๋ฌด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ˆ˜ํ–‰

์›น ์„œ๋ฒ„ vs WAS

  • WAS๋„ ๋ณดํ†ต ์ž์ฒด์ ์œผ๋กœ ์›น ์„œ๋ฒ„ ๊ธฐ๋Šฅ์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ๋Š” WAS๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์›น ์„œ๋ฒ„๋„ ์ •์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์„ฑ๋Šฅ์ƒ ํฐ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  • ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์›น ์„œ๋ฒ„์™€ WAS๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • ์ž์› ์ด์šฉ์˜ ํšจ์œจ์„ฑ ๋ฐ ์žฅ์•  ๊ทน๋ณต, ๋ฐฐํฌ ๋ฐ ์œ ์ง€๋ณด์ˆ˜์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด ์›น์„œ๋ฒ„์™€ WAS๋ฅผ ๋Œ€์ฒด๋กœ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

'Spring > Boost Course Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

2.4 JSP  (0) 2020.11.19
2.3 Servlet  (0) 2020.11.19
2.2 ์›น ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •  (0) 2020.11.19
1.5 JDBC  (0) 2020.11.19
1.4 Maven  (0) 2020.11.19
1.3 ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •  (0) 2020.11.09