π± JAVA & SPRING/Java (JVM)
Java μ ν리μΌμ΄μ μ΄ μ€νλ λ CPUκ° λ©λͺ¨λ¦¬λ₯Ό μ΄λ»κ² μ¬μ©ν κΉ?
ming412
2023. 8. 28. 15:38
μ€νλ§λΆνΈ μΉ μ ν리μΌμ΄μ μμ ν΄λΌμ΄μΈνΈμ μμ²μ΄ λμ°©νμ λ,
Controllerκ° μ€νλλ κ³Όμ μμ CPUμ λ©λͺ¨λ¦¬ μμμ΄ μ΄λ»κ² μνΈμμ©ν κΉ?
1. μμ² λμ°©
- ν΄λΌμ΄μΈνΈλ‘λΆν° HTTP μμ²μ΄ μΉ μλ²(ex. Tomcat)μ λμ°©νλ©΄, μλ²λ μμ²μ μ²λ¦¬νκΈ° μν μ°λ λλ₯Ό μμ±νκ±°λ μ°λ λ νμμ κ°μ Έμ¨λ€.
- μΉ μ ν리μΌμ΄μ μ λμμ μ¬λ¬ μμ²μ μ²λ¦¬ν΄μΌ ν μ μλ€. λ°λΌμ κ° μμ²μΌ λ³λμ μ°λ λ(thread)λ‘ μ²λ¦¬λλ€.
2. μ€ν μμ νμ©
- μ°λ λκ° μμ±λλ©΄, ν΄λΉ μ°λ λμ μ€ν μμ(=μμ
곡κ°)μ΄ ν λΉλλ€.
- μ€ν μμμ κ° μ°λ λλ§λ€ λ³λλ‘ μ‘΄μ¬νλ€.
- μ°λ λλ μ€ν μμμ μ¬μ©ν΄ λ©μλ νΈμΆ μ 보(λ©μλ μμΉ, μ΄λ¦, λ§€κ°λ³μ νμ , λ°ν νμ , νΈμΆ μμΉ λ±..)μ μ§μ λ³μ λ±μ κ΄λ¦¬νλ€.
- μλ²λ ν΄λΌμ΄μΈνΈλ‘λΆν° μ¨ HTTP μμ²μ νμ±νμ¬ μμ² μ 보, header, body λ±μ μΆμΆνλ€. μΆμΆλ μ 보λ ν΄λΉ μμ²μ μ²λ¦¬ν λ©μλμ λ§€κ°λ³μλ μ§μ λ³μμ μ μ₯λλ€.
3. 컨νΈλ‘€λ¬ λ§€ν λ° νΈμΆ
- μλ²λ μμ²μ URLκ³Ό HTTP λ©μλ(GET, POST, ..)λ₯Ό κΈ°λ°μΌλ‘ μ μ ν 컨νΈλ‘€λ¬ λ©μλλ₯Ό μ°Ύλλ€.
- μ€νλ§μ DispatcherServletμ΄ μμ²μ λ°μΌλ©΄, URL λ§€ν μ 보λ₯Ό ν΅ν΄ μ΄λ€ 컨νΈλ‘€λ¬ λ©μλκ° ν΄λΉ μμ²μ μ²λ¦¬ν΄μΌ νλμ§ κ²°μ λλ€.
- κ²°μ λ 컨νΈλ‘€λ¬ λ©μλλ ν΄λΉ μμ²μ μ²λ¦¬νκΈ° μν λΉμ¦λμ€ λ‘μ§μ ν¬ν¨νκ³ μλ λ°μ΄νΈ μ½λλ₯Ό κ°μ§κ³ μλ€.
- μ΄ λ°μ΄νΈ μ½λλ λ©μλ μμμ μ μ₯λμ΄ μμΌλ©° μ€ν μ CPUλ‘ κ°μ Έμ CPUμμ μ€ννλ€.
4. κ°μ²΄ μμ± λ° ν μμ νμ©
- 컨νΈλ‘€λ¬ λ©μλ μ€ν μ€ νμν κ°μ²΄(DTO, Service κ°μ²΄ νΈμΆ κ²°κ³Ό)λ new ν€μλλ₯Ό μ¬μ©ν΄ λμ μΌλ‘ μμ±λλ€.
- μ΄λ° κ°μ²΄λ€μ ν μμμ μ μ₯λλ€.
5. λ©μλ μμ νμ©
- 컨νΈλ‘€λ¬λ λ€λ₯Έ ν΄λμ€μμ static ν€μλλ‘ μ μΈλ λ³μλ Singleton Scopeμ Beanμ μ κ·Όν΄μΌ νλ κ²½μ° λ©μλ μμμμ ν΄λΉ μ 보λ₯Ό κ°μ Έμ¨λ€.
6. λΉμ¦λμ€ λ‘μ§ μ€ν λ° DB μ κ·Ό
- 컨νΈλ‘€λ¬λ νμν λΉμ¦λμ€ λ‘μ§μ μ²λ¦¬νκΈ° μν΄ Serviceλ Repository λ μ΄μ΄μ λ©μλλ₯Ό νΈμΆν μ μλ€.
- μ΄ λλ μ€ν μμμ λ©μλ νΈμΆ μ 보λ₯Ό κ΄λ¦¬νλλ° μ¬μ©λλ€.
7. μλ΅ μμ±
- λ‘μ§ μ²λ¦¬ ν, 컨νΈλ‘€λ¬λ μλ΅μ μμ±νλ€.
- μ΄ λ μμ±λ μλ΅ κ°μ²΄λ ν μμμ μ μ₯λ μ μλ€.
8. μμ² μ²λ¦¬ μλ£
- μλ΅μ΄ ν΄λΌμ΄μΈνΈμκ² μ μ‘λ ν,
μ¬μ©λ μ€ν μμμ λ©λͺ¨λ¦¬λ ν΄μ λλ©°, λ μ΄μ μ°Έμ‘°λμ§ μλ ν μμμ κ°μ²΄λ€μ GCμ μν΄ νμλ μ μλ€.