μμΈμμ μκΆμ λΆμνκ³ μΆμ²νλ μλΉμ€λ‘, μ°½μ μ ν¬λ§νλ μ¬λλ€μκ² μ΅μ μ μ°½μ μ₯μλ₯Ό μΆμ²ν΄μ£Όλ κ²μ λͺ©νλ‘ ν©λλ€.
κ°λ°κΈ°κ°: 2023.03 ~ 2023.06 (15μ£Ό)
μ°½μ μ€ννμΈλλ μ°½μ μ ν¬λ§νλ μ¬λλ€μ μν΄ μμΈμμ μκΆμ λΆμνκ³ μΆμ²νλ μλΉμ€μ λλ€. μ΄ μλΉμ€λ λ€μν μκΆ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ μκΆμ νΉμ±κ³Ό νΈλ λλ₯Ό λΆμνμ¬ μ΅μ μ μ°½μ μ₯μλ₯Ό μΆμ²ν©λλ€. μ¬μ©μκ° μ§μ μνλ μ°μ μμλ₯Ό μ νν μ μμΌλ©°, μ°½μ μ μ§μ κ°μ€μΉλ₯Ό λΆμ¬νμ¬ κ°μ€μΉ κΈ°λ°μΌλ‘ μΆμ²ν©λλ€. μ£Όμ κΈ°λ₯μΌλ‘λ μκΆ λΆμ, κ°μ€μΉ κΈ°λ° μΆμ², μ¬μ©μ 리뷰 κ΄λ¦¬ λ±μ΄ ν¬ν¨λ©λλ€.
μ°½μ μ μ§ μ μ μ μ°½μ μ μ±ν¨λ₯Ό μ’μ°νλ μ€μν μμ μ€ νλμ λλ€. κ·Έλ¬λ λ§μ μ°½μ μλ€μ΄ μ 보 λΆμ‘±κ³Ό λΆμμ μ΄λ €μμΌλ‘ μΈν΄ μ΅μ μ μ μ§λ₯Ό μ ννλ λ° μ΄λ €μμ κ²ͺκ³ μμ΅λλ€. μ°½μ μ€ννμΈλλ μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκ³ μ μμΈμ μκΆ λ°μ΄ν°λ₯Ό λΆμ λ° κ°κ³΅νμ¬ μ°½μ μλ€μκ² μ€μ§μ μΈ λμμ μ 곡νλ κ²μ λͺ©νλ‘ ν©λλ€.
μ°½μ μ€ννμΈλλ μ¬μ©μ μΉνμ μΈ μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μ°½μ μλ€μ΄ μ½κ² μκΆ μ 보λ₯Ό νμνκ³ μ΄ν΄ν μ μλλ‘ λμμ€λλ€. λν μ¬μ©μκ° μ€μνκ² μκ°νλ μ μ§ μ‘°κ±΄μ λ°νμΌλ‘ λ§μΆ€ν μ°½μ μ₯μλ₯Ό μΆμ²ν©λλ€. μ΄λ₯Ό ν΅ν΄ λ³ΈμΈλ€μ΄ μ°μ μΌλ‘ μκ°νλ 쑰건μ κΈ°λ°ν μμ¬ κ²°μ μ λ΄λ¦΄ μ μμΌλ©°, μ°½μ μ±κ³΅ κ°λ₯μ±μ λμΌ μ μμ΅λλ€.
- π₯ μ₯λ €μ - 2023 μμΈμ μ΄λ¦°λ°μ΄ν° κ²½μ§λν
- μμΈνΉλ³μκ° μ£Όμ΅νλ μ΄λ¦°λ°μ΄ν° κ²½μ§λνμμ μ₯λ €μμ μμνμ΅λλ€.
- π₯ μ₯λ €μ - 2023 μ 15ν μΈμ’
λνκ΅ μ°½μμ€κ³κ²½μ§λν μ₯λ €μ
- μΈμ’ λνκ΅μμ μ£Όμ΅νλ μ°½μμ€κ³κ²½μ§λνμμ μ₯λ €μμ μμνμ΅λλ€.
μ‘°νμ | λ°°μΉμ§ | μ΄μ¬ν | μ μ£Όν¬ |
---|---|---|---|
@hyunsoo | @Seung-jin | @Jae-hyeok | @Ju-hee |
λ°±μλ κ°λ° | νλ‘ νΈμλ κ°λ° | νλ‘ νΈμλ κ°λ° | λ°±μλ κ°λ° |
μ΄λ¦ | μν λ° κΈ°μ¬λ |
---|---|
μ‘°νμ | - π λ°±μλ κ°λ° 리λλ‘μ νλ‘μ νΈ μν€ν
μ² μ€κ³ λ° κ°λ° μ΄κ΄ - π¨ Spring Bootλ₯Ό νμ©ν RESTful API ꡬν λ° λ¬Έμν - βοΈ Spring Batchλ₯Ό νμ©ν λ°μ΄ν° μμ§ λ° λΆμ λ°°μΉ μμ ꡬν - πΎ λ°μ΄ν°λ² μ΄μ€ μ±λ₯ μ΅μ ν λ° μΈλ±μ± μμ μν - π λ°°ν¬ λ° μ΄μ νκ²½ κ΅¬μΆ λ° κ΄λ¦¬ |
μ μ£Όν¬ | - π€ μ νλΈ νΈλ λ κ΄λ ¨ μλ² κ°λ° λ΄λΉ - πΏ Spring Data JPA, QueryDSLμ νμ©ν λ°μ΄ν° μ‘μΈμ€ λ‘μ§ κ°λ° - π μκΆ λ°μ΄ν° λΆμ μκ³ λ¦¬μ¦ μ€κ³ λ° κ΅¬ν - π§ͺ API μ±λ₯ ν μ€νΈ λ° μ΅μ ν μμ μν - π¨ μ½λ 리ν©ν λ§μ ν΅ν μ μ§λ³΄μμ± κ°μ |
νλ‘μ νΈμ λ°μ΄ν°λ² μ΄μ€λ μμ κ°μ ERDλ₯Ό κΈ°λ°μΌλ‘ μ€κ³λμμ΅λλ€.
User
ν μ΄λΈ: μ¬μ©μ μ 보λ₯Ό μ μ₯νλ ν μ΄λΈμ λλ€. μ¬μ©μμ κΈ°λ³Έ μ 보μ ν¨κ» μ νΈνλ μ°½μ μμ΄ν , μμ° λ±μ μ 보λ₯Ό κ΄λ¦¬ν©λλ€.Region
ν μ΄λΈ: μμΈμμ κ° κ΅¬μ μ 보λ₯Ό μ μ₯νλ ν μ΄λΈμ λλ€. ꡬμλ³ μκΆ νν©κ³Ό νΈλ λ μ 보λ₯Ό ν¬ν¨ν©λλ€.Store
ν μ΄λΈ: κ° κ΅¬μ λ΄ μ ν¬ μ 보λ₯Ό μ μ₯νλ ν μ΄λΈμ λλ€. μ ν¬μ μ μ’ , 맀μΆ, κ°μ /νμ μ 보 λ±μ κ΄λ¦¬ν©λλ€.SalesData
ν μ΄λΈ: κ° μ ν¬μ λ§€μΆ λ°μ΄ν°λ₯Ό μ μ₯νλ ν μ΄λΈμ λλ€. μκ³μ΄ λ°μ΄ν°λ‘ ꡬμ±λμ΄ μμΌλ©°, μκΆ λΆμμ νμ©λ©λλ€.Recommendation
ν μ΄λΈ: μ¬μ©μμκ² μΆμ²λ μ°½μ μ₯μ μ 보λ₯Ό μ μ₯νλ ν μ΄λΈμ λλ€. μ¬μ©μμ μ νΈλμ μκΆ λΆμ κ²°κ³Όλ₯Ό λ°νμΌλ‘ μμ±λ©λλ€.
- 2023.03 ~ 2023.06 (15μ£Ό)
- μμΈμ μ΄λ¦°λ°μ΄ν° κ΄μ₯μμ μ 곡νλ μκΆ λ°μ΄ν°λ₯Ό μμ§νμ¬ λ°μ΄ν°λ² μ΄μ€μ μ μ₯ν©λλ€.
- μμ§λ λ°μ΄ν°λ₯Ό λ°νμΌλ‘ κ° κ΅¬μμ μκΆ νν©κ³Ό νΈλ λλ₯Ό λΆμν©λλ€.
- μ μ’ λ³, μκΈ°λ³ λ§€μΆ μΆμ΄λ₯Ό μκ°ννμ¬ μ°¨νΈλ‘ μ¬μ©μμκ² μ 곡ν©λλ€.
- μ¬μ©μλ‘λΆν° μ°½μ μμ΄ν , μμ°, μ νΈ μ‘°κ±΄ λ±μ μ λ ₯λ°μ΅λλ€.
- μ λ ₯λ μ 보λ₯Ό λ°νμΌλ‘ μκΆ λΆμ κ²°κ³Όμ 맀μΉνμ¬ μ΅μ μ μ°½μ μ₯μλ₯Ό μΆμ²ν©λλ€.
- μΆμ² κ²°κ³Όλ μ§λμ νμλλ©°, κ° μΆμ² μ₯μμ μμΈ μ 보λ₯Ό μ 곡ν©λλ€.
- μ¬μ©μλ μΆμ²λ°μ μ°½μ μ₯μμ λν 리뷰λ₯Ό μμ±ν μ μμ΅λλ€.
- 리뷰λ λ€λ₯Έ μ¬μ©μλ€κ³Ό 곡μ λμ΄ μ°½μ μμ¬ κ²°μ μ λμμ μ€λλ€.
- π¬ μμΈμμ λ°©λν μκΆ λ°μ΄ν°λ₯Ό λ°°μΉ νλ‘μΈμ± μλν ꡬμΆμ ν΅ν΄ ν¨κ³Όμ μΌλ‘ λΆμ λ° κ°κ³΅νμ¬ μ°½μ μλ€μκ² μ€μ§μ μΈ μΈμ¬μ΄νΈλ₯Ό μ 곡νμμ΅λλ€.
- π μ¬μ©μ μΉνμ μΈ μΈν°νμ΄μ€μ μ§κ΄μ μΈ μκ°νλ₯Ό ν΅ν΄ μ°½μ μλ€μ΄ μκΆ μ 보λ₯Ό μ½κ² μ΄ν΄νκ³ νμ©ν μ μλλ‘ νμμ΅λλ€.
- π― μ¬μ©μμ μꡬμ¬νμ λ°μνμ¬ κ°μ€μΉ κΈ°λ° λ§μΆ€ν μ°½μ μ₯μ μΆμ²μΌλ‘ μ°½μ μλ€μ λ§μ‘±λλ₯Ό λμμ΅λλ€.
- π Spring Bootμ JPA, QueryDSLμ νμ©νμ¬ μμ μ μ΄κ³ ν¨μ¨μ μΈ RESTful API μλ²λ₯Ό ꡬμΆνμμ΅λλ€.
- JPAλ₯Ό λμ νμ¬ κ°μ²΄-κ΄κ³ 맀ν(ORM)μ ν΅ν΄ λ°μ΄ν°λ² μ΄μ€ μμ μ νΈλ¦¬νκ² μννμμ΅λλ€.
- QueryDSLμ νμ©νμ¬ λμ 쿼리λ₯Ό μμ±νκ³ μ€νν¨μΌλ‘μ¨ λ³΅μ‘ν κ²μ 쑰건μ μ μ°νκ² μ²λ¦¬νμμ΅λλ€.
- ποΈ λλμ λ°μ΄ν°λ₯Ό ν¨κ³Όμ μΌλ‘ κ΄λ¦¬νκΈ° μν΄ λ°μ΄ν°λ² μ΄μ€ μΈλ±μ±κ³Ό 쿼리 μ΅μ νλ₯Ό μ§ννμ¬ κ²μ λ° μ‘°ν μλλ₯Ό κ°μ νμμ΅λλ€.
- β° Spring Batchμ Quartzλ₯Ό νμ©ν΄ μκΆ λ°μ΄ν° μμ§ λ° λΆμ λ°°μΉ μμ μ μλννμ¬ μ΄μ ν¨μ¨μ±μ λμμ΅λλ€.
- β JUnit5λ₯Ό νμ©ν λ¨μ ν μ€νΈλ₯Ό μ§μμ μΌλ‘ μμ±νκ³ μννμ¬ μλΉμ€μ μμ μ±μ ν보νμμ΅λλ€.
- π μ¬μ©μλ€μ νΌλλ°±μ μ κ·Ή μλ ΄νμ¬ μλΉμ€ μ¬μ©μ±κ³Ό νΈμμ±μ μ§μμ μΌλ‘ κ°μ ν΄ λκ° μμ μ λλ€.
- μ) μ¬μ©μμ μ°½μ μμ΄ν λ° μμ° λ± μΆκ° μ 보λ₯Ό κ³ λ €νμ¬ λμ± μ κ΅ν μΆμ² μλΉμ€ μ 곡
- π μκΆ λ°μ΄ν° μΈμλ λ λ€μν λ°μ΄ν°(μ λ μΈκ΅¬ ν΅κ³, μλΉ νΈλ λ λ±)λ₯Ό νμ©νμ¬ λΆμμ μ§μ λμ΄κ³ μ ν©λλ€.
- π μλΉμ€ λͺ¨λν°λ§ λ° λ‘κΉ μ²΄κ³λ₯Ό κ°ννμ¬ μ μ¬μ μΈ λ¬Έμ λ₯Ό μ¬μ μ κ°μ§νκ³ μ μνκ² λμν μ μλλ‘ ν μμ μ λλ€.
- π λ°°μΉ μμ μ μ±λ₯μ ν₯μμν€κΈ° μν΄ λΆμ° μ²λ¦¬ νλ μμν¬(μ: Apache Spark)λ₯Ό λμ νλ λ°©μμ κ²ν νκ³ μμ΅λλ€.
- μ¦μ: μΈλΆ APIλ₯Ό ν΅ν΄ μκΆ λ°μ΄ν°λ₯Ό μμ§νλ λ°°μΉ μμ μ΄ κ°νμ μΌλ‘ μ€ν¨νλ λ¬Έμ κ° λ°μνμμ΅λλ€.
- μμΈ: μΈλΆ APIμ μλ΅ μ§μ° λλ μΌμμ μΈ λ€νΈμν¬ λΆμμ μΌλ‘ μΈν΄ λ°μ΄ν° μμ§ μμ μ΄ μ€ν¨νλ κ²μΌλ‘ νμ λμμ΅λλ€.
- ν΄κ²°: Spring Batchμ μ¬μλ κΈ°λ₯μ νμ©νμ¬ μ€ν¨ν μμ μ μΌμ κ°κ²©μΌλ‘ μλ μ¬μλνλλ‘ μ€μ νμμ΅λλ€. λν, μΈλΆ API νΈμΆ μ μ μ ν νμμμμ μ€μ νκ³ , μμΈ μ²λ¦¬λ₯Ό κ°ννμ¬ μμ μ±μ λμμ΅λλ€.
- μ¦μ: μκΆ λΆμ μμ μ λμ©λ λ°μ΄ν°λ₯Ό μ²λ¦¬ν λ μ±λ₯ μ ν λ° μλ΅ μ§μ°μ΄ λ°μνμμ΅λλ€.
- μμΈ: λ°μ΄ν°λ² μ΄μ€μμ λλμ λ°μ΄ν°λ₯Ό ν λ²μ λ‘λ©νκ³ μ²λ¦¬νλ κ³Όμ μμ μλ° λ©λͺ¨λ¦¬ μ©λμ΄ μ νμ λλ¬ν΄ λ°μνμ΅λλ€.
- ν΄κ²°: νμ΄μ§(Paging) λ°©μμ μ μ©νμ¬ λ°μ΄ν°λ₯Ό μμ λ¨μλ‘ λλμ΄ μ²λ¦¬νμμ΅λλ€. λν, JPAμ μ§μ° λ‘λ©(Lazy Loading) μ λ΅μ μ¬μ©νμ¬ νμν λ°μ΄ν°λ§ λ‘λ©νλλ‘ μ΅μ ννμμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ μ¬μ©λμ μ€μ΄κ³ μ±λ₯μ κ°μ ν μ μμμ΅λλ€.
- μ¦μ: Querydslμ μ¬μ©νμ¬ λμ μΌλ‘ 쿼리λ₯Ό μμ±νλ κ³Όμ μμ μ»΄νμΌ μλ¬κ° λ°μνλ λ¬Έμ κ° μμμ΅λλ€.
- μμΈ: Q-class μμ±μ΄ μ λλ‘ μ΄λ£¨μ΄μ§μ§ μμ Querydslμμ νμλ‘ νλ ν΄λμ€μ λ©μλλ₯Ό μ°Ύμ μ μμκΈ° λλ¬Έμ΄μμ΅λλ€.
- ν΄κ²°: νλ‘μ νΈμ λΉλ μ€μ μ νμΈνκ³ , APT(Annotation Processing Tool) νλ‘μΈμλ₯Ό μ¬λ°λ₯΄κ² μ€μ νμ¬ Q-classκ° μλμΌλ‘ μμ±λλλ‘ νμμ΅λλ€. λν, Querydsl λ²μ κ³Ό νΈνλλ μμ‘΄μ±μ μ¬μ©νκ³ μλμ§ νμΈνκ³ νμν κ²½μ° λ²μ μ λ§μΆμ΄ μ£Όμμ΅λλ€.
μ΄λ¬ν νΈλ¬λΈμν κ²½νμ λ°νμΌλ‘ μλΉμ€μ μμ μ±κ³Ό μ±λ₯μ μ§μμ μΌλ‘ κ°μ ν΄ λκ° μ μμμ΅λλ€. μμΌλ‘λ λͺ¨λν°λ§κ³Ό νΌλλ°±μ ν΅ν΄ λ°μν μ μλ λ¬Έμ λ₯Ό μ¬μ μ λ°©μ§νκ³ , μ°½μ μ€ννμΈλκ° μ°½μ μλ€μκ² λμ± μ μ©ν μλΉμ€λ‘ μ리맀κΉν μ μλλ‘ λ Έλ ₯νκ² μ΅λλ€.