λͺ©λ‘μ 체 κΈ (124)
DevLog πΆ
π± λ€μ΄κ°κΈ° μ λΈλ‘κ·Έλ₯Ό μμ£Ό μ¨μΌκ² λ€κ³ μκ°νλλ° λ λ§μ§λ§ κΈμ μ΄ μ§ 3κ°μμ΄ μ§λλ²λ Έλ€. κ·Έλμ, μ¬λ΄μμ κ°λ°νλ μ€μ λ°μνλ μ΄μκ° μκ°λμ κ°λ¨νκ² μ μ΄λ³΄κ³ μ νλ€. μ¬μ€ ν΄κ²° λ°©λ²μ κ°λ¨νλ λ¬Έμ μλλ°, μ΄λ€ μμΌλ‘ λ¬Έμ λ₯Ό ν΄κ²°ν΄λκ°λμ§ μ μ΄λλ©΄ μ’μ κ² κ°μμ μμ±ν΄λ³΄κ³ μ νλ€. νμ¬ μ¬λ΄ μμ€ν μμλ μΉ΄νμΉ΄λ₯Ό ν΅ν΄ λΉλκΈ°λ‘ν΅μ¬ λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νλ λΆλΆμ΄ λ§μλ°, μ°λ¦¬ μλΉμ€μ ν΅μ¬ κΈ°λ₯μ΄λΌκ³ λ³Ό μ μμ λ§νΌ μ€μν κΈ°λ₯μ΄λ€ 보λκΉ μμ νΌμ²λ₯Ό κ°λ°νλλΌλ κΌ ν μ€νΈλ₯Ό ν΄μ£Όκ³ λμ΄κ°λ λΆλΆλ€μ΄ μλ€. μ΄λ, 보ν΅μ λ³ΈμΈμ λ‘컬 νκ²½μμ λμμ ν μ€νΈλ₯Ό νλ κ²½μ°λ λ§μ§λ§, λ κ°μ κ²½μ° λ‘컬μμ μ²λ¦¬λλ λλ¦° μλ & μ€μ μ± νκ²½μμ μ΄λ€ μμΌλ‘ λμκ°λμ§ (λͺ¨λ νλ‘μ°κ° μ μ..
π± λ€μ΄κ°κΈ° μ ν΅ν© ν μ€νΈλ₯Ό νλ€ λ³΄λ©΄, μ€μ λΉ μ€μ μΌλΆλ§ stubbingμ νκ³ μΆμ μν©μ΄ μκΈ΄λ€.μλ₯Ό λ€μ΄, μΈλΆ APIλ₯Ό ν΅μ νκ±°λ μΈλΆ μμ€ν μ νμ©νκ² λλ©΄ ν μ€νΈμμ κ·Έλλ‘ νμ©νκΈ° μ΄λ €μ΄λ°, ν΄λΉ λΆλΆμ λν΄μλ§ μ°λ¦¬κ° μνλ μλ리μ€λ₯Ό μ 곡νμ¬ μ°λ¦¬ μ ν리μΌμ΄μ μ΄ μ λμνλμ§ νμΈνκ³ μΆμ μ μλ€. νμ§λ§, λ³΄ν΅ Spring Contextμμλ λμΌν μ΄λ¦μ κ°μ§ λΉμ κ·Έλλ‘ λ±λ‘νκ² λλ©΄ μ€λ₯κ° λ°μνκΈ° λλ¬Έμ, λͺ κ°μ§ νΉλ³ν μ‘°μΉλ₯Ό ν΄μ£Όμ΄μΌ νλλ° ν λ² μ΄ν΄λ³΄μ. βοΈ ν μ€νΈ μλλ¦¬μ€ - μ¬μ©μκ° μνμ ꡬ맀νκ² λλ©΄, μΈλΆ APIλ₯Ό νΈμΆνμ¬ μ¬κ³ κ° μ‘΄μ¬νλμ§ νμΈνλ€. - λ§μ½ μ¬κ³ κ° μ‘΄μ¬νλ©΄ μΈλΆ APIλ ‘SUCCESS’λΌλ μλ΅μ, μ¬κ³ κ° μ‘΄μ¬νμ§ μμΌλ©΄ ‘FA..
π± λ€μ΄κ°κΈ° μ νμ¬ λ€μ΄κ°κ³ λΈλ‘κ·Έκ° λ무 λΈν΄μ§ κ² κ°μμ, μ΄μ μ μ°λ €λ€κ° λͺ» μ΄ κΈμ μμ±νκ³ μ νλ€ π₯Ή (무νμ μμ μ μ₯...) μ¬λ΄μμ Replicationμ νμ©νκ³ μλ€λ 건 μκ³ μλλ°, ꡬ체μ μΌλ‘ μ΄λ€ μμΌλ‘ λμνλμ§λ μ λλ‘ μ΄ν΄νμ§ λͺ»νκ³ μμλ κ² κ°μμ κ°λ¨νκ² MySQLμ νμ©νμ¬ Replicationμ΄ μ΄λ€ μμΌλ‘ λμνλμ§ κ΅¬μΆν΄λ³΄μλ€. ꡬ체μ μΈ λΆλΆμ λ 곡λΆνλ©΄ μ’κ² μ§λ§, νμ΅ μ©λλ‘ μμ±νλ κΈ! π± 볡μ λ 무μμΌκΉ?볡μ λ κΈ°λ³Έμ μΌλ‘ master λ Έλμμ λ°μ΄ν°κ° λ³κ²½λμμ λ slave λ Έλμλ λ³κ²½λ λ΄μ©μ μ μ©μν€λ κ²μ μλ―Ένλ©°, MySQLμμλ κΈ°λ³Έμ μΌλ‘ λΉλκΈ° 볡μ λ°©μμ νμ©νμ¬ λ μ¬μ΄μ λ°μ΄ν° μ ν©μ±μ λ§μΆκ³ μλ€.μ¬κΈ°μ λ§νλ λΉλκΈ° 볡μ ..
π± λ€μ΄κ°κΈ° μ λλ νμμ λ§μ°μ€λ μ¬μ©νμ§ μμ§λ§, λ§₯λΆ ν°μΉν¨λλ₯Ό μ λ§ λ§μ΄ μ¬μ©νλ νΈμ΄μμ΄μ κ°λ°ν λ λ¨μΆν€λ₯Όλ§μ΄ μ¬μ©νμ§ μλ νΈμ΄μλ€. κ·Έλ¬λ€ 보λ μλμΌλ‘ κ°λ°ν λ λ―Έλ¬νκ² μλ μ°¨μ΄κ° λ¬μλλ°, μ΄λ²μ λ¨μΆν€λ 곡λΆν κ²Έ, 리ν©ν°λ§ μ μ΄λ»κ² νλ©΄ Intellij λ₯Ό μ΅λν νμ©ν μ μλμ§ μ€ν°λ νλ μκ°μ κ°μ‘λ€. (κ°λλκ°λ°μλ λλΆμ λ§μ΄ λ°°μΈ μ μλ μκ°μ΄μλ€ γ _γ ) μ΄λ² ν¬μ€ν μμ μ¬μ©λ μν μ½λλ λ°±λͺ μ λμ κΉνλΈλ₯Ό κ°λ©΄ νμΈν μ μλλ°, λλ μ¬λ΄μμ μ½νλ¦°μ μ¬μ©νκ³ μλ€ λ³΄λκΉ ν΄λΉ μ½λλ₯Ό μ½νλ¦° + Kotestλ‘ λ³ννμ¬ μ°μ΅μ ν΄λ³΄μλ€. μ΄λ€ μμΌλ‘ 리ν©ν°λ§μ νλμ§λ μλμ λ νμ§ν 리μ 컀λ°λ³λ‘ λνλ΄μλ€. GitHub - Cl8D/kotlin-exp..
βοΈ κ°μ²΄ μ§λ νλ‘κ·Έλλ¨Έμ κ°μ₯ ν° μμ λ 'λ³ννλ μꡬμ¬νμ μΌλ§λ λ μ λμν μ μλκ°?' μ΄λ€. μλ₯Ό λ€μ΄λ³΄μ. κ³ μμ΄ μ€λ΅λ°μ μλ‘μ΄ μ μ μ °νλ₯μ΄ λ€μ΄μλ€. μ μ μ °νλ₯μ μμ§ λ©λ΄ μμ§μ λ―Έμν΄μ λ μνΌλ₯Ό λ€ μΈμ°μ§ λͺ»νλ€. μ΄λ μλλ₯μ΄ μλ°λ₯μκ² λΈκΈ°λΌλΌλ₯Ό μ£Όλ¬Ένκ³ , μλ°λ₯μ μ μ μ °νλ₯μκ² λΈκΈ°λΌλΌλ₯Ό λ§λ€λΌκ³ μ§μνλ€. νμ§λ§ μ μ μ °νλ₯μ λΈκΈ°λΌλΌ λ μνΌλ₯Ό λͺ°λΌμ μ΄λ»κ² ν΄μΌ ν μ§ κ³ λ―Ό μ€μΈ μν©μ΄λΌλ©΄, μ΄λ€ νμλ₯Ό ν μ μμκΉ? 1. μμ μ °νλ₯μκ² λΈκΈ°λΌλΌ λ§λλ λ°©λ² λ¬Όμ΄λ³΄κΈ° 2. λ μνΌ λΆμ μ°Έκ³ νμ¬ λΈκΈ°λΌλΌ λ§λ€κΈ° λ¨Όμ , 첫 λ²μ§Έ λ°©λ²μ κ²½μ°, λ§μ½ λΈκΈ°λΌλΌμ λ μνΌλ₯Ό μ»μ μλ μμ§λ§, λ³ννλ μꡬμ¬νμ λμν μ μλ€. λ§μ½ μλμ΄ μΆκ°μ μΌλ‘ ‘μ, κ·Όλ° λΈκΈ°λΌλΌ..
μλ μ μ± μ½μΌλ©΄μ μμ±νλ κ±΄λ° μ€λλ§μ κΈ μ¬λ¦΄ κ²Έ... μλ¦¬μ¦ λ§λ¬΄λ¦¬λ νλ©΄ μ’μ κ² κ°μμ μ¬λ¦¬λ €κ³ νλ€ :D βοΈ μμ¨μ μΌλ‘ νλνλ κ°μ²΄ μμ μ±ν°μμ λ κ°μ‘°νλ κ²μ²λΌ, κ°μ²΄λ μμ¨μ μΌλ‘ νλμ΄ κ°λ₯νλ€. μ΄λ, κ°μ²΄κ° νλνλ μ μΌν μ΄μ λ, λ€λ₯Έ κ°μ²΄λ‘λΆν° μμ²μ μμ νκΈ° λλ¬Έμ΄λ€. μ¬κΈ°μ μμ²μ μ²λ¦¬νκΈ° μν΄ κ°μ²΄κ° μννλ νλμ ‘μ± μ’μ΄λΌκ³ νλ©°, μμ¨μ μΈ κ°μ²΄λ μ€μ€λ‘μ μμ§μ νλ¨μ λ°λΌμ κ°μ 맑μ μ± μμ μννλ κ°μ²΄λ₯Ό μλ―Ένλ€. κ°μ²΄κ° μμ μ μμ§μ λ°λΌμ μ± μμ μμ¨μ μΌλ‘ μννλ€λ κ² λ¬΄μμ μλ―Ένλ κ±ΈκΉ? μ½κ² μκ°νκΈ° μν΄ λ€μ κ³ μμ΄ μ€λ΅λ° μμ λ₯Ό κΊΌλ΄λ³΄μ. κ³ μμ΄ μ€λ΅λ°μ μΈκΈ°κ° νλ°νλ©΄μ μμΉ¨λΆν° λ§μ μλ£ μ μ‘° μμ²μ΄ λ€μ΄μλ€. μ΄λ μλ°λ₯μ μ °νλ₯μκ² ‘..
π± λ€μ΄κ°κΈ° μ λ무 μ€λλ§μ μμ±νλ λΈλ‘κ·Έ κΈ...! μ΅κ·Όμ μ¬λ΄μμ λ§€μ° λ§μ΄ μ°μ΄λ λλ©μΈμ λν΄μ 리ν©ν°λ§μ μ§ννμλλ°, κ±°κΈ°μ λ§λ¬λ μ΄μλ€κ³Ό κ°λ¨ν μκ° κΈ°λ‘μ λΈλ‘κ·Έμ λ¨κΈ°λ©΄ μ’μ κ² κ°μμ μμ±νκ³ μ νλ€. μ΄λ―Έ ν λ΄μμ 곡μ λ νμκ³ , λκΈ°λ€μκ²λ 곡μ ν λ΄μ©μ΄κΈ°λ νκ³ , μ¬μ€ λ³κ±° μλ κ±°λΌ κ·Έλ₯ κ°λ¨νκ²λ§ μ 리ν μμ μ΄λ€. π± λ¬Έμ μν©λ¦¬ν©ν°λ§μ μ§ννκ³ μ ν λλ©μΈμ μ°λ¦¬ νμμ λ§€μ° μ€μν λΉμ¦λμ€ λλ©μΈ κ°μ²΄ μ€ νλμκ³ , μ΄λ―Έ μμ μ μΌλ‘ μ μ΄μλκ³ μμ§λ§ κ΅μ₯ν μλ λΆν° λ κ±°μλ‘ λ΄λ €μ€κ³ μλ κ°μ²΄μκΈ° λλ¬Έμ μ κ· μ μ¬μκ° λ³΄κΈ°μ μ’μ μ½λκ° μλλΌλ μκ°μ΄ λ€μλ€. μ¬λ΄ λλ©μΈμΈ λ§νΌ κ·Έλλ‘ κ°μ Έμ¬ μλ μμ§λ§, λΉμ·ν λλμΌλ‘ μλμ κ°μ΄ μΈν μ μ§νν΄λ³΄μλ€.CREAT..
π± λ€μ΄κ°κΈ° μ μ§λ ν¬μ€ν μμλ λ λμ€λ₯Ό νμ©ν΄ λΆμ°λ½μ ꡬννλ λ€μν λ°©λ²λ€μ μ΄ν΄λ³΄μλ€. μ΄λ² ν¬μ€ν μμλ μ‘°κΈ λ μλ€λ₯Έ λ°©λ²μΌλ‘ λ λμ€λ₯Ό νμ©νμ¬ λΆμ°λ½μ ꡬνν΄λ³΄κ³ μ νλ€. β Case 4 - Lua Script νμ©νκΈ° Redis 2.6 λ²μ μμ 루μ μ€ν¬λ¦½νΈ μμ§μ΄ μΆκ°λλ©΄μ, λ λμ€ μλ²μμ 루μ μ€ν¬λ¦½νΈλ₯Ό μ€νν μ μκ² λμλ€. λ λμ€ λ΄λΆμμλ EVAL (νΉμ EVALSHA)μ΄λΌλ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ μ¬μ©ν μ μλ€. EVAL script numkeys [key [key ...]] [arg [arg ...]] λ§μ½ μ€ν¬λ¦½νΈκ° κΈΈμ΄μ§κ² λλ€λ©΄ μ€ν¬λ¦½νΈ μ 체λ₯Ό EVALλ‘ μ μ‘νκΈ°μλ λ€νΈμν¬ λμμ λΉμ©μ΄ λ°μν μ μκΈ° λλ¬Έμ, λ λμ€μμλ SCRIPT LOAD λͺ λ Ήμ΄λ₯Ό ν΅ν΄ μ€ν¬λ¦½νΈλ₯Ό ..
π± λ€μ΄κ°κΈ° μ μ‘°κΈ μ€λλκΈ΄ νμ§λ§ μ΄μ ν¬μ€ν μμ λ€μλλ½μ ν΅ν λΆμ°λ½ ꡬνμ μ§ννμλ€. λ§μ§λ§ ν¬μ€ν μμ λ λμ€λ₯Ό νμ©νλ€κ³ λ§νμλλ°, κ³μ 미루λ€κ° μ΄λ²μ λ λμ€ κ³΅λΆλ₯Ό νλ©΄μ κ°λ¨νκ² κ΅¬νμ μ§νν΄λ³΄μλ€. λΆμ°λ½μ λν κ°λ μ μ΄μ ν¬μ€ν μμ λ€λ£¨μκΈ° λλ¬Έμ, λ λμ€λ₯Ό μ΄μ©ν΄μ λ°λ‘ λΆμ°λ½μ ꡬνν΄λ³΄μ. λν, μ§λ ν¬μ€ν μμλ Jmeterλ₯Ό νμ©νμμ§λ§, μ΄λ² ν¬μ€ν μμλ E2E ν μ€νΈλ₯Ό ν΅ν΄ μ§μ ꡬνμ ν΄λ³΄κ³ μ νλ€. π± ꡬν μν© μ λ§ κ°λ¨νκ² μμ‘μ μλ―Ένλ 'Balance'λΌλ κ°μ, 2κ°μ μμ²μ΄ λμμ λ€μ΄μμ λ λ λμ€λ₯Ό ν΅ν λΆμ°λ½μ ꡬννμ¬ μ μ΄ν΄λ³΄μ. μμ κ²°κ³Όμμ μ΅μ μ μν©μ΄λΌλ©΄ Request 1, 2λ² λͺ¨λ 80μ΄λΌλ κ°μ λ°ννμ¬ μ μμ μΌλ‘ μμ‘μ΄ κ°±μ λμ§ μμ..
π± λ€μ΄κ°κΈ° μ μλ μ μΌλ κΈμΈλ°, μμ¦ λΈλ‘κ·Έλ₯Ό λ무 μ μ΄ κ² κ°μμ μ€λλ§μ μ¬λ¦¬λ κΈ πΆ νΌμ 곡λΆν κ²Έ μμ±ν κΈμ΄μμ΄μ λ€μ μ€λͺ μ΄ λΆμ‘±ν©λλ€...! π± μν°ν° μκ° @Entity @EntityListeners(AuditingEntityListener.class) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false) @CreatedDate private LocalDateTime createdAt; @LastModifiedDate private LocalDateTime updatedAt; User ν΄λμ€λ μ¬μ©μμ λν μν°ν°μ΄λ©°, id..