๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ž๊ฒฉ์ฆ/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

[์‹ค๊ธฐ] ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ 23๋…„ 1ํšŒ ๊ธฐ์ถœ ์˜ค๋‹ต๋…ธํŠธ

by ๐Ÿณ Laboon 2024. 7. 26.

4๋ฒˆ

  • ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ 
    • ์†ก, ์ˆ˜์‹  ์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ๋ฐ ์ฒ˜๋ฆฌ๋ฅผ ์‹คํ˜„ํ•ด์ฃผ๋Š” ์ž‘์—…
    • ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ์ด์šฉํ•œ ๊ตฌํ˜„ - AJAX, Http2, Rest, ... 
      • Application ์˜์—ญ์—์„œ data format์„ ์ธํ„ฐํŽ˜์ด์Šค ๋Œ€์ƒ์œผ๋กœ ์ „์†ก
      • ์ˆ˜์‹ ์ธก์—์„œ ํŒŒ์‹ฑํ•˜์—ฌ ํ•ด์„
      • JSON, XML ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ ํฌ๋งท์ด ์žˆ์Œ.
      • JSON์„ ์ด์šฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ์ˆœ์„œ
        • ์†ก์‹  ์ธก
          • ์ƒ์„ฑํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด๋ฅผ ์„ ํƒ
          • JSON์„ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด๋กœ ๋งŒ๋“ฆ
          • ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํ„ฐ ํ†ต์‹  ๊ธฐ์ˆ  ๋“ฑ์„ ์ด์šฉํ•ด ์ˆ˜์‹ ์ธก์œผ๋กœ ์ „์†ก
        • ์ˆ˜์‹  ์ธก
          • ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด๋ฅผ ์ˆ˜์‹ 
          • ํŒŒ์‹ฑ ํ›„ ์ฒ˜๋ฆฌ
          • ์†ก์‹  ์ธก์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ ์ „์†ก
      • AJAX (Asynchronous Javascript and XML)
        • js ๋ฅผ ์‚ฌ์šฉํ•ด ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ XML ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” '๋น„๋™๊ธฐ ํ†ต์‹ ' ๊ธฐ์ˆ 
      • JSON (JavaScript Object Notation)
        • ์šฉ๋Ÿ‰์ด ์ ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ์˜ ์Œ(Attribute-Value Pairs) ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€ ํฌ๋งท
        • XML์„ ๋Œ€์ฒดํ•ด์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Œ.
  • ์ธํ„ฐํŽ˜์ด์Šค ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ด์šฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ - API Docs (Swagger)
    • ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ•„์š”ํ•œ ์‹œ์Šคํ…œ ์‚ฌ์ด ๋ณ„๋„์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋‘์–ด ์ƒํ˜ธ์—ฐ๊ณ„
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ํ…Œ์ด๋ธ”์„ ์—”ํ‹ฐํ‹ฐ๋กœ ํ™œ์šฉ 
    • ์ธํ„ฐํŽ˜์ด์Šค ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ์ˆœ์„œ
      • ์†ก์‹  ์ธก
        • ์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ ์‹œ ์ธํ„ฐํŽ˜์ด์Šค ํ…Œ์ด๋ธ”์— ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ก
        • ์ธํ„ฐํŽ˜์ด์Šค ํ…Œ์ด๋ธ”์—์„œ ์ •ํ•ด์ง„ ์ฃผ๊ธฐ์— ๋”ฐ๋ผ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†ก
      • ์ˆ˜์‹ ์ธก
        • ์ธํ„ฐํŽ˜์ด์Šค ํ…Œ์ด๋ธ”์— ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ์ •ํ•ด์ง„ ์ฃผ๊ธฐ์— ๋”ฐ๋ผ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Œ
        • ์ธํ„ฐํŽ˜์ด์Šค ํ…Œ์ด๋ธ”์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์€ ํ›„ ์‚ฌ์ „์— ์ •์˜๋œ ๋ฐ์ดํ„ฐ ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰

6๋ฒˆ

  • VPN (Virtual Private Network, ๊ฐ€์ƒ ์‚ฌ์„ค ํ†ต์‹ ๋ง)
    • ์ธํ„ฐ๋„ท ๋“ฑ ํ†ต์‹  ์‚ฌ์—…์ž(ISP)์˜ ๊ณต์ค‘ ๋„คํŠธ์›Œํฌ์™€ ์•”ํ˜ธํ™” ๊ธฐ์ˆ ์„ ์ด์šฉ
    • ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์น˜ ์ „์šฉ ํšŒ์„ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ•ด์ฃผ๋Š” ๋ณด์•ˆ ์†”๋ฃจ์…˜
    • SSL VPN
      • PC์— VPN Client ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜์—ฌ VPN ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ๋ฐฉ์‹
      • ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•ด SSL ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค.
    • IPSec VPN
      • VPN ์„œ๋ฒ„๊ฐ€ ์„ค์น˜๋œ ๊ฐ ๋„คํŠธ์›Œํฌ๋ฅผ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹
      • ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•ด IPSec ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉ
    • SSL(Secure Sockets Layer)
      • ์†ก, ์ˆ˜์‹  ํ•˜๋Š” ์ปดํ“จํ„ฐ ์‚ฌ์ด TCP/IP ๊ณ„์ธต๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต ์‚ฌ์ด์—์„œ ์ธ์ฆ, ์•”ํ˜ธํ™”, ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ
      • ์ฆ‰, ์ „์†ก ๊ณ„์ธต๊ณผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต
    • IPsec(IP security)
      • ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์—์„œ IP ํŒจํ‚ท ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ ๋ณ€์กฐ ๋ฐฉ์ง€ ๋ฐ ์€๋‹‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณต
    • PPTP(Point-to-Point Tunneling Protocol)
      • ์ง€์  ๊ฐ„ ํ„ฐ๋„๋ง ํ”„๋กœํ† ์ฝœ
      • MS๊ฐ€ ์ œ์•ˆํ•œ VPN ํ”„๋กœํ† ์ฝœ
      • PPP์— ๊ธฐ์ดˆ, ๋‘ ๋Œ€๊ฐ€ ์ง๋ ฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•ด ํ†ต์‹  
      • ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต
    • L2F(Layer 2 Forwarding)
      • Cisco Systems๊ฐ€ ๊ฐœ๋ฐœํ•œ VPN ํ”„๋กœํ† ์ฝœ
      • PPTP๋‚˜ IPsec๊ณผ ๋‹ฌ๋ฆฌ, ๋ฐ์ดํ„ฐ ๋งํฌ ์ˆ˜์ค€์—์„œ ์บก์Аํ™”๊ฐ€ ๊ฐ€๋Šฅ
      • IP ๋„คํŠธ์›Œํฌ ์ด์™ธ์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • L2TP (Layer 2 Tunneling Protocol)
      • ํ„ฐ๋„๋ง ํ”„๋กœํ† ์ฝœ์ธ PPTP์™€ VPN ๊ตฌํ˜„์— ์‚ฌ์šฉ
      • L2F์˜ ๊ธฐ์ˆ ์  ์žฅ์ ์„ ๊ฒฐํ•ฉ
      • ์ž์ฒด์ ์œผ๋กœ ์•”ํ˜ธํ™” ๋ฐ ์ธ์ฆ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ.
      • ๋‹ค๋ฅธ ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ

8๋ฒˆ

  • ์›Œํ„ฐ๋ง ํ™€ (Watering Hole)
    • ๋ชฉํ‘œ ์กฐ์ง์ด ์ž์ฃผ ๋ฐฉ๋ฌธํ•˜๋Š” ์›น ์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์ „์— ๊ฐ์—ผ
    • ๋ชฉํ‘œ ์กฐ์ง์ด ์›น ์‚ฌ์ดํŠธ์— ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ, ์•…์„ฑ ์ฝ”๋“œ์— ๊ฐ์—ผ๋˜๊ฒŒ ํ•˜๋Š” ์›น ๊ธฐ๋ฐ˜ ๊ณต๊ฒฉ
  • ์›œ (Worm)
    • ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์—ฐ์†์ ์œผ๋กœ ์ž์‹ ์„ ๋ณต์ œ
    • ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ๋†’์—ฌ ์‹œ์Šคํ…œ์„ ๋‹ค์šด ์‹œํ‚ด
    • ๋ถ„์‚ฐ ์„œ๋น„์Šค ๊ณต๊ฒฉ (Dos), ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ ๊ณต๊ฒฉ, ์Šฌ๋ž˜๋จธ ๋“ฑ์œผ๋กœ ์ง„ํ™”
  • ์ข€๋น„(Zombie) PC
    • ์•…์„ฑ์ฝ”๋“œ์— ๊ฐ์—ผ๋˜์–ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์ปดํ“จํ„ฐ๋ฅผ ์กฐ์ข…ํ•จ.
    • C&C (Command & Control) ์„œ๋ฒ„์˜ ์ œ์–ด๋ฅผ ๋ฐ›์•„ Ddos ๊ณต๊ฒฉ ๋“ฑ์— ์ด์šฉ๋˜๋Š” PC
  • C&C ์„œ๋ฒ„
    • ํ•ด์ปค๊ฐ€ ์›๊ฒฉ์ง€์—์„œ ๊ฐ์—ผ๋œ ์ข€๋น„ PC์— ๋ช…๋ น์„ ๋‚ด๋ฆผ
    • ์•…์„ฑ์ฝ”๋“œ๋ฅผ ์ œ์–ดํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ ๋จ.
  • ๋ด‡๋„ท (Botnet)
    • ์•…์„ฑ ํ”„๋กœ๊ทธ๋žจ์— ๊ฐ์—ผ๋˜์–ด ์•…์˜์ ์ธ ์˜๋„๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๋‹ค์ˆ˜์˜ PC๊ฐ€ ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ
    • ์ฆ‰, ์ข€๋น„ PC์˜ ๋„คํŠธ์›Œํฌ(?)
    • ๊ณต๊ฒฉ์ž๋Š” Master ์‹œ์Šคํ…œ(์ข€๋น„ PC)์œผ๋กœ Agent ์‹œ์Šคํ…œ(์ข€๋น„ PC)๋ฅผ ์กฐ์ข…ํ•ด ๊ณต๊ฒฉ๋Œ€์ƒ์— ๋ถ„์‚ฐ ๊ณต๊ฒฉ์„ ํ•˜๋“  ํ•  ์ˆ˜ ์žˆ์Œ
    • Master ์‹œ์Šคํ…œ ์—ญํ• ์„ ํ•ธ๋“ค๋Ÿฌ(Handler)๋ผ๊ณ  ํ•˜๊ณ  Agent ์‹œ์Šคํ…œ ์—ญํ• ์„ ๋ฐ๋ชฌ(Demon)์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ œ๋กœ ๋ฐ์ด ๊ณต๊ฒฉ (Zero Day Attack)
    • ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ ๋˜์—ˆ์„ ๋•Œ, ๋ฐœ๊ฒฌ๋œ ์ทจ์•ฝ์ ์ด ๊ณตํ‘œ๋˜๊ธฐ ์ „ ๊ณต๊ฒฉ
    • ์ทจ์•ฝ์ ์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ณด์•ˆ ๊ณต๊ฒฉ, ์‹ ์†ํ•˜๊ฒŒ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ œ๋กœ๋ฐ์ด
  •  ํ‚ค๋กœ๊ฑฐ ๊ณต๊ฒฉ (Key Logger AttacK)
    • ์ปดํ“จํ„ฐ ์‚ฌ์šฉ์ž์˜ ํ‚ค๋ณด๋“œ ์›€์ง์ž„์„ ํƒ์ง€ํ•ด ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋นผ๊ฐ
  • ๋žœ์„ฌ ์›จ์–ด (Ransomeware)
    • ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž PC์— ์ž ์ž…, ๋‚ด๋ถ€ ๋ฌธ์„œ๋‚˜ ํŒŒ์ผ ๋“ฑ์„ ์•”ํ˜ธํ™” ํ•จ.
    • ์•”ํ˜ธ ํ•ด๋…์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์กฐ๊ฑด์œผ๋กœ ๋ˆ์„ ์š”๊ตฌ ํ•˜๋Š” ์•…์งˆ
  • ๋ฐฑ๋„์–ด (Back Door, Trap Door)
    • ์‹œ์Šคํ…œ ์„ค๊ณ„์ž๊ฐ€ ์„œ๋น„์Šค ๊ธฐ์ˆ ์ž, ์œ ์ง€ ๋ณด์ˆ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๋“ฑ์˜ ์ ‘๊ทผ ์šฉ์ด์„ฑ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด ๋†“์€ ๋น„๋ฐ€ ํ†ต๋กœ
    • ํ•ด์ปค๊ฐ€ ์‹œ์Šคํ…œ ๋ณด์•ˆ์ด ์ œ๊ฑฐ๋œ ๋น„๋ฐ€ ํ†ต๋กœ๋ฅผ ์ฐพ์•„์„œ ์ปดํ“จํ„ฐ ๋ฒ”์ฃ„์— ์•…์šฉํ•จ
    • ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ, ์—ด๋ฆฐ ํฌํŠธ, ๋กœ๊ทธ ๋ถ„์„, setUID ํŒŒ์ผ ๊ฒ€์‚ฌ ๋“ฑ์œผ๋กœ ๋ฐฑ๋„์–ด ํƒ์ง€ ๊ฐ€๋Šฅ 
  • ํŠธ๋กœ์ด ๋ชฉ๋งˆ (Trojan Horse)
    • ์ •์ƒ์ ์ธ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์œ„์žฅํ•ด ํ”„๋กœ๊ทธ๋žจ ๋‚ด ์ˆจ์–ด ์žˆ์Œ
    • ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•  ๋•Œ, ํ™œ์„ฑํ™”๋˜์–ด ๋ถ€์ž‘์šฉ์„ ์ผ์œผํ‚ด
    • ์ข€๋น„ PC๋กœ ๋งŒ๋“ค ๋•Œ, ์•…์„ฑ ํ”„๋กœ๊ทธ๋žจ์„ ์ •์ƒ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ•ฉ์„ฑํ•ด์„œ ๋ฐฐํฌ
    • ์ •์ƒ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์ข€๋น„ PC๊ฐ€ ๋จ.

11๋ฒˆ 

  • ๋””์ž์ธ ํŒจํ„ด
    • ๋ชจ๋“ˆ ๊ฐ„ ๊ด€๊ณ„ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„ ์‹œ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ์ „ํ˜•์ ์ธ ๋ฐฉ์‹ ๋˜๋Š” ์˜ˆ์ œ
    • GoF์˜ ๋””์ž์ธ ํŒจํ„ด

์ƒ์„ฑ ํŒจํ„ด (Creational Pattern)

  • ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์ฐธ์กฐ ๊ณผ์ •์„ ์ •์˜
  • ์ถ”์ƒ ํŒฉํ† ๋ฆฌ (Abstract Factory)
    • ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ์•Š์Œ.
    • ์„œ๋กœ ์—ฐ๊ด€ ๋ฐ ์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ๊ทธ๋ฃน์œผ๋กœ ์ƒ์„ฑํ•ด ์ถ”์ƒ์ ์œผ๋กœ ํ‘œํ˜„
    • ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ƒ์œ„ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๊ฒƒ๋“ค์„ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด ๋‘ .
    • ์ž๋™์ฐจ์˜ ๋ฐ”ํ€ด, ์—”์ง„, ๊ธฐ๋Šฅ ๋“ค
  • ๋นŒ๋” (Builder)
    • ์ž‘๊ฒŒ ๋ถ„๋ฆฌ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฑด์ถ• ํ•˜๋“ฏ์ด ์กฐํ•ฉํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
    • ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๊ณผ์ •, ํ‘œํ˜„ ๋ฐฉ๋ฒ•์„ ๋ถ„๋ฆฌํ•˜๊ณ  ์žˆ์Œ.
    • ๋™์ผํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์—์„œ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.
  • ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ (Factory Method)
    • Virtual Constructor(๊ฐ€์ƒ ์ƒ์„ฑ์ž) ํŒจํ„ด
    • ๊ฐ์ฒด ์ƒ์„ฑ์„ ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ถ„๋ฆฌ ํ›„ ์บก์Аํ™” 
    • ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ •์˜ํ•˜๊ณ  ์‹ค์ œ ์ƒ์„ฑ์€ ์„œ๋ธŒ ํด๋ž˜์Šค๊ฐ€ ํ•จ.
  • ํ”„๋กœํ† ํƒ€์ž… (Prototype)
    • ์›๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŒจํ„ด์œผ๋กœ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ - new
    • ๋น„์šฉ์ด ํฐ ๊ฒฝ์šฐ ์ฃผ๋กœ ์ด์šฉ
  • ์‹ฑ๊ธ€ํ†ค (Singleton)
    • ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์–ด๋””์„œ๋“  ์ฐธ์กฐํ•  ์ˆ˜ ์ž‡๋‹ค.
    • ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ฐธ์กฐํ•  ์ˆ˜๋Š” ์—†๋‹ค.
    • ํด๋ž˜์Šค ๋‚ด์—์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜ ๋ฟ์ž„์„ ๋ณด์žฅํ•ด์•ผํ•œ๋‹ค.
    • ๋ถˆํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ตฌ์กฐ ํŒจํ„ด(Structural Pattern)

  • ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‰ฝ๋„๋ก ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ๋” ํฐ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ฌ
  • ์–ด๋Œ‘ํ„ฐ (Adapter)
    • ํ˜ธํ™˜์„ฑ์ด ์—†๋Š” ํด๋ž˜์Šค๋“ค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค๋ฅธ ํด๋ž˜์Šค๊ฐ€ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜
    • ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ, ์–ด๋Œ‘ํ„ฐ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฌ์šฉ
  • ๋ธŒ๋ฆฌ์ง€ (Bridge)
    • ๊ตฌํ˜„๋ถ€์—์„œ ์ถ”์ƒ์ธต์„ ๋ถ„๋ฆฌ
    • ์„œ๋กœ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•œ ํŒจํ„ด
    • ๊ธฐ๋Šฅ๊ณผ ๊ตฌํ˜„์„ ๋‘ ๊ฐœ์˜ ๋ณ„๋„ ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.
    • Spring ์—์„œ Repository, Controller์—์„œ ๋‹ค๋ฅธ Interface๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋ธŒ๋ฆฌ์ง€๋กœ ๋˜์–ด์žˆ๋Š”๊ฑฐ
  • ์ปดํฌ์ง€ํŠธ (Composite)
    • ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง„ ๋ณตํ•ฉ ๊ฐ์ฒด์™€ ๋‹จ์ผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ„ ์—†์ด ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ
    • ๊ฐ์ฒด๋“ค์„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
    • ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ๋“ฏ, ๋ณตํ•ฉ ๊ฐ์ฒด ์•ˆ ๋ณตํ•ฉ ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋˜๋„๋ก ๊ตฌ์กฐ ๊ฐ€๋Šฅ
    • List
  • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ (Decorator)
    • ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ์„ ํ†ตํ•ด ๋Šฅ๋™์ ์œผ๋กœ ๊ธฐ๋Šฅ๋“ค์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด
    • ์ž„์˜์˜ ๊ฐ์ฒด์— ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•จ.
    • ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์„ ๋ง๋ถ™์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„
  • ํผ์‹ธ๋“œ(Facade)
    • ๋ณต์žกํ•œ ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค์„ ํ”ผํ•ด ๋” ์ƒ์œ„์— ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„
    • ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค์˜ ๊ธฐ๋Šฅ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
    • ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค ์‚ฌ์ด ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” Wrapper ๊ฐ์ฒด๊ฐ€ ํ•„์š”
  • ํ”Œ๋ผ์ด์›จ์ดํŠธ(Flyweight)
    • ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋งˆ๋‹ค ๋งค๋ฒˆ ์ƒ์„ฑํ•˜์ง€ ์•Š์Œ.
    • ๊ฐ€๋Šฅํ•œ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝ
    • ๋‹ค์ˆ˜์˜ ์œ ์‚ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ๋•Œ ์œ ์šฉํ•จ.
    • MAP
  • ํ”„๋ก์‹œ (Proxy)
    • ์ ‘๊ทผ์ด ์–ด๋ ค์šด ๊ฐ์ฒด์™€ ์ ‘๊ทผ์ด ์–ด๋ ค์šด ๊ฐ์ฒด์— ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ๊ฐ์ฒด ์‚ฌ์ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ˆ˜ํ–‰

ํ–‰์œ„ ํŒจํ„ด (Behavioral Pattern)

  • ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‚˜ ์ฑ…์ž„ ๋ถ„๋ฐฐ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด
    • ์ฑ…์ž„ ์—ฐ์‡„(Chain Of Responsibility)
      • ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋‘˜ ์ด์ƒ ์กด์žฌํ•  ๋•Œ
      • ํ•œ ๊ฐ์ฒด๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ๋‹ค์Œ ๊ฐ์ฒด๋กœ ๋„˜์–ด๊ฐ€๋Š” ํ˜•ํƒœ์˜ ํŒจํ„ด
      • ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ ๊ฐ์ฒด๊ฐ€ Chain์œผ๋กœ ๋ฌถ์—ฌ ์žˆ๋Š” ํ˜•ํƒœ
      • ์š”์ฒญ์ด ํ•ด๊ฒฐ ๋  ๋•Œ๊นŒ์ง€ Chain์„ ๋”ฐ๋ผ ์ฑ…์ž„์ด ์—ฐ์‡„๋จ.
    • ์ปค๋งจ๋“œ (Command)
      • ์š”์ฒญ์„ ๊ฐ์ฒด์˜ ํ˜•ํƒœ๋กœ ์บก์Аํ™”ํ•˜์—ฌ ์žฌ์ด์šฉ, ์ทจ์†Œ, ์ €์žฅ, ๊ธฐ๋ก์„ ํ•˜๋Š” ํŒจํ„ด
      • ์š”์ฒญ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ข… ๋ช…๋ น์„ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๊ตฌ์ฒด ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๋‹จ์ˆœํ™”
    • ์ธํ„ฐํ”„๋ฆฌํ„ฐ (Interpreter)
      • ์–ธ์–ด์— ๋ฌธ๋ฒ• ํ‘œํ˜„์„ ์ •์˜, SQL ๋ฐ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ ๊ฐœ๋ฐœ ์‹œ ์‚ฌ์šฉ
    • ๋ฐ˜๋ณต์ž (Iterator)
      • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๊ฐ™์ด ์ ‘๊ทผ์ด ์žฆ์€ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ํŒจํ„ด
      • ๋‚ด๋ถ€ ํ‘œํ˜„ ๋ฐฉ๋ฒ•์˜ ๋…ธ์ถœ ์—†์ด ์ˆœ์ฐจ์  ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • ์ค‘์žฌ์ž (Mediator)
      • ์ˆ˜๋งŽ์€ ๊ฐ์ฒด๊ฐ„ ๋ณต์žกํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ์บก์Аํ™”ํ•˜์—ฌ ๊ฐ์ฒด๋กœ ์ •์˜
      • ๊ฐ์ฒด ์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ์ค„์—ฌ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถค
    • ๋ฉ”๋ฉ˜ํ†  (Memento)
      • ํŠน์ • ์‹œ์ ์—์„œ์˜ ๊ฐ์ฒด ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๊ฐ์ฒดํ™”
      • ์š”์ฒญ์— ๋”ฐ๋ผ ๊ฐ์ฒด๋ฅผ ํ•ด๋‹น ์‹œ์ ์˜ ์ƒํƒœ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต
      • Ctrl + Z์™€ ๊ฐ™์€ ๋˜๋Œ๋ฆฌ๊ธฐ ๊ธฐ๋Šฅ
    • ์˜ต์ €๋ฒ„ (Observer)
      • ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”ํ•˜๋ฉด ๊ฐ์ฒด์— ์ƒ์†๋˜์–ด ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์—๊ฒŒ ๋ณ€ํ™”๋œ ์ƒํƒœ๋ฅผ ์ „๋‹ฌ
      • ์ผ๋Œ€๋‹ค์˜ ์˜์กด์„ฑ์„ ์ •์˜
      • ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ฐ„ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑ,๋ฐœํ–‰(Publish)ํ•˜๊ณ  ์ˆ˜์‹ (Subscribe)ํ•ด์•ผ ํ•  ๋•Œ ์ด์šฉ
    • ์ƒํƒœ (State)
      • ๊ฐ์ฒด์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๋™์ผํ•œ ๋™์ž‘์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด
      • ๊ฐ์ฒด ์ƒํƒœ๋ฅผ ์บก์Аํ™”ํ•˜๊ณ  ์ด๋ฅผ  ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ 
    • ์ „๋žต (Strategy)
      • ๋™์ผํ•œ ๊ณ„์—ด ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์บก์Аํ™”ํ•˜์—ฌ ์ƒํ˜ธ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ •์˜
      • ํด๋ผ์ด์–ธํŠธ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์›ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ ๊ฐ€๋Šฅ
      • ํด๋ผ์ด์–ธํŠธ์— ์˜ํ–ฅ ์—†์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
      • ์Šคํ”„๋ง์˜ DI
    • ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ (Template Method)
      • ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ๊ณจ๊ฒฉ์„ ์ •์˜
      • ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์„ธ๋ถ€ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌ์ฒดํ™” ํ•˜๋Š” ๊ตฌ์กฐ์˜ ํŒจํ„ด
      • ์œ ์‚ฌํ•œ ์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ๋ฌถ์–ด ๊ณตํ†ต๋œ ๋‚ด์šฉ์„ ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ •์˜
      • ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•จ
      • Spring-tx
    • ๋ฐฉ๋ฌธ์ž (Visitor)
      • ๊ฐ ํด๋ž˜์Šค๋“ค์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—์„œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณ„๋„์˜ ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑ
      • ๋ถ„๋ฆฌ๋œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์€ ๊ฐ ํด๋ž˜์Šค๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ์ˆ˜ํ–‰

12๋ฒˆ

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

18๋ฒˆ

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