Home > Spring > πŸƒ[Spring] κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜(Layered Architecture), 3계측 μ•„ν‚€ν…μ²˜(Three-Tier Architecture)

πŸƒ[Spring] κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜(Layered Architecture), 3계측 μ•„ν‚€ν…μ²˜(Three-Tier Architecture)
Spring Framework

πŸƒ[Spring] κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜(Layered Architecture), 3계측 μ•„ν‚€ν…μ²˜(Three-Tier Architecture)

  • Controllerλ₯Ό 톡해 μ™ΈλΆ€μ˜ μš”μ²­μ„ λ°›κ³ , Serviceμ—μ„œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λ©°, Repositoryμ—μ„œ 데이터λ₯Ό μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” νŒ¨ν„΄μ€ β€œκ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜(Layered Architecture)” λ˜λŠ” β€œ3계측 μ•„ν‚€ν…μ²˜(Three-Tier Architecture)” 라고 λΆ€λ¦…λ‹ˆλ‹€.

1️⃣ κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜(Layered Architecture)

  • 이 μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—¬λŸ¬ κ³„μΈ΅μœΌλ‘œ λ‚˜λˆ„μ–΄ 각 계측이 νŠΉμ •ν•œ 역할을 λ‹΄λ‹Ήν•˜λ„λ‘ κ΅¬μ‘°μ™€ν•©λ‹ˆλ‹€.
  • 이 방식은 μ†Œν”„νŠΈμ›¨μ–΄μ˜ λ³΅μž‘μ„±μ„ 쀄이고, μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±μ„ 높이며, ν…ŒμŠ€νŠΈν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€.
  • μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬μ—μ„œ 이 νŒ¨ν„΄μ€ 자주 μ‚¬μš©λ©λ‹ˆλ‹€.

2️⃣ 각 계측별 μ—­ν• .

  • 1. Presentation Layer(ν”„λ ˆμ  ν…Œμ΄μ…˜ 계측) - Controller
    • μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€μ™€ μƒν˜Έμž‘μš©ν•˜λŠ” κ³„μΈ΅μž…λ‹ˆλ‹€.
    • μ™ΈλΆ€μ˜ μš”μ²­μ„ λ°›μ•„μ„œ μ²˜λ¦¬ν•˜κ³ , 응닡을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
    • μŠ€ν”„λ§μ—μ„œλŠ” 주둜 @Controller λ˜λŠ” @RestController λ₯Ό μ‚¬μš©ν•˜μ—¬ 이 계측을 κ΅¬ν˜„ν•©λ‹ˆλ‹€.
  • 2. Business Logic Layer(λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 계측) - Service
    • λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” κ³„μΈ΅μž…λ‹ˆλ‹€.
    • λ°μ΄ν„°μ˜ 처리, 계산, 검증 λ“± 핡심적인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 둜직이 κ΅¬ν˜„λ©λ‹ˆλ‹€.
    • μŠ€ν”„λ§μ—μ„œλŠ” 주둜 @Service μ• λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ—¬ 이 계측을 κ΅¬ν˜„ν•©λ‹ˆλ‹€.
  • 3. Data Access Layer(데이터 μ ‘κ·Ό 계측) - Repository
    • λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ μ™ΈλΆ€ 데이터 μ†ŒμŠ€μ™€ μƒν˜Έμž‘μš©ν•˜λŠ” κ³„μΈ΅μž…λ‹ˆλ‹€.
    • λ°μ΄ν„°μ˜ CRUD(Create, Read, Update, Delete) μž‘μ—…μ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
    • μŠ€ν”„λ§μ—μ„œλŠ” 주둜 @Repository μ• λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ—¬ 이 계측을 κ΅¬ν˜„ν•˜λ©° JPA, MyBatis, Hibernate λ“±μ˜ ORM(Object-Relational Mapping) 도ꡬ와 ν•¨κ»˜ μ‚¬μš©λ©λ‹ˆλ‹€.

3️⃣ 이 νŒ¨ν„΄μ˜ μ£Όμš” μž₯점.

  • λͺ¨λ“ˆν™”
    • 각 계측이 λ…λ¦½μ μœΌλ‘œ κ΄€λ¦¬λ˜λ―€λ‘œ, 각 κ³„μΈ΅μ˜ μ½”λ“œκ°€ λͺ…ν™•νžˆ λΆ„λ¦¬λ©λ‹ˆλ‹€.
  • μœ μ§€λ³΄μˆ˜μ„±
    • λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, 데이터 μ ‘κ·Ό, 그리고 ν”„λ ˆμ  ν…Œμ΄μ…˜ 둜직이 λΆ„λ¦¬λ˜μ–΄ μžˆμ–΄, 각 뢀뢄을 λ…λ¦½μ μœΌλ‘œ μˆ˜μ •ν•˜κ±°λ‚˜ ν™•μž₯ν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€.
  • ν…ŒμŠ€νŠΈ μš©μ΄μ„±
    • 각 계측을 λ…λ¦½μ μœΌλ‘œ ν…ŒμŠ€νŠΈν•  수 μžˆμ–΄, λ‹¨μœ„ ν…ŒμŠ€νŠΈμ™€ 톡합 ν…ŒμŠ€νŠΈκ°€ μš©μ΄ν•©λ‹ˆλ‹€.
  • μœ μ—°μ„±
    • νŠΉμ • 계측을 λ³€κ²½ν•˜κ±°λ‚˜ λŒ€μ²΄ν•  λ•Œ, λ‹€λ₯Έ 계측에 λ―ΈμΉ˜λŠ” 영ν–₯을 μ΅œμ†Œν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이 κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜λŠ” μŠ€ν”„λ§ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€λΆ€λΆ„μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ±„νƒν•˜λŠ” 일반적인 ꡬ쑰이며, μ†Œν”„νŠΈμ›¨μ–΄ μ„€κ³„μ˜ 베슀트 ν”„λž™ν‹°μŠ€ 쀑 ν•˜λ‚˜λ‘œ 널리 인정받고 μžˆμŠ΅λ‹ˆλ‹€.