포슀트

πŸŒ’ Architecture Pattern

πŸ’« μ•„ν‚€ν…μ²˜ νŒ¨ν„΄


  • μ„œλ‘œ λ‹€λ₯Έ μ‹œμŠ€ν…œκ³Ό ν™˜κ²½μ—μ„œ μ‹œλ„λ˜κ³  ν…ŒμŠ€νŠΈλœ μš°μˆ˜ν•œ 사둀λ₯Ό μ •ν˜•ν™”ν•˜κ³  μΆ”μƒν™”ν•œ 기술
  • 이전 μ‹œμŠ€ν…œμ—μ„œ μ„±κ³΅μ μ΄μ—ˆλ˜ μ‹œμŠ€ν…œ ꡬ쑰 기술
  • ν•΄λ‹Ή νŒ¨ν„΄μ„ μ–Έμ œ μ‚¬μš©ν•˜κΈ°μ— μ μ ˆν•˜κ³  μ μ ˆν•˜μ§€ μ•Šμ€μ§€μ— λŒ€ν•œ 정보 포함
  • νŒ¨ν„΄μ˜ 강점과 약점에 λŒ€ν•œ μƒμ„Έν•œ λ‚΄μš© 포함

πŸ’« MVC


Model, View, Controller의 μ•½μž
μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ‘œλΆ€ν„° λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ„Έ 가지 파트둜 λΆ„λ¦¬ν•˜μ—¬ μ„œλ‘œ 영ν–₯ 없이 κ°œλ°œν•  수 μžˆλŠ” 섀계가 κ°€λŠ₯

λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 : μ‚¬μš©μžκ°€ μ›ν•˜λŠ” κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 둜직 (Input λ°›κ³ , Process ν•˜κ³ , Output 내보내기)

  • Model : DB와 μ—°λ™ν•˜μ—¬ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” λΆ€λΆ„
  • View : μ‚¬μš©μžμ—κ²Œ λ³΄μ—¬μ§€λŠ” λΆ€λΆ„
    • νšŒμ›κ°€μž… λ²„νŠΌ, 둜그인 λ²„νŠΌ
  • Controller : μ‚¬μš©μžμ˜ μž…λ ₯을 λ°›μ•„ μ²˜λ¦¬ν•˜λŠ” λΆ€λΆ„
    • Viewμ—μ„œ λ²„νŠΌμ„ λˆ„λ₯΄λ©΄, Controllerκ°€ μš”μ²­μ„ λ°›μ•„μ„œ 처리

🫧 Model

  • 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” μ˜μ—­
  • λ°μ΄ν„°λ² μ΄μŠ€μ™€ 연동을 μœ„ν•œ DAO(Data Access Object)와 λ°μ΄ν„°μ˜ ꡬ쑰λ₯Ό ν‘œν˜„ν•˜λŠ” DO (Data Object)둜 ꡬ성됨

i.e. 검색을 μœ„ν•œ ν‚€μ›Œλ“œκ°€ λ„˜μ–΄μ˜€λ©΄ DBμ—μ„œ κ΄€λ ¨λœ μƒν’ˆμ˜ 데이터λ₯Ό λ°›μ•„ 뷰에 전달

🫧 View

  • 데이터λ₯Ό λ³΄μ—¬μ£ΌλŠ” ν™”λ©΄ 자체의 μ˜μ—­μ„ λœ»ν•¨
  • μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(UI) μš”μ†Œλ“€μ΄ 여기에 ν¬ν•¨λ˜λ©°, 데이터λ₯Ό 각 μš”μ†Œμ— λ°°μΉ˜ν•¨
  • λ·°μ—μ„œλŠ” λ³„λ„μ˜ 데이터λ₯Ό λ³΄κ΄€ν•˜μ§€ μ•ŠμŒ

i.e.검색 κ²°κ³Όλ₯Ό 보여주기 μœ„ν•΄ λͺ¨λΈμ—μ„œ κ²°κ³Ό μƒν’ˆ 리슀트 데이터λ₯Ό λ°›μŒ

🫧 Controller

  • λͺ¨λΈ(Model)κ³Ό λ·°(View) μ‚¬μ΄μ—μ„œ λΈŒλ¦Ώμ§€ 역할을 μˆ˜ν–‰
  • μ•±μ˜ μ‚¬μš©μžλ‘œλΆ€ν„° μž…λ ₯에 λŒ€ν•œ μ‘λ‹΅μœΌλ‘œ λͺ¨λΈ 및 λ·°λ₯Ό μ—…λ°μ΄νŠΈν•˜λŠ” λ‘œμ§μ„ 포함
  • μ‚¬μš©μžμ˜ μš”μ²­μ€ λͺ¨λ‘ Controller둜 λ“€μ–΄μ˜¨λ‹€. (진행해야 ν•œλ‹€.)
  • 컨트둀러둜 λ“€μ–΄μ˜¨ μš”μ²­μ€ μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€ κ²°μ •ν•˜μ—¬ λͺ¨λΈλ‘œ μš”μ²­μ„ 전달함

i.e. μ‡Όν•‘λͺ°μ—μ„œ μƒν’ˆμ„ κ²€μƒ‰ν•˜λ©΄ κ·Έ ν‚€μ›Œλ“œλ₯Ό λ°›μ•„μ„œ μž…λ ₯을 μ²˜λ¦¬ν•˜μ—¬ λͺ¨λΈκ³Ό 뷰에 μ μ ˆν•˜κ²Œ 전달

πŸ’« Layered Architecture


MVC νŒ¨ν„΄κ³Ό λΉ„μŠ·ν•œ 이야기, λ‹€λ§Œ λ ˆμ΄μ–΄(계측) κΈ°μ€€μœΌλ‘œ μ„€λͺ…
μœ μ‚¬ 관심사λ₯Ό λ ˆμ΄μ–΄λ‘œ λ¬Άμ–΄ μˆ˜ν‰μ μœΌλ‘œ λΆ„λ¦¬ν•œ ꡬ쑰

일반적으둜 3계측 λ˜λŠ” 4κ³„μΈ΅μœΌλ‘œ ꡬ성됨
ν”„λ‘œμ νŠΈμ— 따라 μ»€μŠ€ν„°λ§ˆμ΄μ§•ν•΄μ„œ μ‚¬μš©

🫧 Presentation

  • μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” 계측
  • μ‚¬μš©μžκ°€ μš”μ²­μ„ 보냄

🫧 Business

  • λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” 계측
  • μ‚¬μš©μžμ˜ μš”μ²­μ„ μ²˜λ¦¬ν•˜κ³ , 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 계측

🫧 Data (Access)

  • λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ—°λ™ν•˜λŠ” 계측

🫧 U_μ„€λͺ…

  • μ„œλΈŒ μ‹œμŠ€ν…œμ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λͺ¨λΈλ§ν•˜λŠ”데 이용
  • 각 측이 μ„œλΉ„μŠ€ 집합을 μ œκ³΅ν•˜λŠ” 계측 집합(좔상 λ¨Έμ‹ )으둜 μ‹œμŠ€ν…œμ„ ꡬ성
  • μƒμ΄ν•œ 계측에 μžˆλŠ” μ„œλΈŒ μ‹œμŠ€ν…œμ˜ 점증적 κ°œλ°œμ„ 지원. 계측 μΈν„°νŽ˜μ΄μŠ€κ°€ 변경될 λ•Œ, 인접 κ³„μΈ΅μ—λ§Œ 영ν–₯을 쀌.

🫧 U_μž₯점

  • μ‹œμŠ€ν…œμ˜ 점증적인 κ°œλ°œμ„ μ§€μ›ν•œλ‹€. ν•œ 계측이 κ°œλ°œλ¨μ— 따라, κ·Έ 계측에 μ˜ν•΄ μ œκ³΅λ˜λŠ” μ„œλΉ„μŠ€λ“€μ˜ 일뢀λ₯Ό μ‚¬μš©μžκ°€ μ΄μš©ν•  수 μžˆλ‹€.
  • λ³€κ²½ κ°€λŠ₯ν•˜λ©° 이식 κ°€λŠ₯ν•˜λ‹€. κ³„μΈ΅μ˜ μΈν„°νŽ˜μ΄μŠ€κ°€ λ³€κ²½λ˜μ§€ μ•ŠλŠ” ν•œ, λ™λ“±ν•œ λ‹€λ₯Έ 계측에 μ˜ν•΄ λŒ€μ²΄λ  수 μžˆλ‹€.

🫧 U_단점

  • μ‹œμŠ€ν…œμ„ κ΅¬μ‘°ν™”ν•˜λŠ” 것이 μ–΄λ €μšΈ 수 μžˆλ‹€. μ΅œμƒμœ„ μˆ˜μ€€μ˜ μ‚¬μš©μžκ°€ μš”κ΅¬ν•˜λŠ” μ„œλΉ„μŠ€λŠ” κ·Έ μ•„λž˜μ˜ μ—¬λŸ¬ 계측이 μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€μ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄ 인접 계측을 β€˜λš«κ³  μ§€λ‚˜κ°€μ•Όβ€™ ν•  μˆ˜λ„ μžˆλ‹€. 이런 방식은 μ‹œμŠ€ν…œμ˜ μ™ΈλΆ€ 계측이 λ°”λ‘œ κ·Έ μ΄μ „μ˜ 계측에 μ’…μ†λ˜μ§€ μ•ŠμŒμ— 따라 계측 λͺ¨λΈμ„ λ§κ°€λœ¨λ¦¬κ²Œ λœλ‹€.
  • μ—¬λŸ¬ μˆ˜μ€€μ˜ λͺ…λ Ήμ–΄ 해석이 ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— μ„±λŠ₯이 λ¬Έμ œκ°€ 될 수 μžˆλ‹€. μ΅œμƒμœ„ κ³„μΈ΅μœΌλ‘œλΆ€ν„°μ˜ μ„œλΉ„μŠ€ μš”μ²­μ€ 처리되기 전에 μƒμ΄ν•œ κ³„μΈ΅μ—μ„œ μ—¬λŸ¬ 번 ν•΄μ„λ˜μ–΄μ•Ό ν•œλ‹€.
이 κΈ°μ‚¬λŠ” μ €μž‘κΆŒμžμ˜ CC BY 4.0 λΌμ΄μ„ΌμŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.