Layered-architecture.md


Architecture Pattern- μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ΄λž€?

  • Wikipedia

μ£Όμ–΄μ§„ μƒν™©μ—μ„œμ˜ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ³μ—μ„œ 일반적으둜 λ°œμƒν•˜λŠ” λ¬Έμ œμ λ“€μ— λŒ€ν•œ μΌλ°˜ν™”λ˜κ³  μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ†”λ£¨μ…˜μ΄λ‹€. 아킀텍쳐 νŒ¨ν„΄μ€ μ†Œν”„νŠΈμ›¨μ–΄ λ””μžμΈ νŒ¨ν„΄κ³Ό μœ μ‚¬ν•˜μ§€λ§Œ 더큰 범주에 μ†ν•œλ‹€.

즉, μ†Œν”„νŠΈμ›¨μ–΄μ˜ 전체적인 ꡬ쑰λ₯Ό μž‘μ•„μ€λ‹ˆλ‹€. μ–΄λ–€ 상황에 μ–΄λ–€ μ•„ν‚€ν…μ²˜λ₯Ό μ‚¬μš©ν•˜λŠ”μ§€μ—λ”°λΌ μ„±λŠ₯에 차이가 λ‚  수 μžˆκΈ°λ•Œλ¬Έμ— μ μ ˆν•œ μ•„ν‚€ν…μ²˜λ₯Ό μ„ νƒν•΄μ•Όν•©λ‹ˆλ‹€.

Layered Arichitecture ?

  • == n-tier Architecture Pattern

  • 계측화 μ•„ν‚€ν…μ²˜ νŒ¨ν„΄

λ ˆμ΄μ–΄λ“œ μ•„ν‚€ν…μ²˜λŠ” ν•˜μœ„ λͺ¨λ“ˆλ“€μ˜ 그룹으둜 λ‚˜λˆŒ 수 μžˆλŠ” κ΅¬μ‘°ν™”λœ ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 각 λͺ¨λ“ˆμ€ νŠΉμ •ν•œ μˆ˜μ€€μ˜ 좔상화λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 이 λ–„ μƒμœ„ κ³„μΈ΅μ˜ 좔상화 μˆ˜μ€€μ€ 일반적으둜 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • Presentation Layer

  • Application Layer

  • Business logic Layer

  • Data Access Layer

archiimg
  1. Presentation Layer

    • UI κ³„μΈ΅μœΌλ‘œλ„ 뢈림

    • μ§μ—­ν•˜λ©΄ 'ν‘œν˜„ 계측'이라고 λΆˆλ¦¬λŠ”λ°, ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ ν‘œν˜„ν•΄μ£ΌλŠ” 단계라고 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

    • request λ₯Ό 직접 λ°›λŠ”λ‹€.

  2. Application Layer

    • μ„œλΉ„μŠ€ κ³„μΈ΅μœΌλ‘œλ„ 뢈림

    • μƒν˜Έμž‘μš©ν•˜λŠ” μ„œλΉ„μŠ€μ— ν•„μš”ν•œ 정보λ₯Ό μ „λ‹¬ν•˜λŠ” λ ˆμ΄μ–΄λΌκ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  3. Business Layer

    • 도메인 κ³„μΈ΅μœΌλ‘œλ„ 뢈림

    • μ‹€μ œ μ‹œμŠ€ν…œμ˜ 둜직이 κ΅¬ν˜„λ˜μ–΄μžˆλŠ” λ ˆμ΄μ–΄λΌκ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  4. Data Access Layer

    • μ˜μ† 계측이라고도 뢈림

    • λ°μ΄ν„°λ² μ΄μŠ€ κ΄€λ ¨ λ‘œμ§λ“€μ„ μ²˜λ¦¬ν•˜λŠ” λ ˆμ΄μ–΄μž…λ‹ˆλ‹€.

μ‚¬μš©

일반적인 e-commerceλ‚˜ μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 자주 μ‚¬μš©ν•©λ‹ˆλ‹€.

Controller, Service, Model

  1. Controller

  • Presentation Layer에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.

  • 직접 μ—”λ“œν¬μΈνŠΈλ₯Ό μ •μ˜ν•˜κ³  requestλ₯Ό λ°›λŠ” λͺ¨λ“ˆμž…λ‹ˆλ‹€.

  • 쀑볡을 μ²˜λ¦¬ν•˜κΈ°μœ„ν•΄ λ³„λ„μ˜ 객체둜 λΆ„λ¦¬ν•˜κ³  이λ₯Ό λ©”μ†Œλ“œλ‘œ λΆ„λ¦¬ν•©λ‹ˆλ‹€.

  1. Service

  • Business Logic을 μˆ˜ν–‰ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό κ°€μ§€κ³  μžˆλŠ” λΆ€λΆ„μž…λ‹ˆλ‹€.

  • ν•˜λ‚˜μ˜ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ€ ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μœΌλ‘œ λ™μž‘ν•˜λŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€.

  • νŠΈλžœμž­μ…˜

  • μ›μžμ„± (Atomicity)

    • rollback - 변경사항 μ·¨μ†Œ

    • commit - 변경사항 μ €μž₯

  • 일관성 (Consistency)

    • νŠΈλžœμž­μ…˜μ΄ μ§„ν–‰λ˜λŠ” λ™μ•ˆμ— 데이터가 λ³€κ²½λ˜λ”λΌλ„ μ—…λ°μ΄νŠΈλœ λ°μ΄ν„°λ‘œ νŠΈλžœμž­μ…˜μ΄ μ§„ν–‰λ˜λŠ” 것이 μ•„λ‹ˆλΌ, μ²˜μŒμ— νŠΈλžœμž­μ…˜μ„ μ§„ν–‰ν•˜κΈ° μœ„ν•΄ μ°Έμ‘°ν•œ λ°μ΄ν„°λ‘œ μ§„ν–‰λœλ‹€.

  • 독립성 (Isolation)

    • ν•˜λ‚˜μ˜ νŠΉμ • νŠΈλžœμž­μ…˜μ΄ μ™„λ£Œλ  λ•ŒκΉŒμ§€, λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ΄ νŠΉμ • νŠΈλžœμž­μ…˜μ˜ κ²°κ³Όλ₯Ό μ°Έμ‘°ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

  • 지속성 (Durability)

    • νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ¬μ„ 경우, κ²°κ³ΌλŠ” 영ꡬ적으둜 λ°˜μ˜λ˜μ–΄μ•Ό ν•œλ‹€.

  1. Model

    • ORM이 μ‚¬μš©λœλ‹€λ©΄ 일반적으둜 λ°μ΄ν„°λ² μ΄μŠ€μ™€ ν…Œμ΄λΈ”μ„ μ •μ˜ν•˜κ³  Serviceμ—μ„œ 객체λ₯Ό μƒμ„±ν•˜μ—¬ λ‘œμ§μ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

λ ˆμ΄μ–΄λ“œ μ•„ν‚€ν…μ²˜μ˜ μž₯점

  • ν™•μž₯μ„± 용이

  • μœ μ§€ 보수 용이

  • μ½”λ“œ 가독성 πŸ”Ό

  • μž¬μ‚¬μš©μ„± πŸ”Ό

  • ν…ŒμŠ€νŠΈ κ΅¬ν˜„ μš©μ•„

Last updated