week 6 incheol - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki

์•Œ๊ณ ๋ฆฌ์ฆ˜

๊ธฐ์ˆ  ๋ฌธ์ œ

  • JAVA (์ •์ธ์ฒ )

    • Collection์˜ ์ข…๋ฅ˜์™€ ํŠน์ง•์„ ์„ค๋ช…ํ•˜์‹œ์˜ค

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

      ์ด๋Ÿฌํ•œ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์€ ์–ด๋– ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋Š”์ง€์— ๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ์ ์ธ ์„ฑ๊ฒฉ์ด ๋‹ฌ๋ผ์ง„๋‹ค.

      ์šฐ์„  List๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋“ค์€ ์ธ๋ฑ์Šค ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

      Set์„ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋“ค์€ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉฐ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

      Map์„ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋“ค์€ ํ‚ค(key)์™€ ๊ฐ’(value)์„ ๋™์‹œ์— ์ €์žฅํ•œ๋‹ค.(์ฆ‰, ํ‚ค(key)๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.) ์ด๋•Œ ํ‚ค๋Š” ์ค‘๋ณต ์ €์žฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

      1. Set ์ธํ„ฐํŽ˜์ด์Šค

      ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

      • HashSet- ๊ฐ€์žฅ๋น ๋ฅธ ์ž„์˜ ์ ‘๊ทผ ์†๋„- ์ˆœ์„œ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Œ
      • TreeSet- ์ •๋ ฌ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ

      2. List ์ธํ„ฐํŽ˜์ด์Šค

      ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ๋‹ค.

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

      3. Map ์ธํ„ฐํŽ˜์ด์Šค

      ํ‚ค(Key), ๊ฐ’(Value)์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ์œผ ์ง‘ํ•ฉ์œผ๋กœ,

      ์ˆœ์„œ๋Š” ์œ ์ง€๋˜์ง€ ์•Š์œผ๋ฉฐ ํ‚ค(Key)์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋‚˜ ๊ฐ’(Value)์˜ ์ค‘๋ณต์€ ํ—ˆ์šฉํ•œ๋‹ค.

      • Hashtable- HashMap๋ณด๋‹ค๋Š” ๋Š๋ฆฌ์ง€๋งŒ ๋™๊ธฐํ™” ์ง€์›- null๋ถˆ๊ฐ€
      • HashMap- ์ค‘๋ณต๊ณผ ์ˆœ์„œ๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ null๊ฐ’์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
      • TreeMap- ์ •๋ ฌ๋œ ์ˆœ์„œ๋Œ€๋กœ ํ‚ค(Key)์™€ ๊ฐ’(Value)์„ ์ €์žฅํ•˜์—ฌ ๊ฒ€์ƒ‰์ด ๋น ๋ฆ„

      ์ปฌ๋ ‰์…˜ ๊ด€๋ จ ์งˆ๋ฌธ

      1. Iterator๋Š” ๋ฌด์—‡์ธ๊ฐ€?
        • Iterator ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ปฌ๋ ‰์…˜์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต
        • iterator ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ปฌ๋ ‰์…˜์œผ๋กœ ๋ถ€ํ„ฐ iterator instance๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
        • ์ž๋ฐ” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ Enumeration์— ์†ํ•œ๋‹ค.
      2. List๋ฅผ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€?
        • Iterator ์‚ฌ์šฉ
          • Iterator๋Š” thread-safe
            • ๋ฐ˜๋ณต ๋„์ค‘์— ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์ˆ˜์ •๋˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ConcurrentModificationException์„ ๋ฐœ์ƒ
        • for-each loop ์‚ฌ์šฉ
      3. ์ปฌ๋ ‰์…˜์„ ์ˆœํšŒํ•˜๋Š” ๋„์ค‘์— ConcurrentModificationException์ด ๋ฐœ์ƒํ•˜๋Š”๊ฒƒ์„ ํ”ผํ• ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ๋˜๋Š”๊ฐ€?
        • concurrent ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ConcurrentModificationException์ด ๋ฐœ์ƒํ•˜๋Š”๊ฒƒ ์˜ˆ๋ฐฉ๊ฐ€๋Šฅ
          • ex) ArrayList ๋Œ€์‹  CopyOnWriteArrayList๋ฅผ ์‚ฌ์šฉ
      4. HashMap๊ณผ TreeMap์ค‘ ๋ฌด์—‡์„ ์‚ฌ์šฉํ• ์ง€ ์–ด๋–ป๊ฒŒ ํŒ๋‹จํ•˜๋Š”๊ฐ€?
        • HashMap : ์—˜๋ฆฌ๋จผํŠธ๋“ค์„ ์ถ”๊ฐ€, ์‚ญ์ œ, ์œ„์น˜ ๋ณ€๊ฒฝ๋“ฑ์˜ ์ž‘์—… ํ•  ๋•Œ
        • TreeMap : ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” key๊ฐ’์— ๋”ฐ๋ผ ํƒ์ƒ‰ ํ•  ๋•Œ
      5. ArrayList์™€ LinkedList์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€?
        • ArrayList
          • ์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜์˜ Array๋กœ ๊ตฌ์„ฑ
          • ๋žœ๋ค ์—‘์„ธ์Šค๋ฅผ ํ•  ๊ฒฝ์šฐ ์†๋„๋Š” O(1)
        • LinkedList
          • ๋ฐ์ดํ„ฐ๋“ค์ด ์ด์ „, ๋‹ค์Œ ๋…ธ๋“œ ์ฒ˜๋Ÿผ ์„œ๋กœ ์—ฐ๊ฒฐ๋œ node๋กœ ๊ตฌ์„ฑ
          • LinkedList ์˜ ์†๋„๋Š” O(n)์œผ๋กœ ArrayList ๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค.
          • ์—˜๋ฆฌ๋จผํŠธ์˜ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ๋Š” LinkedList๊ฐ€ ArrayList๋ณด๋‹ค ๋น ๋ฅด๋‹ค.
            • ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œํ•˜๋Š” ์ค‘์— array๋ฅผ ๋ฆฌ์‚ฌ์ด์ฆˆ ํ•˜๊ฑฐ๋‚˜ ์ธ๋ฑ์Šค๋ฅผ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•  ์ผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ
          • ์—˜๋ฆฌ๋จผํŠธ๋“ค์€ ์ด์ „, ๋‹ค์Œ ์—˜๋ฆฌ๋จผํŠธ๋“ค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ArrayList๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„
      6. Concurrent ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋Š” ๋ฌด์—‡์ธ๊ฐ€?
        • thread-safe ํ•˜๊ณ  iterating ์ž‘์—… ์ค‘์— ์ปฌ๋ ‰์…˜์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋“ค์„ ํฌํ•จ
        • ๋Œ€ํ‘œ์ ์œผ๋กœ CopyOnWriteArrayList, ConcurrentHashMap,CopyOnWriteArraySet์ด ์žˆ๋‹ค.
    • Call By Value / Call By Reference ์ฐจ์ด ์„ค๋ช… ๋ฐ ์˜ˆ์‹œ

      • call by value๋Š” ๋ฐ์ดํ„ฐ(๊ฐ’)์„ ๋ณต์‚ฌํ•ด์„œ ํ•จ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ์˜ ๋ฐ์ดํ„ฐ(๊ฐ’)๊ฐ€ ๋ณ€๊ฒฝ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์—†์ง€๋งŒ ์ธ์ž๋ฅผ ๋„˜๊ฒจ์ค„ ๋•Œ ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ข€ ๋” ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
      • call by reference์˜ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ• ๋‹น์˜ ์ด์Šˆ๋Š” ์—†์ง€๋งŒ ์›๋ณธ์˜ ๋ฐ์ดํ„ฐ(๊ฐ’)์„ ํ›ผ์†ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค.
  • SPRING (์ด๊ฒฝํฌ)

    • AspectJ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”

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

    • ์Šคํ”„๋ง ๋นˆ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑ๋˜๋Š”๋ฐ ๊ตณ์ด ๋‚ด๋ถ€์— ์ƒํƒœ๋ฅผ ๋‘๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

      Bean์ด ๋ฌด์—‡?

      • ์Šคํ”„๋ง IOC ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ๊ด€๋ฆฌ๋˜๊ณ  ์—ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ์„ ์ด๋ฃจ๋Š” ๊ฐ์ฒด
      • IOC ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ธ์Šคํ„ด์Šคํ™”๋˜์–ด ์กฐ๋ฆฝ๋˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด
      • ์œ„๋ฅผ ์ œ์™ธ ํ•˜๋ฉด ์ž๋ฐ”์˜ ๊ฐ์ฒด์™€ ๋™์ผ
      • ๋นˆ๊ณผ ๋นˆ ์‚ฌ์ด์˜ ์˜์กด์„ฑ์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์˜ํ•ด ๊ด€๋ฆฌ ๋จ

      Life cycle

      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e69daa2b-afc2-4fba-913b-fba133959f53/Untitled.png

      Scope

      https://s3-us-west-2.amazonaws.com/secure.notion-static.com/a8e319cc-13b0-4361-9717-e4aed4a9c337/Untitled.png

  • Infra/์šด์˜ (์žฅ์ง€์ˆ˜)

    • ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹๊ณผ ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹์˜ ์ฐจ์ด

      • ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹

        ์•”ํ˜ธํ™”ํ‚ค์™€ ๋ณตํ˜ธํ™”ํ‚ค๊ฐ€ ๋™์ผํ•œ ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•

        ์•”ํ˜ธ๋ฌธ์„ ์†ก์‹ /์ˆ˜์‹ ํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ์‚ฌ์ „์— ์•”ํ˜ธํ™”ํ‚ค๋ฅผ ๊ตํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

        ํ‚ค ๊ตํ™˜์„ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

        ์ž‘์€ ๋น„ํŠธ์˜ ์•”ํ˜ธํ™”ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์•”/๋ณตํ˜ธํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

        ์ข…๋ฅ˜ : RC4, SEAL, OTP

      • ๊ณต๊ฐœํ‚ค ์•”ํ˜ธํ™” ๋ฐฉ์‹

        ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค 2๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”/๋ณตํ˜ธํ™”๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•

        ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณต๊ฐœํ‚ค๋ฅผ ๋ฐ›์€ ๋’ค ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•˜๊ณ , ์ˆ˜์‹ ์ž๋Š” ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐœ์ธํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

        ๋Œ€์นญํ‚ค์˜ ํ‚ค๊ตํ™˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ

        ํ‚ค์˜ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์„œ ์•”/๋ณตํ˜ธํ™”์˜ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค.

        ์ข…๋ฅ˜ : ๋””ํ”ผ๋ ๋งŒ, RSA, DAS, ECC

    • Nginx์™€ Apache์ค‘ ์–ด๋–ค๊ฑธ ์„ ํƒํ• ๊ฒƒ์ธ๊ฐ€?

      [ Apache ]

      1. ์Šค๋ ˆ๋“œ / ํ”„๋กœ์„ธ์Šค ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ

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

      [ ์š”์ฒญ์ด ๋งŽ์„์ˆ˜๋ก CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ]

      [ NginX ]

      [ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์ด ์ด๋ฒคํŠธ์— ์˜ํ•ด ๊ฒฐ์ •์ด ๋˜๋Š” Event Driven ๋ฐฉ์‹์˜ ์›น ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.]

      1. Event-Driven ์ฒ˜๋ฆฌ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ

      - Event-Driven ์ฒ˜๋ฆฌ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปค๋„ฅ์…˜์„ ๋ชจ๋‘ Event-Handler๋ฅผ ํ†ตํ•ด ๋น„ ๋™์‹ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ด ๋จผ์ € ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ๋กœ์ง์ด ์ง„ํ–‰ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋ฒ•์˜ ์ฃผ ์‚ฌ์šฉ ๋ชฉ์ ์€ ๋Œ€ํ™”ํ˜• ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š”๋ฐ PCP ์ฒ˜๋ฆฌ์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

      *** Event-Driven ๋ฐฉ์‹์ด๋ž€ ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฐ ์ƒํƒœ๋ฅผ ์ •ํ•ด์„œ Event๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค event๋ฅผ ์ฒ˜๋ฆฌ**

      https://k.kakaocdn.net/dn/nsMYW/btqxGaQTl6O/zQwB8vDmOaadPSRnzHIYRk/img.png

      NginX์˜ Event-Driven์ฒ˜๋ฆฌ ๋ฐฉ์‹


      [ NginX๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—context Switching๋น„์šฉ์ด ์ ๊ณ CPU์†Œ๋ชจ๋„ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ]

      [ ์ ์€ ์ˆ˜์˜ ์Šค๋ ˆ๋“œ๋กœ ํšจ์œจ์ ์œผ๋กœ ์ผ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์Šค๋ ˆ๋“œ๋‹น ํ• ๋‹น๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋„ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค. ]

      Event-Driven ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋‹ˆ ํ”„๋กœ์„ธ์Šค๋ฅผ Fork ํ•˜๊ฑฐ๋‚˜ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์•„ํŒŒ์น˜์™€ ๋‹ฌ๋ฆฌ

      CPU์™€ ๊ด€๊ณ„์—†์ด ๋ชจ๋“  IO๋“ค์„ ์ „๋ถ€ Event Listener๋กœ ๋ฏธ๋ฃจ๊ธฐ ๋•Œ๋ฌธ์—

      ํ๋ฆ„์ด ๋Š๊ธฐ์ง€ ์•Š๊ณ  ์‘๋‹ต์ด ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰์ด ๋˜์–ด 1๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋กœ ๋” ๋น ๋ฅธ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ์ด ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์—์„œ NginX๊ฐ€ System Resource๋ฅผ ์ ๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.