λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🍏 Client

[클린 μ•„ν‚€ν…μ²˜] 1μž₯ 섀계와 μ•„ν‚€ν…μ²˜λž€? & 2μž₯ 두 가지 κ°€μΉ˜μ— λŒ€ν•œ 이야기

by Danna 2022. 1. 11.
728x90
728x90

1μž₯ _ 섀계와 μ•„ν‚€ν…μ²˜λž€?


섀계(design) 와 μ•„ν‚€ν…μ²˜(architecture) 사이에 차이가 μžˆμ„κΉŒ?

κ²°λ‘ λΆ€ν„°, 전체 μ„€κ³„μ˜ κ΅¬μ„±μš”μ†Œλ‘œ 보면 섀계와 μ•„ν‚€ν…μ²˜ λͺ¨λ‘ ν•„μš”ν•˜κΈ°λ•Œλ¬Έμ— ꡬ뢄지을 ν•„μš”κ°€ μ—†λ‹€.

μ•„ν‚€ν…μ²˜λŠ” κ³ μˆ˜μ€€μ˜ ꡬ쑰, μ„€κ³„λŠ” μ €μˆ˜μ€€μ˜ 세뢀사항이라고 μ •μ˜λ˜μ–΄ μžˆμ§€λ§Œ..

μ‹€μ œλ‘œ 집을 μ§€μ„λ•Œλ‚˜ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€κ³„ν• λ•Œ μ•„ν‚€ν…μ²˜μ™€ μ„€κ³„λŠ” κ°œλ³„μ μœΌλ‘œ μ‘΄μž¬ν•  수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

 

쒋은 μ†Œν”„νŠΈμ›¨μ–΄ μ„€κ³„μ˜ λͺ©ν‘œλŠ”?

ν•„μš”ν•œ μ‹œμŠ€ν…œμ„ λ§Œλ“€κ³  μœ μ§€λ³΄μˆ˜ν•˜λŠ” 데 νˆ¬μž…λ˜λŠ” 인λ ₯을 μ΅œμ†Œν™” ν•˜λŠ” 것이 λͺ©ν‘œμ΄λ‹€.

μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆœμ‹œν•  λ•Œλ§ˆλ‹€ λΉ„μš©μ΄ μ¦κ°€ν•œλ‹€λ©΄ λ‚˜μœ 섀계이닀. 

 

엉망진창이 λ˜μ–΄ κ°€λŠ” μ‹ ν˜Έ

νŠΉμ • 사둀λ₯Ό 톡해 직원이 λ§Žμ•„μ§€μ§€λ§Œ, μ½”λ“œ 생산성은 κ·ΈλŒ€λ‘œλΌλ©΄ 각자의 생산성은 λ–¨μ–΄μ§€λŠ” 것을 보여쀀닀.

μ‹œμŠ€ν…œμ„ κΈ‰ν•˜κ²Œ λ§Œλ“€κ±°λ‚˜, μ½”λ“œμ™€ μ„€κ³„μ˜ ꡬ쑰λ₯Ό κΉ”λ”ν•˜κ²Œ λ§Œλ“€λ €λŠ” 생각을 μ „ν˜€ ν•˜μ§€ μ•ŠμœΌλ©΄ 생산성이 λ–¨μ–΄μ§€κ²Œ λœλ‹€.

κ°μžλŠ” μ—΄μ‹¬νžˆ μ‹œκ°„μ„ νˆ¬μžν•΄μ„œ μΌν•˜μ§€λ§Œ.. 엉망이 된 μ½”λ“œλ₯Ό λŒ€μ²˜ν•˜λŠ”λ° μ†Œλͺ¨λ  뿐이닀.

 

무엇이 잘λͺ»λ˜μ—ˆλ‚˜?

토끼와 거뢁이 μš°ν™”μ— 개발자의 λͺ¨μŠ΅μ„ λΉ„μœ  πŸ‘€ 

토끼 개발자 = 뼈 λΉ μ§€κ²Œ μΌν•˜μ§€λ§Œ, μ„€κ³„μ˜ μ€‘μš”μ„±μ„ μ•Œκ³ μžˆλŠ” λ‡ŒλŠ” μž λ“€μ–΄ μžˆλŠ” 개발자. 생산성을 μœ μ§€ν•  수 μžˆλ‹€κ³  κ³Όμ‹ ν•œλ‹€.

거뢁이 개발자 = 쒋은 μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜κ°€ 무엇인지 μ΄ν•΄ν•˜κ³ , 쒋은 섀계와 μ•„ν‚€ν…μ²˜λ₯Ό 가진 μ‹œμŠ€ν…œμ„ λ§Œλ“œλŠ” 개발자

 

λ‹Ήμž₯ μ‹œμž₯에 μΆœμ‹œν•˜λŠ”λ° λ°”λΉ  토끼 κ°œλ°œμžλŠ” "μ½”λ“œλŠ” λ‚˜μ€‘μ— μ •λ¦¬ν•˜λ©΄ 돼!" 라고 λ§ν•˜μ§€λ§Œ, κ·Έλ ‡κ²Œ λ§ν•˜λŠ” κ°œλ°œμžλŠ” μ½”λ“œλ₯Ό μ •λ¦¬ν•˜μ§€ μ•ŠλŠ”λ‹€. ..  "μ—‰λ§μœΌλ‘œ λ§Œλ“€λ©΄ κΉ”λ”ν•˜κ²Œ μœ μ§€ν•  λ•Œλ³΄λ‹€ 항상 더 λŠλ¦¬λ‹€" λ₯Ό κΈ°μ–΅ν•˜μž.

μ²˜μŒλΆ€ν„° 전체 μ‹œμŠ€ν…œμ„ μž¬μ„€κ³„ν•˜λŠ” 것은 해결책이 μ•„λ‹ˆλ‹€. μžμ‹ μ„ κ³Όμ‹ ν•œλ‹€λ©΄ λ˜‘κ°™μ΄ μœ μ§€λ³΄μˆ˜μ— 엉망인 μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ²Œ λœλ‹€.

 

κ²°λ‘ 

개발 쑰직에 μŠ€λ©°λ“  과신을 μΈμ§€ν•˜μ—¬ λ°©μ§€ν•˜κ³ , μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜μ˜ ν’ˆμ§ˆμ„ μ‹¬κ°ν•˜κ²Œ κ³ λ―Όν•˜κΈ° μ‹œμž‘ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€.

μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜μ˜ ν’ˆμ§ˆμ„ κ³ λ―Όν•˜κΈ° μœ„ν•΄μ„œλŠ” 쒋은 μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜κ°€ 무엇인지 이해해야 ν•œλ‹€.

λΉ„μš©μ€ μ΅œμ†Œν™”ν•˜κ³  생산성은 μ΅œλŒ€ν™”ν•  수 μžˆλŠ” 섀계와 μ•„ν‚€ν…μ²˜λ₯Ό 가진 μ‹œμŠ€ν…œμ„ λ§Œλ“€λ €λ©΄, κ·ΈλŸ¬ν•œ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜μ˜ 속성을 μ•Œμ•„μ•Ό ν•œλ‹€.

=> 이 μ±…μ—μ„œλŠ” ν›Œλ₯­ν•˜κ³  κΉ”λ”ν•œ μ•„ν‚€ν…μ²˜μ™€ 섀계가 무엇인지 μ„€λͺ…ν•˜κ³ , κ°œλ°œμžκ°€ μž₯기간에 걸쳐 μˆ˜μ΅μ„ μ°½μΆœν•˜λŠ” μ‹œμŠ€ν…œμ„ λ§Œλ“€ 수 있게 ν•œλ‹€.

 

 

2μž₯ _ 두 가지 κ°€μΉ˜μ— λŒ€ν•œ 이야기


μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ€ μ„œλ‘œ λ‹€λ₯Έ 두 가지 κ°€μΉ˜ "ν–‰μœ„(behavior)와 ꡬ쑰(structure)"λ₯Ό μ œκ³΅ν•œλ‹€.

 

ν–‰μœ„ (κΈ°λŠ₯)

μ†Œν”„νŠΈμ›¨μ–΄μ˜ 첫 번째 κ°€μΉ˜, ν–‰μœ„λŠ” κΈ°λŠ₯ λͺ…μ„Έμ„œλ‚˜ μš”κ΅¬μ‚¬ν•­ λ¬Έμ„œ ꡬ체화λ₯Ό 돕고, μš”κ΅¬μ‚¬ν•­μ„ λ§Œμ‘±ν•˜λ„λ‘ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것이닀. 

λŒ€λΆ€λΆ„ κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κ³  버그λ₯Ό μˆ˜μ •ν•˜λŠ” 일이 μžμ‹ μ΄ ν•΄μ•Όν•  일의 전뢀라고 μƒκ°ν•œλ‹€. 

 

μ•„ν‚€ν…μ²˜ (ꡬ쑰)

μ†Œν”„νŠΈμ›¨μ–΄λŠ” soft + ware 의 ν•©μ„±μ–΄λ‘œ, κΈ°κ³„μ˜ ν–‰μœ„λ₯Ό μ‰½κ²Œ λ³€κ²½ν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ 것이닀.

μ†Œν”„νŠΈμ›¨μ–΄κ°€ 가진 λ³Έμ—°μ˜ λͺ©μ μ„ μΆ”κ΅¬ν•˜λ €λ©΄ λΆ€λ“œλŸ¬μ›Œμ•Όν•œλ‹€. 즉 μ†Œν”„νŠΈμ›¨μ–΄λŠ” λ³€κ²½ν•˜κΈ° μ‰¬μ›Œμ•Ό ν•œλ‹€.

 

변경사항을 μ μš©ν•˜λŠ”λ° λ“œλŠ” 어렀움은 λ³€κ²½λ˜λŠ” λ²”μœ„μ— λΉ„λ‘€ν•΄μ•Όν•˜λ©°, λ³€κ²½μ‚¬ν•­μ˜ ν˜•νƒœ(shape)μ™€λŠ” 관련이 μ—†μ–΄μ•Ό ν•œλ‹€.

μ‹œμŠ€ν…œμ˜ ν˜•νƒœμ™€ μš”κ΅¬μ‚¬ν•­μ˜ ν˜•νƒœκ°€ μ„œλ‘œ λ§žμ§€ μ•ŠλŠ” κ²½μš°μ— κ°œλ°œμžλŠ” 변경사항을 μ μš©ν•˜κΈ° μ–΄λ ΅λ‹€κ³  μƒκ°ν•œλ‹€.

μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜λŠ” νŠΉμ • μ‹œμŠ€ν…œμ— 맞좰져 νŠΉμ • ν˜•νƒœλ₯Ό 가진닀면 λ³€κ²½ν•˜κΈ° μ–΄λ €μ›Œμ§„λ‹€.

μ†Œν”„νŠΈμ›¨μ–΄ 변경을 쉽고 μ‹€μš©μ μœΌλ‘œ ν•˜κΈ°μœ„ν•΄μ„œ, μ•„ν‚€ν…μ²˜λŠ” ν˜•νƒœμ— λ…λ¦½μ μ΄μ–΄μ•Όν•œλ‹€.

 

ν–‰μœ„μ™€ μ•„ν‚€ν…μ²˜, 더 높은 κ°€μΉ˜λŠ” λ¬΄μ—‡μΌκΉŒ?

1 μ™„λ²½ν•˜κ²Œ λ™μž‘ν•˜μ§€λ§Œ μˆ˜μ •μ΄ λΆˆκ°€λŠ₯ν•œ ν”„λ‘œκ·Έλž¨ 

-> μš”κ΅¬μ‚¬ν•­μ΄ 변경될 λ•Œ λ™μž‘ν•˜μ§€ μ•Šκ²Œ 되고, κ²°κ΅­ λŒμ•„κ°€λ„λ‘ λ§Œλ“€ 수 μ—†κ²Œ λœλ‹€. 사싀상 λΆˆκ°€λŠ₯은 μ—†κ² μ§€λ§Œ 변경에 λ“œλŠ” λΉ„μš©μ΄ μ°½μΆœλ˜λŠ” μˆ˜μ΅μ„ μ΄ˆκ³Όν•˜λŠ” κ²½μš°κ°€ 될것이닀.

 

2 λ™μž‘μ€ ν•˜μ§€ μ•Šμ§€λ§Œ 변경이 μ‰¬μš΄ ν”„λ‘œκ·Έλž¨

=> κ°œλ°œμžλŠ” ν”„λ‘œκ·Έλž¨μ„ λ™μž‘ν•˜κ²Œ λ§Œλ“€ 수 있고, 변경사항이 λ°œμƒν•˜λ”λΌλ„ κ³„μ†ν•΄μ„œ μœ μ§€λ³΄μˆ˜ν•  수 μžˆλ‹€. μ•žμœΌλ‘œλ„ μœ μš©ν•˜κ²Œ μ΄μš©ν•  수 μžˆλ‹€. 

 

ν˜„μ‹€μ μœΌλ‘œλŠ”.. λ™μž‘ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μ•ˆλ˜κ² μ§€λ§Œ πŸ‘€  μ €μžλŠ” ν˜„μž¬ λ™μž‘μ—¬λΆ€λ³΄λ‹€ μ•žμœΌλ‘œμ˜ λ³€κ²½ κ°€λŠ₯ν•œ μ‹œμŠ€ν…œμ΄ 더 쒋은 μ‹œμŠ€ν…œμ΄λΌκ³  λ§ν•˜κ³  μžˆλ‹€.

 

μ•„μ΄μ  ν•˜μ›Œ 맀트릭슀

μ€‘μš”μ„±κ³Ό 긴급성에 κ΄€ν•œ μ•„μ΄μ  ν•˜μ›Œ λ§€νŠΈλ¦­μŠ€μ— ν–‰μœ„μ™€ μ•„ν‚€ν…μ²˜λ₯Ό μ μš©ν•΄μ„œ ν•œλ²ˆ 더 μ•„ν‚€ν…μ²˜μ˜ μ€‘μš”μ„±μ„ μ–ΈκΈ‰ν•œλ‹€. (μž‘λ…„μ— 인턴을 ν•  λ•Œ 업무 μš°μ„ μˆœμœ„ μ •ν•˜λŠ” κ³Όμ •μ—μ„œ 봀던 맀트릭슀!!)

 

ν–‰μœ„ = κΈ΄κΈ‰ν•˜μ§€λ§Œ, 맀번 높은 μ€‘μš”λ„λ₯Ό κ°€μ§€λŠ” 것은 μ•„λ‹ˆλ‹€. μ§€κΈˆ λ‹Ήμž₯ κ°œλ°œν•΄μ•Όν•˜λŠ” κΈ°λŠ₯.. μ€‘μš”λ„λŠ” 맀번 λ‹€λ₯΄λ‹€.

μ•„ν‚€ν…μ²˜ = μ€‘μš”ν•˜μ§€λ§Œ 즉각적인 긴급성을 ν•„μš”λ‘œ ν•˜λŠ” κ²½μš°λŠ” μ ˆλŒ€ μ—†λ‹€. μœ μ§€λ³΄μˆ˜ μΈ‘λ©΄μ—μ„œ ν•„μš”ν•œ λ¦¬νŒ©ν† λ§μ€ λ‹Ήμž₯ μˆ˜μ •ν•˜μ§€ μ•Šμ•„λ„ ν”„λ‘œκ·Έλž¨μ΄ 정상 λ™μž‘ν•˜λ―€λ‘œ.. κΈ΄κΈ‰ν•˜μ§„ μ•Šλ‹€ πŸ₯²

 

μš°μ„ μˆœμœ„λŠ” λ‹€μŒκ³Ό κ°™λ‹€. "μ€‘μš” & κΈ΄κΈ‰ > μ€‘μš” & κΈ΄κΈ‰X > μ€‘μš”X & κΈ΄κΈ‰ >  μ€‘μš”X & κΈ΄κΈ‰X"

업무 κ΄€λ¦¬μžμ™€ κ°œλ°œμžλŠ” μ„Έλ²ˆμ§Έμ— μœ„μΉ˜ν•œ "μ€‘μš”ν•˜μ§€ μ•Šμ§€λ§Œ κΈ΄κΈ‰ν•œ" ν•­λͺ©μ„ 첫번째 μš°μ„ μˆœμœ„λ‘œ μƒκ°ν•˜λŠ” μ‹€μˆ˜λ₯Ό 많이 저지λ₯Έλ‹€.

"κΈ΄κΈ‰ν•˜μ§€λ§Œ μ€‘μš”ν•˜μ§€ μ•Šμ€" κΈ°λŠ₯κ³Ό "κΈ΄κΈ‰ν•˜λ©΄μ„œ μ€‘μš”ν•œ" κΈ°λŠ₯을 κ΅¬λΆ„ν•˜μ§€ λͺ»ν•œλ‹€.

=> 그렇기에 μ€‘μš”λ„κ°€ 높은 μ•„ν‚€ν…μ²˜λ₯Ό λ¬΄μ‹œν•œ 채 μ€‘μš”λ„κ°€ λ–¨μ–΄μ§€λŠ” κΈ°λŠ₯을 μ„ νƒν•˜κ²Œ λœλ‹€.

 

μ•„ν‚€ν…μ²˜λ₯Ό μœ„ν•΄ νˆ¬μŸν•˜λΌ

μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμžλŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄ν˜Έν•΄μ•Ό ν•  μ±…μž„μ΄ μžˆλ‹€. 효율적인 μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œνŒ€μ€ μ•„ν‚€ν…μ²˜λ₯Ό κ°œμ„ ν•˜κΈ° μœ„ν•΄ λ‹€λ₯Έ νŒ€κ³Ό νˆ¬μŸν•΄μ•Όν•œλ‹€.

μ•„ν‚€ν…μ²˜κ°€ ν›„μˆœμœ„κ°€ 되면 μ‹œμŠ€ν…œμ„ κ°œλ°œν•˜λŠ” λΉ„μš©μ΄ 더 많이 λ“€κ³ , 변경을 κ°€ν•˜λŠ” 일이 ν˜„μ‹€μ μœΌλ‘œ λΆˆκ°€λŠ₯해진닀. μ΄λŸ¬ν•œ 상황이 μš©λ‚©λ˜λ©΄, μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œνŒ€μ΄ 슀슀둜 μ˜³λ‹€κ³  λ―ΏλŠ” κ°€μΉ˜λ₯Ό μœ„ν•΄ μΆ©λΆ„νžˆ νˆ¬μŸν•˜μ§€ μ•Šμ•˜λ‹€λŠ” λœ»μ΄λ‹€. πŸ₯²

 


 

개인적인 생각

클린 μ•„ν‚€ν…μ²˜λ₯Ό 읽어보고 μ‹Άλ‹€λŠ” 생각은 ν–ˆμ§€λ§Œ, μ™œ 클린 μ•„ν‚€ν…μ²˜λ₯Ό 읽어야 ν• κΉŒ? μ™œ 섀계λ₯Ό 잘 ν•΄μ•Ό ν• κΉŒ? λ₯Ό 생각할 수 μžˆμ—ˆλ˜ μ±•ν„°μ˜€λ‹€. ν•œ 번 μ“°κ³  λ²„λ €μ§€λŠ” μ½”λ“œκ°€ μ•„λ‹Œ, κ³„μ†ν•΄μ„œ μˆ˜μ • κ°€λŠ₯ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•˜κΈ° μœ„ν•΄ 섀계뢀터 κ³ λ―Όν•΄μ•Όκ² λ‹€.

그리고 이전에 μž‘μ„±λœ μ½”λ“œλ₯Ό μ–΄λ–»κ²Œν•˜λ©΄ 더 μ†Œν”„νŠΈν•˜κ²Œ λ³€κ²½ν•  수 μžˆμ„μ§€λ„ κ³ λ―Όν•΄μ•Όκ² λ‹€.

"μ†Œν”„νŠΈμ›¨μ–΄λŠ” λ³€κ²½ν•˜κΈ° μ‰¬μ›Œμ•Ό ν•œλ‹€."

 

 

728x90
728x90