-
Notifications
You must be signed in to change notification settings - Fork 0
Description
π οΈ λ¦¬ν©ν λ§μ΄ νμν λΆλΆ
νμμ΄ μΆμ μλμ, μκ° μ μ² λ°μ΄ν°κ° λ§μΌλ©΄ λ°μ΄ν°λ₯Ό κ°μ Έμ€λλ°μ μμ²λ μκ°μ΄ μμλλ κ²μ νμΈνλ€,
(1000건 λμμμ²μ 10λ§κ±΄μμ μμ 600건 μ΄μ νμμμ)
κ·Έλμ μΈλ±μ±μ ν΅ν΄ ν΄κ²°μ μλνλ μ½ 6.5μ΄λ§μ μ λΆ μ±κ³΅νλ€ -> #57
κ·Έλ¬λ, 6.5μ΄λ μ¬μ ν μ μ μ μ₯μμ μ¬μ ν λ리λ€κ³ μκ°λμ΄, κ°μλ₯Ό μ΄ λ μκ°μ μ 보λ₯Ό μΊμ±μ ν΄λ³΄κΈ°λ‘ νλ€.
κ³ν
1. μΊμ± λμ
- μ΄λ¦° κ°μ μ 보 (hash μ΄μ©ν΄ κ°μ idλ₯Ό keyλ‘, κ°μ μ 보λ€μ fieldμ valueλ‘ μ μ₯)
- μκ°μμ΄ μΆμ κ°λ₯ν κ°μ λͺ©λ‘ (key : νμ id, value : μ΄λ¦° κ°μ id λͺ©λ‘ set)
2. κ°μ λ μΆμ κ³Όμ
- μκ°μλ€μ μμ μ΄ μΉμΈλ κ°μ μ€, μΆμ κ°λ₯ν κ°μκ° μλμ§ μΊμ λ¨Όμ νμΈνλ€.
- μλ κ²½μ° μΊμ±λ μ΄λ¦° κ°μ μ 보μμ μ 보λ₯Ό κ°μ Έμ¨λ€.
- μλ κ²½μ° DBμμ μ§μ λ°μ΄ν°λ₯Ό κ°μ Έμ¨λ€.
- μΆμμ΄ κ°λ₯ν μνμμ μλ‘ μκ° μΉμΈλλ νμμ κ²½μ° μΉμΈ μ΄ν λ°λ‘ μΊμ±λλ€.
3. μμ μ 보λ κ°μ νΈλμμ , νμ μ 보λ λΉλκΈ° μμ νΈλμμ (+Eventλ₯Ό ν΅ν ꡬν)
μ€κ³ κ³Όμ μμ μ¬λ¬κ°μ§ λ°©λ²μ κ³ λ―Όνλλ°, κ²°κ΅ κ΅¬νμ€ Eventλ₯Ό λ°νν΄μ μΊμ±μ λ°λ‘ μ²λ¦¬νκΈ°λ‘ κ²°μ νλ€. κ·Έ μ΄μ λ λ€μκ³Ό κ°λ€
- κ°μ¬κ° μμ
μ μ΄ λ κΈ°λν νμμ μλ΅μ "μμ
μ μ¬λ νμ" μ체μ λν κ²μ΄μ¬νλ€.
"μ΄λ¦° μμ ", "μκ°μ"μ μ μ₯νλ μμ μ μμ μ μ¬λ νμλ₯Ό μμ²νλ κ°μ¬ μͺ½μμ κ΄μ¬μ¬κ° μλλ€. - λ°λΌμ, "μμ μ μ¬λ νμ"μλ λ°λ‘ μ²λ¦¬νκ³ , μμ μ΄ μ΄λ¦¬λ©΄ λΉ λ₯΄κ² κ·Έμ λν μλ΅μ λ°νν΄ μ£Όκ³ μΆλ€.
- μμ λ³κ°μ νΈλμμ μ μ΄μ©ν΄ μΊμ± μμ²΄κ° μ€ν¨νλλΌλ μν₯μ λ°μ§ μμμΌλ©΄ μ’κ² λ€.
- νμ§λ§, "μμ μ μ¬λ νμ"μ νΈλμμ μ΄ μ€ν¨νλ€λ©΄ μΊμ±μ μ§νλμ§ μμμΌλ©΄ μ’κ² λ€.
μ΄ μ‘°κ±΄μ λͺ¨λ λ§μ‘±μν€λ κ°λ¨ν λ°©λ²μ΄ Eventλ₯Ό μ¬μ©νλ κ²μ΄λΌκ³ μκ°λμλ€.
μ²μμ Eventλ₯Ό μ¬μ©νμ§ μκ³ λ¨μ μλΉμ€λ‘ ꡬννκ³ , @Async
μ @Transactional(propagation = NESTED
λ‘ ν΄κ²°ν μ μμ μ€ μμλ€.
νμ§λ§, ν
μ€νΈ ν΄λ³Έ κ²°κ³Ό μμκ³Όλ λ€λ₯΄κ² λΆλͺ¨ νΈλμμ
μ΄ μ€ν¨ν΄λ μμ νΈλμμ
μ΄ μ€ν¨νμ§ μμλ€.
μ΄λ²€νΈλ₯Ό μ¬μ©νλ€λ©΄ TransactionalListnerμ Phase μ€μ μ After CommitμΌλ‘ λλ©΄μ νΈλ¦¬νκ² μ»€λ°μμλ§ μ μ₯λλ©΄μλ λΉλκΈ°μ μΌλ‘ μλνκ² λ§λ€ μ μλ€.
μ’ ν©νλ©΄ λ΄ λͺ©νλ μλμ κ°μ΄ μ΄λ£° μ μλ€.
@Async
λ₯Ό ν΅ν΄ μμ μ μ¬λ νμμ λν μλ΅μ λ°λ‘ λλ €μ£Όκ³ , μΊμ±μ λΉλκΈ°μ μΌλ‘ μ²λ¦¬- Transactionμ Require New μ΅μ μ ν΅ν΄ μΊμ±μ μν μμ λ€λ₯Έ νΈλμμ μ μμ±
- Phase μ€μ μ ν΅ν΄, "μμ μ μ¬λ νμ"κ° μ±κ³΅νμ λλ§ μΊμ±νλλ‘ κ΅¬ν
4. μ μν μ
- Max Memoryλ 5MBλ‘ μ€μ νλ€ -> Memoryλ₯Ό λ무 λ§μ΄ μ¬μ©νλ κ²μ λ§κΈ° μν¨μΌλ‘ λΉμ¦λμ€λ₯Ό μκ°νλ©΄ 5MBλ λΏμ μ μμ λ§νΌ ν¬λ€. νμ λ°μ΄ν°λ₯Ό 보μμ μΌλ‘ setμΌλ‘ μ μ₯νλ κ²½μ° μ½ 200 μ΄λ°μ λ°μ΄νΈκ° νμνλ€.
1λ§λͺ μ νμμ΄ μλ€κ³ νμ λ, 2MBκ° μ΅λμ΄λ€. κ·Έλ¦¬κ³ μ΄ 1λ§λͺ μ νμμ΄ λμμ κ°μ νλ€κ³ ν΄λ, μ΄λ©μΌ λ°μ΄ν°κ° 100 μ΄λ°λμ΄λ―λ‘, 2MBμ λΏκΈ° μ΄λ ΅λ€.
κ²°λ‘ μ μΌλ‘ 5MBμ 곡κ°μ΄ μλ€λ©΄, 1λ§λͺ μ νμμ΄ λμμ κ°μ νλ©΄μ, μ¦μ μμ μ 보λ₯Ό μΊμ±ν μ μλ€.
νμ¬ 1000λͺ λμ μΆμμ΄ λͺ©νμΈ μμ μμ μμ£Ό μΆ©λΆν κ°μ΄λ€. (νμ¬ EC2 μ€νμ 1GiB) eviction μ μ± μ volitle ttl
: μ±μμ λ€μν μ’ λ₯μ μΊμ±μ νμ§λ§, κ°μ₯ ν° μ©λμ μ°¨μ§νλ κ²μ μ΄ μκ°μ μ 보μ΄λ€. λ¬Έμ λ μκ°μ μ 보λ μ¬μ©λμ§ μμ λ°μ΄ν° μΌμλ‘ μ€νλ € μ¬μ© νλ₯ μ΄ λλ€λ μ μ΄λ€ μ΄λ κΈ°μ‘΄μ μΊμ± μ μ± λ€κ³Ό λ°λμ΄λ€
μλνλ©΄ νλ² μΆμν νμμ μ€νλ € λ μΆμν μΌμ΄ μκ³ , μΆμνμ§ μμ νμμ΄ μλ‘ μΆμν κ°λ₯μ±μ΄ λκΈ° λλ¬Έμ΄λ€. κ·Έλμ λ λμ€μ μ΄ μν©μ 100% λ§λ μ μ ν μ μ± μ΄ μλ€. (보ν΅μ μμ£Ό μ°μ΄λ λ°μ΄ν°λ₯Ό λ μ΄λ € λλλ€)
κ·Έλλ§ μ μ ν΄ λ³΄μ΄λ κ²μ΄ volitle-ttlμ΄λ€. (μ μ± μ΄ μμ μλ κ²½μ°μ μλ‘μ΄ μ μ₯μ΄ μ λλ€.) κ·Έλμ volitle-ttlμ μ ννλ€.
λ¬Έμ λ μ±μμ μΊμ±νλ λ€μν λ°μ΄ν° μ€μ μΊμ±λ λ°μ΄ν°κ° μκ°μ λ°μ΄ν°κ° μ μΌ μ¬λΌμ Έλ λ¬Έμ κ° μλ λ°μ΄ν°λ κ²μ΄κ³ , λ€λ₯Έ λ°μ΄ν°λ€μ μ¬λΌμ§λ κ²½μ° λ¬Έμ κ° λλ€.
μ΄μ κΉμ§ μ¬λΌμ Έμ μ λλ λ°μ΄ν°λ€μ μ ν μκ°μ΄ μ€μ λΉμ¦λμ€μ μΌλ‘λ μ‘΄μ¬νλ λ°μ΄ν°λ€μ΄μ¬μ λΉμ¦λμ€μ μΈ μ ν μκ°κ³Ό redis exprire timeμ λκ°μ΄ λ§μ·λ€. μ΄μ , μ΄ λ°μ΄ν°λ€μ exprire timeμ 2λ°°λ‘ λλ¦¬κ³ , λ°λ‘ μ ν¨ μκ°μ μ μ₯νλ λ°©μμ κ³ λ €ν΄λ΄€λ€.
κ·Έλ¬λκΉ μνμ λλΉν΄ μ μ₯ μ©λμ λλ¦¬κ² λλ κ²μ΄λ€.
μ΄ λ°©λ²μ κΈ°μ‘΄μ μΌλ°μ μΈ μΊμ±κ³Ό κ°μ μν©μμ λΉμΌ λ©λͺ¨λ¦¬ μμμ λ μλͺ¨νλ κ²μμΌλ‘ λ¬Έμ κ° λκ² μ§λ§, μ°λ¦¬ μλΉμ€μμ μ΄λ° λ°©μμΌλ‘ μΆκ° λ©λͺ¨λ¦¬λ₯Ό μ¬μ©ν΄ μ μ₯νλ μλ£κ° μ μμΌλ‘ κ³ λ €ν λ§ν΄ 보μΈλ€. λ§μ½ μ©λμ΄ κ·Έλ¦¬ λλνμ§ μμλλΌλ©΄, μ ν¨μκ°μ λν μ€μ΄λ λ°©λ²μΌλ‘ λ°κΏ¨μ κ²μ΄λ€. -> λλ€λ₯Έ μ΄μκ° νμνλ€- κ°μλ₯Ό OPEN μ€μ μλ‘μ΄ νμμ΄ μΉμΈλ μ μλ€ (μΆμ κ°λ₯ν νμμ΄ λμ μΌλ‘ μ겨λ μ μμ)
-> κ°μ¬κ° νμμ μΉμΈνμ λ, κ°μκ° μ΄λ―Έ μ΄λ €μλ€λ©΄ λ λμ€μ μΊμ±νλ€. - redis transaction support : redis templateμμ κ΄λ ¨ μ€μ μ trueλ‘ μ€μ ν΄μΌ /@transactional μ λΆμΈ λ©μλμμ RedisTemplateλ₯Ό μ¬μ©ν λ, μ°λ¦¬κ° νμμ DBλ₯Ό μ¬μ©ν λμ κ°μ΄ λμνλ€. (νλμ νΈλμμ μΌλ‘ λ¬Άμ΄κ³ , λ‘€λ°±μ λ‘€λ°± λ±)
리ν©ν λ§ μμ λΈλμΉ
feature/student-caching
β Refactoring TODO
- λ λμ€ μ€μ μ μ©
- Openλ κ°μ μ λ³΄μΈ OpenLecture ꡬν
- μΆμ λ²νΈλ₯Ό μ μ₯νλ AttendanceNumber Repository μ κ±°
- μκ°μ μ 보λ₯Ό μ μ₯νλ LectureStudentRepository ꡬν
- μμ μ μ΄ λ, OpenLecture μ 보μ μκ°μ μ 보λ₯Ό μ μ₯νλ κΈ°λ₯ ꡬν
- μΆμ κ°λ₯ν κ°μλ₯Ό κ°μ Έμ€λ κ³Όμ μ μΊμ λ°μ΄ν°λ₯Ό λ¨Όμ νμΈ νλ κ³Όμ μΆκ°
- νμμ΄ μΆμμ μλν λλ μΊμ±μ λ¨Όμ νμΈνλ κ³Όμ μΆκ°
- νμμ μΉμΈν΄μ€ λ, μ΄λ €μλ κ²½μ° μΊμ±νλ κ³Όμ μΆκ°
- μ κ³Όμ ν μ€νΈ μΆκ°
- Eventλ₯Ό λ°ννμ¬ μ²λ¦¬νλ λ°©μμΌλ‘ λ³κ²½