Home > Backend Development > πŸ“š[Backend Development] Java Spring ν”„λ ˆμž„μ›Œν¬ ν”„λ‘œμ νŠΈ κ΅¬ν˜„ μ‹œ 계측 κ΅¬ν˜„ μˆœμ„œμ™€ 이유.

πŸ“š[Backend Development] Java Spring ν”„λ ˆμž„μ›Œν¬ ν”„λ‘œμ νŠΈ κ΅¬ν˜„ μ‹œ 계측 κ΅¬ν˜„ μˆœμ„œμ™€ 이유.
Backend Ddevelopment Component Layer Architecture

πŸ“š[Backend Development] Java Spring ν”„λ ˆμž„μ›Œν¬ ν”„λ‘œμ νŠΈ κ΅¬ν˜„ μ‹œ 계측 κ΅¬ν˜„ μˆœμ„œμ™€ 이유.

각 κ³„μΈ΅μ˜ μ—­ν• κ³Ό μ˜μ‘΄μ„±μ„ κ³ λ €ν–ˆμ„ λ•Œ, ν”„λ‘œμ νŠΈλ₯Ό κ΅¬ν˜„ν•˜λŠ” 데 ꢌμž₯λ˜λŠ” μ•ˆμ •μ μΈ μˆœμ„œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

βœ… 1. Java Spring ν”„λ ˆμž„μ›Œν¬ ν”„λ‘œμ νŠΈλ₯Ό κ΅¬ν˜„ μ‹œ μ–΄λ–€ 계측 μˆœμ„œλ‘œ κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ”κ°€?

κ°€μž₯ μ•ˆμ •μ μ΄κ³  μΆ”μ²œλ˜λŠ” μˆœμ„œλŠ” β€˜μ•ˆμ—μ„œ λ°–μœΌλ‘œ(Inside-Out)’ κ΅¬ν˜„ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
즉, λ°μ΄ν„°μ˜ κ°€μž₯ 핡심적인 λΆ€λΆ„λΆ€ν„° λ§Œλ“€μ–΄μ„œ λ°”κΉ₯으둜 ν™•μž₯ν•΄ λ‚˜κ°€λŠ” μˆœμ„œμž…λ‹ˆλ‹€.

✌️ μΆ”μ²œ μˆœμ„œ: Domain Layer(도메인 계측) ➞ Data Access Layer(데이터 μ ‘κ·Ό 계측) ➞ Business Layer(λΉ„μ¦ˆλ‹ˆμŠ€ 계측) ➞ Presentation Layer(ν‘œν˜„ 계측)

  1. Domain Layer(도메인 계측)
    • Product, Stockλ“± @Entity ν΄λž˜μŠ€μ™€ ERD 섀계λ₯Ό λ¨Όμ € μ™„μ„±ν•©λ‹ˆλ‹€. 이것이 λͺ¨λ“  λ°μ΄ν„°μ˜ λΌˆλŒ€κ°€ λ©λ‹ˆλ‹€.
  2. Data Access Layer(데이터 μ ‘κ·Ό 계측)
    • ProductRepository λ“± @Repository μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€μ–΄, λ°μ΄ν„°λ² μ΄μŠ€μ— μ‹€μ œλ‘œ 데이터λ₯Ό CRUDν•˜λŠ” 방법을 μ •μ˜ν•©λ‹ˆλ‹€.
  3. Business Layer(λΉ„μ¦ˆλ‹ˆμŠ€ 계측)
    • ProductService λ“± @Service 클래슀λ₯Ό λ§Œλ“€μ–΄, Repositoryλ₯Ό ν™œμš©ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, νŠΈλžœμž­μ…˜ 처리, 계산 둜직 등을 κ΅¬ν˜„ν•©λ‹ˆλ‹€.
  4. Presentation Layer(ν‘œν˜„ 계측)
    • @RestControllerλ₯Ό λ§Œλ“€μ–΄, μ™ΈλΆ€μ˜ μš”μ²­μ„ λ°›κ³  Serviceλ₯Ό ν˜ΈμΆœν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λŠ” API μ—”λ“œν¬μΈνŠΈλ₯Ό μ™„μ„±ν•©λ‹ˆλ‹€.

βœ… 2. μ™œ β€˜μ•ˆμ—μ„œ λ°–μœΌλ‘œ(Inside-Out)’ λ°©μ‹μœΌλ‘œ 계측을 κ΅¬ν˜„ν•΄μ•Ό ν• κΉŒ?

이 μˆœμ„œλŠ” β€˜κ±΄λ¬Όμ„ μ§“λŠ” μˆœμ„œβ€™ 에 λΉ„μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ™Έλ²½κ³Ό μΈν…Œλ¦¬μ–΄λΆ€ν„° ν•  수 없듯이, μ†Œν”„νŠΈμ›¨μ–΄λ„ λΌˆλŒ€μ™€ κΈ°λ°˜λΆ€ν„° μŒ“μ•„ μ˜¬λ¦¬λŠ” 것이 κ°€μž₯ μ•ˆμ •μ μž…λ‹ˆλ‹€.

  • 1단계: 섀계도와 λΌˆλŒ€(Domain Layer + Data Access Layer)
    • 집을 μ§“κΈ° μ „ 섀계도(ERD)λ₯Ό 그리고, 땅을 파고 철골(Entity, Repository)을 μ„Έμš°λŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€. 이 기반이 νŠΌνŠΌν•΄μ•Όλ§Œ κ·Έ μœ„μ— 무엇이든 μ•ˆμ „ν•˜κ²Œ 올릴 수 μžˆμŠ΅λ‹ˆλ‹€.
  • 2단계: λ‚΄λΆ€ μ„€λΉ„(Business Layer)
    • λΌˆλŒ€κ°€ μ™„μ„±λœ ν›„, μ „κΈ°/배수/κ°€μŠ€ μ„€λΉ„(λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, νŠΈλžœμž­μ…˜)λ₯Ό μ„€μΉ˜ν•©λ‹ˆλ‹€. 이 섀비듀은 λΌˆλŒ€ ꡬ쑰에 λ§žμΆ°μ„œ λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€.
  • 3단계: μ™Έλ²½κ³Ό μΈν…Œλ¦¬μ–΄(Presentation Layer)
    • λͺ¨λ“  λ‚΄λΆ€ ꡬ쑰가 μ™„μ„±λœ ν›„, μ‚¬λžŒλ“€μ΄ 보고 μ‚¬μš©ν•  수 μžˆλ„λ‘ 외벽을 κΎΈλ―Έκ³  λ¬Έκ³Ό μ°½λ¬Έ(API μ—”λ“œν¬μΈνŠΈ)을 λ‹΅λ‹ˆλ‹€.

이 μˆœμ„œλ₯Ό λ”°λžμ„ λ•Œμ˜ 기술적인 μž₯점은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • μ˜μ‘΄μ„± 순방ν–₯ 개발
    • Spring의 계측은 Presentation ➞ Business ➞ Data Access μˆœμ„œλ‘œ μ˜μ‘΄ν•©λ‹ˆλ‹€.
    • μ˜μ‘΄λ˜λŠ” λŒ€μƒ(μ•ˆμͺ½ 계측)을 λ¨Όμ € λ§Œλ“€μ–΄μ•Ό, 이λ₯Ό μ‚¬μš©ν•˜λŠ” λ°”κΉ₯ 계측을 μ•ˆμ •μ μœΌλ‘œ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • νƒ„νƒ„ν•œ 기반 μœ„μ—μ„œμ˜ 개발
    • 핡심 데이터 ꡬ쑰와 둜직이 이미 μ™„μ„±λ˜κ³  ν…ŒμŠ€νŠΈλœ μƒνƒœμ—μ„œ UI/APIλ₯Ό κ°œλ°œν•˜λ―€λ‘œ, λ‚˜μ€‘μ— ꡬ쑰λ₯Ό λ’€μ—ŽλŠ” 큰 변경이 λ°œμƒν•  ν™•λ₯ μ΄ μ€„μ–΄λ“­λ‹ˆλ‹€.
  • 계측별 λ‹¨μœ„ ν…ŒμŠ€νŠΈ 용이
    • μ•ˆμͺ½ 계측뢀터 λ§Œλ“€λ©΄, 각 계측이 완성될 λ•Œλ§ˆλ‹€ λ…λ¦½μ μœΌλ‘œ λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•˜κΈ° 맀우 νŽΈλ¦¬ν•˜μ—¬ μ½”λ“œμ˜ μ•ˆμ •μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.