๐Ÿš€
Growth log
  • About me
  • I LEARNED
    • General
      • ๊ฐœ๋ฐœ์ž ๊ฟ€ํŒ
      • ๊ทธ๋กœ์Šคํ•ดํ‚น ๊ธฐ์ดˆ
      • ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋„๋ฉ”์ธ ์ง€์‹์€ ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ• ๊นŒ?
      • DTO ๋…ผ์Ÿ์— ๋Œ€ํ•˜์—ฌ
      • MSA๋ž€?
    • Seminar
      • ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100% - SLASH 21
      • TDD๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ด์œ  - by ์ด๊ทœ์›๋‹˜
      • ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํŠœ๋‹ ๋…ธํ•˜์šฐ ๋‹ค ์•Œ๋ ค ๋“œ๋ฆผ|๋ผ์ธ๊ฐœ๋ฐœ์‹ค๋ก
      • ๊ฒฐ์ œ ์‹œ์Šคํ…œ์˜ SDK์™€ API ๋””์ž์ธ - SLASH 21
    • Web
      • SOP์™€ CORS
    • Spring & OOP
      • DTO vs VO
    • Ruby On Rails
      • Rails lib ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•˜์—ฌ
      • Rails์˜ concerns๋ž€?
      • Rails์—์„œ์˜ GC ์ž‘๋™์›๋ฆฌ
      • Eager loading vs Lazy loading
      • Rails ํ™˜๊ฒฝ ๊ตฌ์„ฑ
      • ActionCable
      • ๐Ÿ“”Perfect ruby on rails
        • MVC ํŒจํ„ด์ธ Rails
        • Ruby on Rails ๊ธฐ๋ณธ - ์ปจํŠธ๋กค๋Ÿฌ
        • Ruby on Rails ๊ธฐ๋ณธ - ๋ทฐ
        • Ruby on Rails ๊ธฐ๋ณธ - ๋ชจ๋ธ
        • ์Šค์บํด๋”ฉ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•œ Rails ๊ฐœ๋ฐœ ๊ธฐ์ดˆ
        • ๋ทฐ ๊ฐœ๋ฐœ
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ๋‚™๊ด€์  ๋™์‹œ ์‹คํ–‰ ์ œ์–ด
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ตฌํ˜„
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - Association
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ์ฝœ๋ฐฑ
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
        • ๋ชจ๋ธ ๊ฐœ๋ฐœ - ๋ฐ์ดํ„ฐ ์ดˆ๊ธฐํ™”
        • ์ปจํŠธ๋กค๋Ÿฌ ๊ฐœ๋ฐœ - ์š”์ฒญ ์ •๋ณด ์ถ”์ถœ
        • ์ปจํŠธ๋กค๋Ÿฌ ๊ฐœ๋ฐœ - ์‘๋‹ต
        • ์ปจํŠธ๋กค๋Ÿฌ ๊ฐœ๋ฐœ - ์ƒํƒœ ๊ด€๋ฆฌ
        • ๋ผ์šฐํŒ… - RESTful
        • ๋ผ์šฐํŒ… - RESTful ์ธํ„ฐํŽ˜์ด์Šค์˜ ์‚ฌ์šฉ์ž ์ •์˜ํ™”
        • ๋ผ์šฐํŒ… - RESTful ํ•˜์ง€ ์•Š์€ ๋ผ์šฐํŠธ ์ •์˜
        • ํ…Œ์ŠคํŠธ
        • ํ…Œ์ŠคํŠธ - ์ค€๋น„
        • ํ…Œ์ŠคํŠธ - Unit ํ…Œ์ŠคํŠธ
        • ํ…Œ์ŠคํŠธ - Functional ํ…Œ์ŠคํŠธ
        • ํ…Œ์ŠคํŠธ - Integration ํ…Œ์ŠคํŠธ
        • ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ - Sprockets vs Webpacker
        • ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ - Sprockets
    • Node.js & Express
      • ๊ธฐ๋ณธ ๊ฐœ๋…
      • npx
    • Programing Language
      • Java
        • JavaDoc์— ๋Œ€ํ•ด
        • invocation์— ๋Œ€ํ•ด์„œ
        • ์–ด๋…ธํ…Œ์ด์…˜
        • ์ถ”์ƒํด๋ž˜์Šค & ์ธํ„ฐํŽ˜์ด์Šค
        • Package
        • ์˜ค๋ฒ„๋กœ๋”ฉ vs ์˜ค๋ฒ„๋ผ์ด๋”ฉ
      • Javascript
        • TCP School ํ›‘์–ด๋ณด๊ธฐ
          • ํƒ€์ž…
          • ํ˜• ๋ณ€ํ™˜
          • ๋ณ€์ˆ˜
          • ์—ฐ์‚ฐ์ž
          • ๋ฐ˜๋ณต๋ฌธ
          • ๋ฐฐ์—ด(array)
          • ํ•จ์ˆ˜
          • ํ•จ์ˆ˜ - ์Šค์ฝ”ํ”„์™€ ํ˜ธ์ด์ŠคํŒ…
          • ํ•จ์ˆ˜ - ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ธ์ˆ˜
          • ํ•จ์ˆ˜ - ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ „์—ญ ํ•จ์ˆ˜
          • ๊ฐ์ฒด
          • ํ”„๋กœํ† ํƒ€์ž…
          • DOM
          • BOM - Window ๊ฐ์ฒด
          • ์ด๋ฒคํŠธ(event)
      • Ruby
        • ๐Ÿ“”ํผํŽ™ํŠธ ๋ฃจ๋น„
    • DB
      • Redis
        • Redis ๊ฐœ์š”
      • Index(์ธ๋ฑ์Šค)?
      • DB Transaction & Lock
      • ๋™์‹œ์„ฑ ์ œ์–ด์— ๊ด€ํ•˜์—ฌ
      • Lock(์ž ๊ธˆ)์ด๋ž€?
      • ActiveRecord lock vs with_lock
      • Table lock vs Row lock
      • WHERE 1=1 ๊ตฌ๋ฌธ์— ๋Œ€ํ•˜์—ฌ
      • COUNT(*) vs COUNT(indexed column)
      • ๐Ÿ“•๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ค์ „์ž…๋ฌธ
      • ๐Ÿ“”SQL ์ฒซ๊ฑธ์Œ
      • ๐Ÿ“”๋ชจ๋‘์˜ SQL
    • Design Patterns
      • Observer pattern
      • Flyweight pattern
      • Singleton pattern
    • OOP
      • ๐Ÿ“”์˜ค๋ธŒ์ ํŠธ
        • 6์žฅ ๋ฉ”์‹œ์ง€์™€ ์ธํ„ฐํŽ˜์ด์Šค
      • ํด๋ž˜์Šค๊ฐ„ ๊ด€๊ณ„ ๊ฐ„๋‹จ ์ •๋ฆฌ
    • Regex
    • Collaboration
      • Git
      • Sourcetree
  • DAILY REVIEW
    • 2021
      • August
        • 2021-08-25(Wed)
        • 2021-08-23(Mon)
        • 2021-08-11(Wed)
        • 2021-08-04(Wed)
        • 2021-08-03(Tue)
        • 2021-08-02(Mon)
      • July
        • 2021-07-29(Thu)
        • 2021-07-26(Mon)
        • 2021-07-23(Fri)
        • 2021-07-22(Thu)
        • 2021-07-21(Wed)
        • 2021-07-20(Tue)
        • 2021-07-19(Mon)
        • 2021-07-15(Thu)
        • 2021-07-14(Wed)
        • 2021-07-13(Tue)
        • 2021-07-12(Mon)
      • June
        • 2021-06-05(Sat)
        • 2021-06-04(Fri)
        • 2021-06-03(Thu)
        • 2021-06-02(Wed)
        • 2021-06-01(Tue)
      • May
        • 2021-05-31(Mon)
        • 2021-05-29(Sat)
        • 2021-05-28(Fri)
        • 2021-05-27(Thu)
        • 2021-05-26(Wed)
        • 2021-05-25(Tue)
        • 2021-05-24(Mon)
        • 2021-05-22(Sat)
        • 2021-05-21(Fri)
        • 2021-05-20(Thu)
        • 2021-05-19(Wed)
        • 2021-05-18(Tue)
        • 2021-05-17(Mon)
        • 2021-05-15(Sat)
        • 2021-05-13(Thu)
        • 2021-05-12(Wed)
        • 2021-05-11(Tue)
        • 2021-05-10(Mon)
        • 2021-05-03(Mon)
      • April
        • 2021-04-30(Fri)
        • 2021-04-29(Thu)
        • 2021-04-28(Wed)
        • 2021-04-27(Tue)
        • 2021-04-26(Mon)
        • 2021-04-24(Sat)
        • 2021-04-23(Fri)
        • 2021-04-21(Wed)
        • 2021-04-20(Tue)
        • 2021-04-19(Mon)
        • 2021-04-18(Sun)
        • 2021-04-16(Fri)
        • 2021-04-15(Thu)
        • 2021-04-14(Wed)
        • 2021-04-12(Mon)
        • 2021-04-11(Sun)
        • 2021-04-09(Fri)
        • 2021-04-08(Thu)
        • 2021-04-06(Tue)
        • 2021-04-05(Mon)
        • 2021-04-04(Sun)
        • 2021-04-03(Sat)
        • 2021-04-02(Fri)
        • 2021-04-01(Thu)
      • March
        • 2021-03-29(Mon)
        • 2021-03-28(Sun)
        • 2021-03-26(Fri)
        • 2021-03-25(Thu)
        • 2021-03-24(Wed)
        • 2021-03-23(Tue)
        • 2021-03-22(Mon)
        • 2021-03-21(Sun)
        • 2021-03-20(Sat)
        • 2021-03-17(Wed)
        • 2021-03-16(Tue)
        • 2021-03-15(Mon)
        • 2021-03-12(Fri)
        • 2021-03-11(Thu)
        • 2021-03-10(Wed)
        • 2021-03-09(Tue)
        • 2021-03-08(Mon)
        • 2021-03-07(Sun)
        • 2021-03-05(Fri)
        • 2021-03-03(Wed)
        • 2021-03-02(Tue)
        • 2021-03-01(Mon)
      • Feb
        • 2021-02-26(Fri)
        • 2021-02-25(Thu)
        • 2021-02-24(Wed)
        • 2021-02-23(Tue)
        • 2021-02-22(Mon)
        • 2021-02-19(Fri)
        • 2021-02-18(Thu)
        • 2021-02-17(Wed)
        • 2021-02-16(Tue)
        • 2021-02-15(Mon)
        • 2021-02-14(Sun)
        • 2021-02-13(Sat)
        • 2021-02-12(Fri)
        • 2021-02-10(Wed)
        • 2021-02-09(Tue)
        • 2021-02-08(Mon)
        • 2021-02-07(Sun)
        • 2021-02-05(Fri)
        • 2021-02-03(Wed)
        • 2021-02-02(Tue)
        • 2021-02-01(Mon)
      • Jan
        • 2021-01-29(Fri)
        • 2021-01-28(Thu)
        • 2021-01-27(Wed)
        • 2021-01-26(Tue)
        • 2021-01-25(Mon)
        • 2021-01-23(Sat)
        • 2021-01-22(Fri)
        • 2021-01-20(Wed)
        • 2021-01-19(Tue)
        • 2021-01-18(Mon)
        • 2021-01-12(Tue)
        • 2020-01-11(Mon)
        • 2021-01-08(Fri)
        • 2021-01-07(Thu)
        • 2021-01-06(Wed)
        • 2021-01-05(Tue)
        • 2021-01-04(Mon)
        • 2021-01-01(Fri)
    • 2020
      • Dec
        • 2020-12-30(Thu)
        • 2020-12-25(Fri)
        • 2020-12-24(Thu)
        • 2020-12-23(Wed)
        • 2020-12-22(Tue)
        • 2020-12-21(Mon)
        • 2020-12-18 (Fri)
      • Nov
        • 2020-11-30(Mon)
        • 2020-11-28(Sat)
        • 2020-11-26(Thu)
        • 2020-11-25(Wed)
        • 2020-11-24(Tue)
        • 2020-11-23(Mon)
        • 2020-11-22(Sun)
        • 2020-11-20(Fri)
        • 2020-11-19(Thu)
        • 2020-11-18(Wed)
        • 2020-11-17(Tue)
        • 2020-11-14(Sat)
        • 2020-11-13(Fri)
        • 2020-11-12(Thu)
        • 2020-11-11(Wed)
        • 2020-11-09(Mon)
        • 2020-11-07(Sat)
        • 2020-11-05(Thu)
        • 2020-11-04(Wed)
        • 2020-11-03(Tue)
        • 2020-11-02(Mon)
    • Good article ์•„์นด์ด๋น™
Powered by GitBook
On this page
  • ์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ
  • TDD๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ด์œ  - by ์ด๊ทœ์›๋‹˜
  • ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํŠœ๋‹ ๋…ธํ•˜์šฐ ๋‹ค ์•Œ๋ ค ๋“œ๋ฆผ | ๋ผ์ธ๊ฐœ๋ฐœ์‹ค๋ก
  • Q) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€์ ์—์„œ๋Š” ์–ด๋–ค ์ค€๋น„๋ฅผ ํ•˜์‹œ๋Š”์ง€?
  • Q) ์ „์†กํ•˜๋Š” ํŒŒ์ผ์˜ ์œ ํ˜•์— ๋”ฐ๋ผ์„œ ์ตœ์ ํ™”๋œ ์„œ๋ฒ„ ํŒŒ๋ผ๋ฏธํ„ฐ๋ผ๋Š” ๊ฑด ๋„ˆ๋ฌด ๋งŽ๋‹ค. ๊ด€๋ฆฌํ• ๊ฒŒ ๋งŽ์„ ํ…๋ฐ ์ด๋Ÿฐ๊ฑธ ๋‹ค ํ•œ ๋ช…์ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฑด๊ฐ€?
  • Q) ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋‹ค๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ•˜๋Š”์ง€?
  • Q) ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€?
  • Q) ๋ผ์ธ์—์„œ๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์–ด๋–ค ๋กœ์ง์ด๋‚˜ ๊ธฐ์ˆ ๋กœ ํ•˜์‹œ๋Š”์ง€?
  • Q) ๋ผ์ธ์˜ ์žฅ์• ๋Œ€์‘๋ฐฉ์€ ์–ด๋””์— ์“ฐ๊ณ  ๊ณ„์„ธ์š”?
  • Q) CDN ํ™œ์šฉ์— ๋Œ€ํ•ด์„œ ๋” ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ๋‹ค. REST API ์‘๋‹ต ์ฒ˜๋ฆฌ๋„ CDN์œผ๋กœ ์ƒ๋‹น ๋ถ€๋ถ„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์€๋ฐ, ์‹ ๋…„๋Œ€์‘ ์‹œ์ ์—๋Š” TTL ๋“ฑ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฐ€?
  • Q) ์‹ ๋…„ ๋Œ€์‘์„ ๋‚ด๋…„์— ๋˜ ํ•œ๋‹ค๋ฉด ์˜ฌํ•ด์™€ ๋ญ๊ฐ€ ๋‹ฌ๋ผ์งˆ ๊ฒƒ ๊ฐ™์€๊ฐ€?
  • ํ‚ค์›Œ๋“œ ๋ชจ์Œ
  • ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰
  • ๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

Was this helpful?

  1. DAILY REVIEW
  2. 2021
  3. March

2021-03-24(Wed)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-03-24(์ˆ˜)

ํ•™์Šต ์‹œ๊ฐ„

11:00~23:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

TDD, ์Šคํ”„๋ง๋ถ€ํŠธ

ํ•™์Šต ๋ชฉํ‘œ

TDD์™€ ์Šคํ”„๋ง๋ถ€ํŠธ๋ฅผ ํ•™์Šตํ•œ๋‹ค.

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

-

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

TDD๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ด์œ  - by ์ด๊ทœ์›๋‹˜

ํŒ€์ด ์•„๋‹Œ ๊ฐœ์ธ์ด ์‹คํŒจํ•˜๋Š” ์ด์œ ๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž.

'๋‹น์‹ ์€ ์ด๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๋Š”๋‹ค.'

Science vs Engineering. ๊ฐœ๋ฐœ์ž๋Š” ํ›„์ž์— ๊ฐ€๊น๋‹ค. ์ œ์•ฝ๋œ ์ž์›์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. TDD๊ฐ€ ๋ฌธ์ œํ•ด๊ฒฐ์— ๋„์›€์ด ๋œ๋‹ค๋ฉด ๋„์ž…ํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋„์ž…ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ ‡๊ฒŒ ์‹ค์šฉ์ ์ธ ํŒ๋‹จ์„ ํ•ด์•ผํ•œ๋‹ค.

๊ทธ๋Ÿผ ์–ธ์ œ TDD๋ฅผ ํ•˜๊ณ  ์–ธ์ œ TDD๋ฅผ ํ•˜์ง€ ์•Š์•„์•ผํ•˜๋‚˜?

์šฐ๋ฆฌ๊ฐ€ ๋ณดํ˜ธํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ

  • AWS x

  • Spring X

  • ๋„๋ฉ”์ธ O

์šฐ๋ฆฐ ๋„๋ฉ”์ธ์— ๊ฐ€์žฅ ๋งŽ์€ ์ž์›์„ ์จ์•ผํ•œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ

  • ์™ธ๋ถ€ ์„ธ์ƒ

    • ์‹ค ์„ธ๊ณ„

    • ์ธํ”„๋ผ

    • ์™ธ๋ถ€ ์„œ๋น„์Šค

    • ๋ ˆ๊ฑฐ์‹œ

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ณดํ˜ธํ•ด์•ผํ•  ๊ฒƒ๋“ค์„ ์šฐ๋ฆฌ๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ์„ค๊ณ„๋ฅผ ํ•ด์•ผํ• ๊นŒ?

์„ค๊ณ„

  • ๋‚ฎ์€ ๊ฒฐํ•ฉ

  • ๋†’์€ ์‘์ง‘

  • ๋„๋ฉ”์ธ ๋ชจ๋ธ ๋ณดํ˜ธ

๊ทธ๋Ÿฐ๋ฐ ๋‹น์‹ ์€ ์•„๋งˆ..

  1. ..๊ตฌํ˜„์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค.

    ๊ตฌํ˜„ ๋ฐฉ์‹์„ ํ…Œ์ŠคํŠธํ•˜๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊นŒ? ๊ตฌํ˜„์˜ ๋‚ด๋ถ€์š”์†Œ๋“ค๊ณผ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๊ฒฐํ•ฉ ๋˜์–ด์žˆ๋‹ค. ๋ฆฌํŒฉํ„ฐ๋ง์ด๋ผ๋„ ํ•œ๋ฒˆ ํ•˜๋ฉด ๋งŒ๋“ค์–ด๋†“์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์ด ์“ธ๋ชจ ์—†์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ€ ๋•Œ๋งˆ๋‹ค ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ฐ”๊ฟ”์•ผํ•˜๋ฏ€๋กœ ๋น„์šฉ์ด ๋Š˜์–ด๋‚œ๋‹ค.

    ์–ด๋–ป๊ฒŒ ํšŒํ”ผํ• ๊นŒ?

    ์ •๋ณด ์ˆจ๊น€(Information Hiding) ์„ ์ƒ๊ฐํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

    On the Criteria To Be Used in Decomposing System into Modules

    Information distribution aspets of design methodology - David Parnas, 1971

    ์ •๋ณด ์ˆจ๊น€์€ ์–ด๋ ค์šด์„ค๊ณ„ ๊ฒฐ์ •๊ณผ ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ์„ค๊ณ„ ๊ฒฐ์ •์„ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๋กœ๋ถ€ํ„ฐ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค.

    ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐ”๋€Œ๋Š” ๊ฒƒ๋“ค์— ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์˜์กด์‹œํ‚ค์ง€ ๋ง๊ณ , ๋ฐ”๋€” ๊ฐ€๋Šฅ์„ฑ์ด ์ ์€ ๊ฒฌ๊ณ ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กด์‹œํ‚ค์ž. ๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ ์„ค๊ณ„๋ฅผ ํ…Œ์ŠคํŠธํ•˜์ž.

  2. ..๋ ˆ๊ฑฐ์‹œ์™€ ํ•จ๊ป˜ ์‚ด๊ณ  ์ด๋ฅผ ํƒ“ํ•  ๊ฒƒ์ด๋‹ค.

    ์›๋ž˜ ๋ ˆ๊ฑฐ์‹œ๋ฅผ ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†๋‹ค. ๋‚ด๊ฐ€ ์ง€๋‚œ ์ฃผ์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋„ ๋ ˆ๊ฑฐ์‹œ๋‹ค. ๋ ˆ๊ฑฐ์‹œ๊ฐ€ ์žˆ๋Š” ์ƒํƒœ์—์„œ ์–ด๋–ป๊ฒŒ TDD๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๊นจ๋—ํ•จ์„ ์œ ์ง€ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ์‹ธ๋Š” ์–ด๋Œ‘ํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ ˆ๊ฑฐ์‹œ๋กœ๋ถ€ํ„ฐ ๊ฒฐํ•ฉ์„ ๋–จ์–ด๋œจ๋ฆฌ์ž.

๊ทธ๋Ÿผ ์ด์ œ ํŒ€ ์ˆ˜์ค€์˜ TDD๋Š” ์–ด๋–ป๊ฒŒ ์ง„ํ–‰ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

Fail-fast ์ „๋žต์„ ์œ„ํ•ด ์•„๋ž˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€์ ธ๊ฐ„๋‹ค.

  • ์ ์ง„

  • ๋ฐ˜๋ณต

    • ๊ณ„ํš

    • ์‹คํ–‰ <-- ์ด๊ฒƒ๋งŒ ํ•˜๋ฉด ๊ฐœํŒ๋œ๋‹ค.

    • ํ‰๊ฐ€

๋ฌธํ™”๋„ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค.

๋‘ ๊ฐ€์ง€ ๊ณต์œ ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๊ณ  ๋ณธ๋‹ค. 1) ๋ชฉํ‘œ 2) ์ง€์‹

์•„ํ‚คํ…์ณ๋„ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค.

  • ๋‚ฎ์€ ๊ฒฐํ•ฉ

  • ๋†’์€ ์‘์ง‘

  • ๋„๋ฉ”์ธ ๋ชจ๋ธ ๋ณดํ˜ธ

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

    ์ด๋ฒˆ ๋ผ์ด๋ธŒ ์ฝ”๋”ฉ์—์„œ ์“ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ณ๋‹ค. ์„œ๋น„์Šค์— ์นดํ”„์นด ์“ฐ๋Š”๊ฑด ์ข‹์€๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋ž‘ ์—ฐ๊ฒฐ์‹œํ‚ค์ง€๋งŒ ๋ง์•„๋ผ.

    MVVM์—์„œ๋„ view๋Š” ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ต์ง€๋งŒ ์–‡๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. model, view model์„ ํ…Œ์ŠคํŠธํ•˜์ž.

์šฐ์„  ๋ชฉ์ ์„ ๋ถ„๋ช…ํžˆ, ๊ตฌ์ฒด์ ์œผ๋กœ ํ•˜์ž.

  • ๋ชฉ์ : ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋–ค ๊ฐ€์น˜๋ฅผ ์ „๋‹ฌํ•  ๊ฒƒ์ธ๊ฐ€?

    • ๋ฉ‹์ง„ ๊ธฐ๋Šฅ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š” -- X

    • ์‹œ๊ฐ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ชฉ์ ์„ ๊ณต์œ ํ•˜์ž.

  • ๋ถ„์„

  • ์ž‘์—… ์„ค๊ณ„

    • ์†Œํ”„ํŠธ์›จ์–ด ๋ณ€๊ฒฝ์€ ์–ด๋–ค ์„ธ๋ถ€ ์ž‘์—…๋“ค์ด ์žˆ๋Š”๊ฐ€?

    • ๊ฐ ์ž‘์—…๋“ค์€ ์–ด๋–ค ์ˆœ์„œ๋กœ ์ง„ํ–‰๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€?

    • ๊ฐ ์ž‘์—…๋“ค์€ ๋ˆ„๊ฐ€ ๋‹ด๋‹นํ•˜๋Š”๊ฐ€?

์ž TDD๋ฅผ ํ•ด๋ณด์ž.

  • ์ฝ”๋“œ ์„ค๊ณ„

    • ์–ด๋–ค ์ฝ”๋“œ ๋ณ€๊ฒฝ(commit)์ด ํ•„์š”ํ• ์ง€ ๋ถ„์„ํ•œ๋‹ค.

  • ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

    • ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ๊ฒ€์ฆํ•˜๋Š” ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋งŒ๋“ ๋‹ค.

  • ๋ฆฌํŒฉํ„ฐ

    • ์˜๋„ ๋…ธ์ถœ

    • ์ค‘๋ณต ์ œ๊ฑฐ

    • ์ถ”์ƒํ™” ์ˆ˜์ค€ ์กฐ์ ˆ

  • ํ”ผ๋“œ๋ฐฑ

    • ๋‹จ์œ„ ํ…Œ์ŠคํŒ…

    • ์ฝ”๋“œ ๋ฆฌ๋ทฐ

    • ๊ธฐ๋Šฅ ํ…Œ์ŠคํŒ…

    • ์ˆ˜๋™ ํ…Œ์ŠคํŒ…

    • ์‚ฌ์šฉ์ž ๋ฐ˜์‘ ์ˆ˜์ง‘

๋ฉ”์„ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ํ…Œ์ŠคํŠธ๊ฐ€ ์ž˜ ์ž‘์„ฑ๋˜์—ˆ๋‹ค๋Š” ํ™•์‹ ์„ ๊ฐ€์ง„ ๋‹ค์Œ ๊ทธ๋ฆฐ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€์•ผํ•œ๋‹ค.

Q&A

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋„˜์–ด์„  ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ์–ธ์ œ ๋งŒ๋“ค์–ด์•ผํ•  ๊ฒƒ์ธ๊ฐ€? ๋‹จ์œ„ํ…Œ์ŠคํŠธ 2000๊ฐœ์ฏค ์žˆ๋Š”๋ฐ, ๋ฉ”๋‰ด์–ผ ํ…Œ์ŠคํŠธ, ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋„ ๋”ฐ๋กœ ํ•œ๋‹ค. ์™ธ๋ถ€ ์‹œ์Šคํ…œ ํ†ตํ•ฉ์‹œํ‚ค๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ์—๋Š” 'fake ์„œ๋น„์Šค'๋ฅผ ์ž„์‹œ๋กœ ๋งŒ๋“ค์–ด์„œ ์ œ๋Œ€๋กœ ํ†ตํ•ฉ์ด ๋˜๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํŠœ๋‹ ๋…ธํ•˜์šฐ ๋‹ค ์•Œ๋ ค ๋“œ๋ฆผ | ๋ผ์ธ๊ฐœ๋ฐœ์‹ค๋ก

Q) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€์ ์—์„œ๋Š” ์–ด๋–ค ์ค€๋น„๋ฅผ ํ•˜์‹œ๋Š”์ง€?

๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

  1. ๋ฏธ๋ฆฌ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

  2. ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค.

1๋ฒˆ ์˜ˆ์‹œ. keep-alive๋ฅผ ์ด์šฉํ•ด์„œ connection์„ ๋งบ์–ด๋†“๊ณ  ๊ณ„์† ์“ฐ๋Š” ๋ฐฉ๋ฒ•์„ ์“ด๋‹ค. ํ”„๋ก์‹œ๋ž‘ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•  WAS๋‹จ์˜ ์„œ๋ฒ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ”„๋ก์‹œ์—์„œ WAS๋‹จ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” Max Connection์„ ๋ฏธ๋ฆฌ ์ œํ•œํ•ด ๋‘”๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Proxy์—์„œ ๋’ท๋‹จ์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” connection ์ˆ˜๋„ ์ œํ•œ์„ ๊ฑธ์–ด๋‘”๋‹ค.

keep-alive๋ฅผ ์ ์šฉํ•  ๋•Œ๋„ timeout, maxRequests๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ผ์ธ ๋ฉ”์‹œ์ง• ์„œ๋ฒ„ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์งง์€ ์‹œ๊ฐ„์— ํŠธ๋ž˜ํ”ฝ์ด ํ™• ์˜ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— maxRequests ๊ธฐ์ค€์œผ๋กœ๋Š” ์—ฌ์œ ์žˆ๊ฒŒ ๋Š˜๋ ค์ฃผ๊ฑฐ๋‚˜ ์•„์˜ˆ ์ œํ•œ์„ ์—†์• ๋ฒ„๋ ค์„œ keep-alive connection์ด ์ถฉ๋ถ„ํžˆ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •์„ ํ•ด๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

keep-alive๋ฅผ ํ‚ค๊ฒŒ ๋˜๋ฉด connection๋“ค์ด ์—ฐ๊ฒฐ๋œ ์ฑ„๋กœ ๋งŽ์ด ๋ฌผ๋ ค ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— tomcat์˜ max connections ์„ค์ •๋„ ๋ฏธ๋ฆฌ ๋ฌธ์ œ๊ฐ€ ์—†๋„๋ก ํ”„๋ก์‹œ ์„œ๋ฒ„๋“ค์˜ ์ˆ˜์ค€์„ ๊ณ„์‚ฐํ•ด์„œ ๋Š˜๋ ค ๋†“๋Š”๋‹ค.

Q) ์ „์†กํ•˜๋Š” ํŒŒ์ผ์˜ ์œ ํ˜•์— ๋”ฐ๋ผ์„œ ์ตœ์ ํ™”๋œ ์„œ๋ฒ„ ํŒŒ๋ผ๋ฏธํ„ฐ๋ผ๋Š” ๊ฑด ๋„ˆ๋ฌด ๋งŽ๋‹ค. ๊ด€๋ฆฌํ• ๊ฒŒ ๋งŽ์„ ํ…๋ฐ ์ด๋Ÿฐ๊ฑธ ๋‹ค ํ•œ ๋ช…์ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฑด๊ฐ€?

์•„๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค์˜ ํŠน์ง•์— ๋งž๊ฒŒ ํŠœ๋‹ํ•œ๋‹ค.

Q) ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋‹ค๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ•˜๋Š”์ง€?

๋ชจ๋‹ˆํ„ฐ๋ง ์ˆ˜์น˜๋“ค, ์ฃผ์š” ๋งคํŠธ๋ฆญ๋“ค์„ ๋ณด๊ณ  ์žˆ๋‹ค๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๊ฒฝ์šฐ์—” ์–ด๋–ป๊ฒŒ ๋Œ€์ฒ˜ํ• ์ง€ ๋ฐฉ๋ฒ•์„ ๋…ผ์˜ํ•˜๊ฒŒ ๋œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

  1. ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ์„œ๋ฒ„๋กœ ๋“ค์–ด์˜ค๋Š” ๋ฆฌํ€˜์ŠคํŠธ ์ž์ฒด๋ฅผ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•

  2. ํ•œ ์ปดํฌ๋„ŒํŠธ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์— ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋Œ€์‘

์„œ๋น„์Šค ๊ด€์ ์—์„œ Throttling์„ ๊ฑด๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋™์ž‘์„ ํ•˜๋Š”๊ฐ€? ๋งŒ์•ฝ VoIP ์ชฝ ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ์„œ 10%๋งŒ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค๋ฉด? ์„œ๋ฒ„๋ฅผ ๋‹ค ๊บผ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, 10%๋ผ๋„ ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ , ๋‚˜๋จธ์ง€์—๊ฒŒ๋Š” ๋‹ค์‹œ ์‹œ๋„ํ•ด๋‹ฌ๋ผ๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค.

Q) ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€?

์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์€ ์„œ๋น„์Šค๋งˆ๋‹ค ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ ๋ฉ”์‹ ์ € ์„œ๋น„์Šค์ฒ˜๋Ÿผ ์ผ๋ฐ˜์ ์ธ ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ์—๋Š” ํ™œ๋™์‹œ๊ฐ„๋Œ€๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ ์–ด๋–ค ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ์ด๋ฏธ์ง€๋ฅผ ๋งŽ์ด ์“ฐ๊ฑฐ๋‚˜ ์˜์ƒ์„ ๋งŽ์ด ์“ฐ๋Š” ๋“ฑ ์ƒํ™ฉ์— ๋”ฐ๋ผ ํŠธ๋ž˜ํ”ฝ์ด ๋‹ฌ๋ผ์ง„๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ statelessํ•œ ์„œ๋ฒ„ ๊ฐ™์€ ๊ฒฝ์šฐ ์•ž๋‹จ์— ์ •์ (static) ์ฝ˜ํ…์ธ ๋ฅผ ์„œ๋น™ํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„๋ฅผ ๋”ฐ๋กœ ๋นผ๊ณ  CDN์„ ์ ์šฉํ•ด ๋†“๊ณ  Application layer์—๋Š” Storage์ชฝ์œผ๋กœ ๊ฐ€๊ธฐ ์ „์— ์บ์‹œ ๋“ฑ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ผ๋ฐ˜์ ์ด๊ณ  ๋ณดํŽธ์ ์ธ ๊ตฌ์„ฑ๋“ค์ด ์žˆ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‚˜๋จธ์ง€๋“ค์€ ์ˆ˜์น˜ ๊ฐ™์€ ๊ฒƒ์„ ์ข€ ๋” ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ์–ด๋–ค ๋ณ‘๋ชฉ์˜ ์“ฐ๋ ˆ๋“œ ํ’€(Thread pool)์„ ๋Š˜๋ฆฌ๋Š” ๋“ฑ๋“ฑ!

Q) ๋ผ์ธ์—์„œ๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์–ด๋–ค ๋กœ์ง์ด๋‚˜ ๊ธฐ์ˆ ๋กœ ํ•˜์‹œ๋Š”์ง€?

๋ผ์ธ์€ Armeria ์˜คํ”ˆ์†Œ์Šค๋ฅผ ํ•œ๋ฒˆ์”ฉ ๋ด์ฃผ๋ฉด ์ข‹๊ฒ ๋‹ค. ํผํฌ๋จผ์Šค๋„ ์ข‹๊ณ  ์„œ๋ฒ„, ํด๋ผ์ด์–ธํŠธ ๋‘˜ ๋‹ค ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค.

Q) ๋ผ์ธ์˜ ์žฅ์• ๋Œ€์‘๋ฐฉ์€ ์–ด๋””์— ์“ฐ๊ณ  ๊ณ„์„ธ์š”?

๋ผ์ธ ๋ฉ”์„ธ์ง€๋กœ ์žฅ์•  ๋Œ€์‘์„ ํ•  ๋•Œ๋Š” ๋ผ์ธ ์›์Šค๋‚˜ Slack์„ ์“ฐ๊ณ  ์žˆ๋‹ค.

Q) CDN ํ™œ์šฉ์— ๋Œ€ํ•ด์„œ ๋” ์ž์„ธํžˆ ์•Œ๊ณ  ์‹ถ๋‹ค. REST API ์‘๋‹ต ์ฒ˜๋ฆฌ๋„ CDN์œผ๋กœ ์ƒ๋‹น ๋ถ€๋ถ„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์€๋ฐ, ์‹ ๋…„๋Œ€์‘ ์‹œ์ ์—๋Š” TTL ๋“ฑ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฐ€?

๋ฉ”์‹ ์ €๋Š” ๋ฐ”๋กœ ๋ณด๋‚ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ๊ฑฐ์˜ ์—†๊ธด ํ•˜๋‹ค. ์Šคํ‹ฐ์ปค ์ •๋„??

๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ ๋…„ ๋Œ€์‘์„ ์œ„ํ•ด TTL์„ ๋”ฐ๋กœ ์กฐ์ •ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค. ๋ณดํ†ต API ์ฝœ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์บ์‹œํ•  ์ˆ˜ ์—†๋Š”๊ฑด non-store๋กœ ์ฒ˜๋ฆฌ๋˜๊ณ  ์žˆ๋‹ค.

Q) ์‹ ๋…„ ๋Œ€์‘์„ ๋‚ด๋…„์— ๋˜ ํ•œ๋‹ค๋ฉด ์˜ฌํ•ด์™€ ๋ญ๊ฐ€ ๋‹ฌ๋ผ์งˆ ๊ฒƒ ๊ฐ™์€๊ฐ€?

์ฝ”๋กœ๋‚˜ ์ƒํ™ฉ์ด ๊ณ„์†๋ ์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ๊ฒƒ ๊ฐ™๋‹ค.

ํ‚ค์›Œ๋“œ ๋ชจ์Œ

DAO(Data Access Object)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ฑํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๋กœ์ง๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

DTO(Data Transfer Object)

๊ณ„์ธต๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•œ ์ž๋ฐ”๋นˆ์ฆˆ๋ฅผ ๋œปํ•œ๋‹ค. ๋˜ํ•œ DTO๋Š” VO(Value Object)์™€ ์šฉ์–ด๋ฅผ ํ˜ผ์šฉํ•ด์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, VO๋Š” ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•œ read only ์†์„ฑ์„ ๊ฐ€์ ธ DTO์™€์˜ ์ฐจ์ด์ ์ด ์กด์žฌํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ DTO๋Š” ๋กœ์ง์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ์ฒด์ด๋ฉฐ ๊ฐ์ฒด์˜ ์†์„ฑ๊ณผ ๊ทธ ์†์„ฑ์˜ ์ ‘๊ทผ์„ ์œ„ํ•œ getter ๋ฐ setter ๋ฉ”์†Œ๋“œ๋งŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

MyBatis vs JPA

MyBatis(๊ตฌ iBatis)๋Š” SQL Mapper์ด๋‹ค. ORM์ด ์•„๋‹ˆ๋‹ค. ORM์€ ๊ฐ์ฒด๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด๊ณ , SQL Mapper๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋งคํ•‘ํ•œ๋‹ค.

SI ๊ฐ™์€ ๊ณณ์—์„œ๋Š” Spring & MyBatis๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋„ค์นด๋ผ์ฟ ๋ฐฐ ๊ฐ™์€ ์ž์‚ฌ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ณณ์€ SpringBoot & JPA๋ฅผ ์ „์‚ฌ ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

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

  • ์ƒ์‚ฐ์„ฑ์€ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.

    • ์ƒ์‚ฐ์„ฑ์˜ ๋ํŒ์™•์ด๋ผ๋Š” ๋ฃจ๋น„์˜จ๋ ˆ์ผ์ฆˆ๋Š” ๋‚˜๋ฆ„ ๋‹ค๋ค„๋ดค์œผ๋‹ˆ, ์ด๋ฒˆ์—” ๊ฐœ์ธ์ ์œผ๋กœ ์ƒ์‚ฐ์„ฑ์€ ๋–จ์–ด์ง€์ง€๋งŒ ์•ˆ์ •์ ์ด๋ผ๋Š” ํ‰๊ฐ€๋ฅผ ๋ฐ›๋Š” ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด์žˆ์„์ง€์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ๊ถ๊ธˆํ•จ๋„ ์žˆ์—ˆ๋‹ค.

  • ์ปค๋ฆฌ์–ด ๋ชฉํ‘œ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์Šคํ”„๋ง์€ ํ•„์ˆ˜์ ์œผ๋กœ ํ•™์Šตํ•ด์•ผ ํ•œ๋‹ค.

์ž๋ฐ” ํ”„๋กœ์ ํŠธ๋Š” ์ƒ๋‹นํžˆ IDE์— ์ข…์†์ ์ธ ๋А๋‚Œ์ด๋ผ ๋ญ”๊ฐ€ ๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋А๊ปด์ง„๋‹ค. ํ  ๊ทธ๋งŒํผ ์ด์ ์ด ์žˆ๊ฒ ์ง€, ์ต์ˆ™ํ•ด์ง€๋ฉด ๊ดœ์ฐฎ์•„์ง€๊ฒ ์ง€!

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • TDD, ์Šคํ”„๋ง๋ถ€ํŠธ ํ•™์Šต

Previous2021-03-25(Thu)Next2021-03-23(Tue)

Last updated 4 years ago

Was this helpful?

image-20210324134823443

์ถœ์ฒ˜:

https://www.youtube.com/watch?v=UttzAcbuk5k
https://www.youtube.com/watch?v=cVxqrGHxutU
๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํŠœ๋‹ ๋…ธํ•˜์šฐ ๋‹ค ์•Œ๋ ค ๋“œ๋ฆผ|๋ผ์ธ๊ฐœ๋ฐœ์‹ค๋ก
image-20210324132225400