본문으둜 κ±΄λ„ˆλ›°κΈ°

🌈 Chapter 8: μ„œλ“œ νŒŒν‹° μ½”λ“œλ₯Ό 기반으둜 ν•œ 개발

πŸ“š μ†Œμœ ν•œ νƒ€μž…μ— λŒ€ν•΄μ„œλ§Œ λͺ© 객체λ₯Ό μ μš©ν•˜λΌβ€‹

🎈 λ³€κ²½ν•  수 μ—†λŠ” νƒ€μž…μ— λŒ€ν•΄μ„œλŠ” λͺ© 객체λ₯Ό μ μš©ν•˜μ§€ 말라​

  • μ„œλ“œ νŒŒν‹° μ½”λ“œλ₯Ό μ‚¬μš©ν•  λ•Œ ν•΄λ‹Ή μ½”λ“œμ˜ μž‘λ™ 원리λ₯Ό 깊이 있게 μ΄ν•΄ν•˜μ§€ μ•Šμ„ λ•Œκ°€ μžˆλ‹€. μ„œλ“œ νŒŒν‹° μ½”λ“œμ˜ λ¬Έμ„œλ₯Ό 읽을 μˆ˜λŠ” μžˆμ§€λ§Œ, λ¬Έμ„œλ„ λΆˆμ™„μ „ν•˜κ±°λ‚˜ μ˜¬λ°”λ₯΄μ§€ μ•Šμ„ λ•Œκ°€ μžˆλ‹€. κ·ΈλŸ¬λ―€λ‘œ 좔상화 μš”μ†Œκ°€ μ–΄λ–»κ²Œ λ™μž‘ν•΄μ•Ό 할지 μ•Œκ³  μžˆλ”λΌλ„ μ„œλ“œ νŒŒν‹° μ½”λ“œλ‘œ ν…ŒμŠ€νŠΈν•˜κΈ° μ „κΉŒμ§€λŠ” μ‹€μ œλ‘œ κ·Έλ ‡κ²Œ λ™μž‘ν• μ§€ μ•Œ 수 μ—†λ‹€.
  • μ•„μšΈλŸ¬ μ„œλ“œ νŒŒν‹° μ½”λ“œ 변경은 내킀지 μ•ŠλŠ” 일이닀.
  • μ„œλ“œ νŒŒν‹° νƒ€μž…μ„ ν˜ΈμΆœν•˜λŠ” 객체λ₯Ό λŒ€μƒμœΌλ‘œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•  λ•Œ μ„œλ“œ νŒŒν‹° νƒ€μž…μ˜ λͺ© κ΅¬ν˜„μ„ μ œκ³΅ν•˜λ”λΌλ„ μ“°μž„μ΄ μ œν•œμ μ΄λΌλŠ” μ˜λ―Έλ‹€. μ‹œν—˜ν•  ν•„μš”κ°€ μžˆλŠ” κΈ°λŠ₯에 λŒ€ν•΄ μ½”λ“œλ₯Ό μ˜¬λ°”λ₯Έ μƒνƒœμ— 두렀면 μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬μ— λŒ€ν•΄ λͺ© 객체λ₯Ό μ μš©ν•˜λŠ” ν…ŒμŠ€νŠΈκ°€ λ³΅μž‘ν•΄μ§„λ‹€.
  • 또 λ‹€λ₯Έ μœ„ν—˜ μš”μ†ŒλŠ” μŠ€ν…μ΄λ‚˜ λͺ© 객체의 λŒ€μƒμ΄ λ˜λŠ” ν–‰μœ„κ°€ μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ μ‹€μ œλ‘œ μˆ˜ν–‰ν•  ν–‰μœ„μ™€ μΌμΉ˜ν•œλ‹€λŠ” 점을 보μž₯ν•΄μ•Ό ν•œλ‹€λŠ” 것이닀. μ΄λ ‡κ²Œ ν•˜λŠ” 것이 μ–Όλ§ˆλ‚˜ μ–΄λ €μš΄μ§€λŠ” 라이브러리의 ν’ˆμ§ˆμ— 달렸닀.

🎈 μ–΄λŒ‘ν„° 계측을 μž‘μ„±ν•˜λΌβ€‹

  • μš°λ¦¬λŠ” TDDλ₯Ό μ΄μš©ν•΄ κ°μ²΄μ—μ„œ ν•„μš”λ‘œ ν•˜λŠ” μ„œλΉ„μŠ€μ— λŒ€ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 섀계할 것이닀. μ΄λ•Œ μΈν„°νŽ˜μ΄μŠ€λŠ” μš°λ¦¬κ°€ μž‘μ„±ν•œ 객체의 κ΄€μ μ—μ„œ μ •μ˜λ˜μ§€, μ™ΈλΆ€ 라이브러리 κ΄€μ μ—μ„œ μ •μ˜λ˜μ§€λŠ” μ•Šμ„ 것이닀.
  • μš°λ¦¬λŠ” 이 μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ μ„œλ“œ νŒŒν‹° APIλ₯Ό μ“°λŠ” μ–΄λŒ‘ν„° 객체 계측을 μž‘μ„±ν•œλ‹€. 이 계측은 λ˜λ„λ‘ μ•κ²Œ μœ μ§€ν•˜λŠ”λ°, 잠재적으둜 λΆˆμ•ˆμ •ν•˜κ³  ν…ŒμŠ€νŠΈν•˜κΈ° μ–΄λ €μš΄ μ½”λ“œ 양을 쀄이기 μœ„ν•΄μ„œλ‹€.
  • μ•„μšΈλŸ¬ μ„œλ“œ νŒŒν‹° API의 μž‘λ™ 방식에 λŒ€ν•΄ μ–Όλ§ˆλ‚˜ μ΄ν•΄ν•˜κ³  μžˆλŠ”μ§€ ν™•μΈν•˜κ³ μž 집쀑적인 톡합 ν…ŒμŠ€νŠΈλ‘œ μ–΄λŒ‘ν„°λ₯Ό ν…ŒμŠ€νŠΈν•  것이닀. μ΄λŸ¬ν•œ 접근법을 κΎΈμ€€νžˆ λ”°λ₯΄λ‹€ 보면 μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό ν•΄λ‹Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 관점 밖에 μ‘΄μž¬ν•˜λŠ” μ…°κ³„μ™€μ˜ 관계λ₯Ό κ·œμ •ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€κ°€ λ§Œλ“€μ–΄μ§€κ³ , μ €μˆ˜μ€€μ˜ 기술적인 κ°œλ…μ΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 도메인 λͺ¨λΈλ‘œ μŠ€λ©°λ“€μ§€ μ•Šκ²Œ ν•  수 μžˆλ‹€.
  • μ΄λŸ¬ν•œ νŒ¨ν„΄μ€ κ°’ κ°μ²΄μ—λŠ” μ μš©λ˜μ§€ μ•ŠλŠ”λ‹€. λ‹Ήμ—°νžˆ κ°’ 객체에 λŒ€ν•΄μ„œλŠ” λͺ© 객체λ₯Ό μ μš©ν•  ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

πŸ“š 톡합 ν…ŒμŠ€νŠΈμ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 객체에 λͺ© 객체λ₯Ό μ μš©ν•˜λΌβ€‹

  • μ–΄λŒ‘ν„° κ°μ²΄λŠ” μˆ˜λ™μ μ΄μ—¬μ„œ μ½”λ“œμ—μ„œ ν˜ΈμΆœν•  λ•Œλ§Œ λ°˜μ‘ν•œλ‹€. μ΄λ”°κΈˆ μ–΄λŒ‘ν„° 객체가 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 객체둜 μ½œλ°±ν•΄μ•Όλ§Œ ν•  λ•Œκ°€ μžˆλ‹€.
  • 이 경우 μš°λ¦¬λŠ” μ„œλ“œ νŒŒν‹° μ½”λ“œμ™€ ν†΅ν•©λ˜λŠ” 객체λ₯Ό ν…ŒμŠ€νŠΈν•  λ•Œ λͺ© 객체λ₯Ό κΌ­ μ΄μš©ν•œλ‹€. κ·Έλ ‡μ§€λ§Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ •μ˜ν•œ 콜백 μΈν„°νŽ˜μ΄μŠ€μ— λͺ© 객체λ₯Ό μ μš©ν•˜κΈ°λ§Œ ν•˜λŠ”λ°, μ΄λ ‡κ²Œ ν•˜λŠ” μ΄μœ λŠ” 도메인 μ‚¬μ΄μ—μ„œ 이벀트λ₯Ό μ˜¬λ°”λ₯΄κ²Œ λ²ˆμ—­ν•˜λŠ”μ§€ κ²€μ¦ν•˜κΈ° μœ„ν•΄μ„œλ‹€.