githubEdit

Layered Architecture

  • layered architecture - κ΄€μ‹¬μ‚¬μ˜ 뢄리에 따라 μ‹œμŠ€ν…œμ„ μœ μ‚¬ν•œ μ±…μž„μ„ μ§€λ‹Œ layer둜 λΆ„λ¦¬ν•˜κ³ , 각각의 λ ˆμ΄μ–΄κ°€ ν•˜μœ„ λ ˆμ΄μ–΄μ—λ§Œ μ˜μ‘΄ν•˜λ„λ‘ κ΅¬μ„±ν•˜λŠ” 아킀텍쳐 νŒ¨ν„΄

    1. presentation λ ˆμ΄μ–΄

      • HTTP μš”μ²­ νŒŒλΌλ―Έν„°, Bodyλ₯Ό validation, μ‚¬μš©μžμ˜ μš”μ²­μ„ μœ„μž„, 응닡을 λ°˜ν™˜ν•¨

      • (μΆ”κ°€) ν•¨μˆ˜(μ—°μ‚°) λ ˆλ²¨μ—μ„œμ΄ λͺ…λ Ήκ³Ό 쑰회의 μ±…μž„μ„ λΆ„λ¦¬ν•˜λŠ” CQS(command query seperation)을 μ μš©ν•΄μ„œ μ‚¬μš©μžμ˜ μš”μ²­μ„ λͺ…μ‹œμ μœΌλ‘œ λͺ…λ Ήκ³Ό 쑰회둜 λΆ„λ¦¬ν•΄μ„œ κ°œλ°œν•  수 있음

    2. application λ ˆμ΄μ–΄

      • 흐름 μ œμ–΄ λͺ©μ , AOPλ₯Ό μ‚¬μš©ν•œ 쒅적&횑적 κ΄€μ‹¬μ‚¬μ˜ 뢄리, 도메인 λͺ¨λΈ λ„μž…, 단일 μ±…μž„μ„ μ§€λ‹ˆλŠ” μ—¬λŸ¬κ°œμ˜ μ„œλΉ„μŠ€λ‘œ λΆ„ν•΄ν•˜κ³  역할을 μœ„μž„

      • 단일 개체 μ„œλΉ„μŠ€λ₯Ό λ§Œλ“€μ—ˆμ„ λ•Œ 단점 β†’ ν•˜λŠ” 역할이 λ„ˆλ¬΄ λ§Žμ•„μ„œ λ³΅μž‘λ„ 증가. 연관성이 적은 κ°œμ²΄κ°€ μ„œλΉ„μŠ€ κ°œμ²΄μ— λ°€μ§‘ν•˜κ²Œ 되면 μ˜μ‘΄ν•˜λŠ” κ°œμ²΄κ°€ λ§Žμ•„μ§€κ³ , 그러면 변경에 μ·¨μ•½ν•œ μ½”λ“œκ°€ 됨

    3. domain λ ˆμ΄μ–΄

      • CQS 원칙에 따라 λͺ…λ Ή μ±…μž„κ³Ό 쑰회 μ±…μž„μ„ 뢄리

      • DIP에 따라 도메인 λ ˆμ΄μ–΄μ—μ„œλŠ” κ³ μˆ˜μ€€μ˜ λΉ„μ§€λ‹ˆμŠ€ λ‘œμ§μ„ ν•΄κ²°ν•΄μ•Όλ˜κ³ , μ €μˆ˜μ€€μ˜ 기술 κ΅¬ν˜„, μ™ΈλΆ€ 인프라에 μ˜μ‘΄ν•˜μ§€ μ•Šλ„λ‘ ꡬ성해야됨

        • 도메인 λ ˆμ΄μ–΄λŠ” μΆ”μƒμ μ΄μ—¬μ•Όλ˜κ³ , λ‹€λ₯Έ μ™ΈλΆ€ μ˜μ‘΄μ„±μ„ μ°Έμ‘°ν•˜μ§€ μ•Šμ•„μ•Όλ¨

    4. infrastructure λ ˆμ΄μ–΄

      • Data access 기술, IoC μ»¨ν…Œμ΄λ„ˆ, κ·Έ μ™Έ 기술적인 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” λͺ¨λ“  개체λ₯Ό 포함

        • Spring IoC ν™˜κ²½ ꡬ성

        • Session, JWT λ³΄μ•ˆ κΈ°λŠ₯

        • Data Access(Hibernateλ‚˜ MyBatis, JDBC)

        • λ©”μ„Έμ§• 큐(Rabbit MQ, Kafka)

        • 메일(JavaMail)

Last updated