πΎ [CS] Java λ°±μλ μ ν리μΌμ΄μ μμ μλ²λ₯Ό μ€νμμΌ APIλ₯Ό λμμν€κΈ°κΉμ§ νλμ¨μ΄μ μΌλ‘ μΌμ΄λλ μΌ.
Java λ°±μλ μ ν리μΌμ΄μ
μμ μλ²λ₯Ό μ€νμν€κ³ APIκ° λμνκΈ°κΉμ§λ μννΈμ¨μ΄μ νλμ¨μ΄κ° κΈ΄λ°νκ² μνΈμμ©ν©λλ€.
νλμ¨μ΄ μΈ‘λ©΄μμλ CPU, λ©λͺ¨λ¦¬(RAM), λμ€ν¬, λ€νΈμν¬ μΉ΄λ(NIC)μ κ°μ μ»΄ν¨ν° λΆνλ€μ΄ μ€μν μν μ νλ©°, μ΄λ¬ν λΆνλ€μ΄ μ΄λ»κ² μλνλμ§μ λν΄ μ€λͺ
νκ² μ΅λλ€.
πββοΈ μλ²λ₯Ό μ€νμμΌ APIλ₯Ό λμμν€κΈ°κΉμ§ μΌμ΄λλ μΌ - Spring
1οΈβ£ μ ν리μΌμ΄μ μ€ν λ° μλ² μμ.
1.1 μ ν리μΌμ΄μ λ°μ΄λ리 λ‘λ©.
-
λμ€ν¬(HDD/SDD)
- λ¨Όμ , Java μ ν리μΌμ΄μ
μ μ€ννλ©΄ λμ€ν¬(HDDλ SDD)μ μ μ₯λ μ ν리μΌμ΄μ
μ½λμ λΌμ΄λΈλ¬λ¦¬(JAR νμΌ λ±)κ° λμ€ν¬μμ RAMμΌλ‘ λ‘λλ©λλ€.
- λμ€ν¬ 컨νΈλ‘€λ¬κ° λμ€ν¬μ νΉμ μΉν°μ μ μ₯λ νλ‘κ·Έλ¨ νμΌμ μ°Ύμμ μ½μ΄μ΅λλ€.
- λ©λͺ¨λ¦¬ 컨νΈλ‘€λ¬λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό RAMμΌλ‘ 볡μ¬ν©λλ€.
- λ¨Όμ , Java μ ν리μΌμ΄μ
μ μ€ννλ©΄ λμ€ν¬(HDDλ SDD)μ μ μ₯λ μ ν리μΌμ΄μ
μ½λμ λΌμ΄λΈλ¬λ¦¬(JAR νμΌ λ±)κ° λμ€ν¬μμ RAMμΌλ‘ λ‘λλ©λλ€.
1.2 JVM μμ.
- Java μ ν리μΌμ΄μ
μ Java Virtual Machine(JVM) μμ μ€νλλ―λ‘, JVM λ°μ΄λ리λ λμ€ν¬μμ RAMμΌλ‘ λ‘λλκ³ , JVMμ΄ μμλ©λλ€.
- JVMμ μ ν리μΌμ΄μ μ λ°μ΄νΈμ½λ(.class νμΌ) λ₯Ό μ½μ΄λ€μ¬ μ€νν μ€λΉλ₯Ό ν©λλ€.
1.3 CPUμ λ©λͺ¨λ¦¬μ μν .
- CPUλ μ΄μ λ©λͺ¨λ¦¬μ μ μ¬λ JVMκ³Ό μ ν리μΌμ΄μ
μ½λλ₯Ό μ²λ¦¬νκΈ° μμν©λλ€.
- JVMμ΄ λ°μ΄νΈμ½λλ₯Ό κΈ°κ³μ΄λ‘ λ³ν(JIT μ»΄νμΌλ§) νμ¬ CPUκ° μ΄ν΄ν μ μλ λͺ λ ΉμΌλ‘ μ νλ©λλ€.
- νλ‘μΈμ€μ μ€λ λκ° μμ±λκ³ , CPUλ μ€λ λλ₯Ό ν΅ν΄ μ ν리μΌμ΄μ μ½λλ₯Ό μμ°¨μ μΌλ‘ μ€νν©λλ€.
- μ΄λ, CPUμ λ μ§μ€ν°μ μΊμ λ©λͺ¨λ¦¬κ° μμ£Ό μ¬μ©λλ λ°μ΄ν°λ₯Ό 보κ΄νκ³ , RAMμμ μ§μ κ°μ Έμ€λ λ°μ΄ν°λ λ²μ€λ₯Ό ν΅ν΄ μ λ¬λ©λλ€.
2οΈβ£ μλ² λλ μΉ μλ² μ€ν (μ: Tomcat)
2.1 λ€νΈμν¬ μ΄κΈ°ν.
- μλ² μ ν리μΌμ΄μ
μ΄ μμλλ©΄, λ€νΈμν¬ μΈν°νμ΄μ€ μΉ΄λ(NIC) κ° λ€νΈμν¬ μ°κ²°μ μ€μ νκ³ μ§μ λ ν¬νΈ(μ: 8080)λ₯Ό ν΅ν΄ μΈλΆμμ λ€μ΄μ€λ HTTP μμ²μ λ°μ μ μλλ‘ μ€λΉν©λλ€.
- μλ²λ IP μ£Όμμ ν¬νΈ λ²νΈλ₯Ό λ°μΈλ©νκ³ , λ€νΈμν¬ ν΅μ μ μν΄ μμΌ(Socket) μ μ½λλ€.
- μ΄λ λ€νΈμν¬ μΈν°νμ΄μ€ μΉ΄λμ κ΄λ ¨λ νλμ¨μ΄ λ 벨μμ μ΄λ£¨μ΄μ§λλ€.
- μλ²λ IP μ£Όμμ ν¬νΈ λ²νΈλ₯Ό λ°μΈλ©νκ³ , λ€νΈμν¬ ν΅μ μ μν΄ μμΌ(Socket) μ μ½λλ€.
2.2 λ©ν°μ€λ λ μ²λ¦¬.
- μλ² μ ν리μΌμ΄μ
μ λ©ν°μ€λ λ©μ ν΅ν΄ λμ μμ²μ μ²λ¦¬ν μ μλλ‘ ν©λλ€.
- CPUμ μ½μ΄μ μ€λ λκ° μμ±λμ΄ μ¬λ¬ μ¬μ©μμ μμ²μ λμμ μ²λ¦¬ν©λλ€.
- λ©ν°μ½μ΄ CPUλ μ¬λ¬ μμ²μ λ³λ ¬λ‘ μ²λ¦¬νμ¬ μ±λ₯μ ν₯μμν΅λλ€.
- CPUλ 컨ν μ€νΈ μ€μμΉμ ν΅ν΄ μ€λ λκ°μ μμ μ νμ κ΄λ¦¬νλ©°, κ° μμ²μ λν΄ λ©λͺ¨λ¦¬μ CPU μκ°μ ν λΉν©λλ€.
- CPUμ μ½μ΄μ μ€λ λκ° μμ±λμ΄ μ¬λ¬ μ¬μ©μμ μμ²μ λμμ μ²λ¦¬ν©λλ€.
3οΈβ£ ν΄λΌμ΄μΈνΈ μμ² μ²λ¦¬.
3.1 λ€νΈμν¬ μΈν°νμ΄μ€ μΉ΄λ(NIC)
- ν΄λΌμ΄μΈνΈκ° API νΈμΆμ ν΅ν΄ μλ²μ HTTP μμ²μ 보λ΄λ©΄, μ΄ λ°μ΄ν°λ TCP/IP ν¨ν·μΌλ‘ μ μ‘λ©λλ€.
- λ€νΈμν¬ μΈν°νμ΄μ€ μΉ΄λ(NIC) λ λ€νΈμν¬λ₯Ό ν΅ν΄ λ€μ΄μ€λ μμ²μ μμ νκ³ μ΄λ₯Ό μ²λ¦¬ν©λλ€.
- λ€νΈμν¬ μΉ΄λκ° μμ ν λ°μ΄ν° ν¨ν·μ λ€νΈμν¬ μ€νμ ν΅ν΄ μ²λ¦¬ν ν, μ ν리μΌμ΄μ λ μ΄μ΄μμ μ΄ν΄ν μ μλ HTTP μμ²μΌλ‘ λ³νλ©λλ€.
3.2 λ°μ΄ν° ν¨ν· μ²λ¦¬
- μμ λ λ°μ΄ν° ν¨ν·μ CPUκ° μ²λ¦¬νκ² λ©λλ€.
- μ¬κΈ°μ CPUλ λ€νΈμν¬ μΉ΄λμμ λ°μ ν¨ν·μ λ©λͺ¨λ¦¬(RAM) μ μ μ¬νμ¬ DispatcherServletμΌλ‘ μ λ¬ν©λλ€.
- CPUλ μμ² μ²λ¦¬μ νμν λ°μ΄ν°λ₯Ό μΊμ λ©λͺ¨λ¦¬λ RAMμμ λΆλ¬μ μμ μ μμν©λλ€.
- μ¬κΈ°μ CPUλ λ€νΈμν¬ μΉ΄λμμ λ°μ ν¨ν·μ λ©λͺ¨λ¦¬(RAM) μ μ μ¬νμ¬ DispatcherServletμΌλ‘ μ λ¬ν©λλ€.
4οΈβ£ λΉμ¦λμ€ λ‘μ§ μ²λ¦¬ λ° λ°μ΄ν°λ² μ΄μ€ μ°λ.
4.1 CPUμ RAM κ° λ°μ΄ν° μ΄λ
- μμ²μ΄ λ€μ΄μ€λ©΄ CPUλ λ©λͺ¨λ¦¬(RAM)μμ λΉμ¦λμ€ λ‘μ§ κ³Ό API μλν¬μΈνΈμ νμν μ 보λ₯Ό κ°μ Έμ μ²λ¦¬ν©λλ€.
- λΉμ¦λμ€ λ‘μ§ μ€νμ νμν λ°μ΄ν°λ RAMμ μ μ₯λλ©°, λ°μ΄ν°λ² μ΄μ€μμ μνΈμμ©μ΄ νμν κ²½μ° λμ€ν¬μμ λ°μ΄ν°λ² μ΄μ€κ° λμν©λλ€.
πββοΈ λΉμ¦λμ€ λ‘μ§ vs λΉμ¦λμ€ κ·μΉ
4.2 λ°μ΄ν°λ² μ΄μ€ μ κ·Ό
- λ°μ΄ν°λ² μ΄μ€λ μΌλ°μ μΌλ‘ λμ€ν¬(HDD/SDD) μ λ°μ΄ν°λ₯Ό μ μ₯ν©λλ€.
- APIκ° λ°μ΄ν°λ² μ΄μ€μ μ κ·Όνμ¬ λ°μ΄ν°λ₯Ό μ½κ±°λ μ°κΈ° μν μμ
μ΄ νμν λ, λ°μ΄ν°λ λμ€ν¬μμ μ½μ΄μ RAMμΌλ‘ λ‘λλ©λλ€.
- λμ€ν¬ 컨νΈλ‘€λ¬λ λ°μ΄ν°λ₯Ό λμ€ν¬μμ μ°Ύμ RAMμΌλ‘ μ μ‘νκ³ , CPUλ μ΄ λ°μ΄ν°λ₯Ό μ²λ¦¬ν ν μ μ ν κ²°κ³Όλ₯Ό λ°νν©λλ€.
- APIκ° λ°μ΄ν°λ² μ΄μ€μ μ κ·Όνμ¬ λ°μ΄ν°λ₯Ό μ½κ±°λ μ°κΈ° μν μμ
μ΄ νμν λ, λ°μ΄ν°λ λμ€ν¬μμ μ½μ΄μ RAMμΌλ‘ λ‘λλ©λλ€.
5οΈβ£ API μλ΅ λ° λ€νΈμν¬ μ μ‘.
5.1 CPUμ λ€νΈμν¬ μΉ΄λ κ°μ λ°μ΄ν° μ²λ¦¬.
- λΉμ¦λμ€ λ‘μ§μ΄ μλ£λλ©΄, CPUλ κ²°κ³Ό λ°μ΄ν°λ₯Ό λ©λͺ¨λ¦¬(RAM)μ μ μ₯νκ³ , μ΄ λ°μ΄ν°λ₯Ό λ€μ TCP/IP ν¨ν·μΌλ‘ λ³νν©λλ€.
- CPUλ ν¨ν·μ μμ±ν ν, ν¨ν·μ λ€μ λ€νΈμν¬ μΈν°νμ΄μ€ μΉ΄λ(NIC) λ‘ μ λ¬λμ΄ λ€νΈμν¬λ₯Ό ν΅ν΄ ν΄λΌμ΄μΈνΈμκ² μ μ‘λ©λλ€.
- NICλ ν¨ν·μ μΈν°λ·μΌλ‘ 보λ΄λ μμ μ μ²λ¦¬νλ©°, ν΄λΌμ΄μΈνΈκ° μμ²ν λ°μ΄ν°λ₯Ό λ€μ μ λ¬ν©λλ€.
5.2 ν΄λΌμ΄μΈνΈ μλ΅ μ μ‘.
- ν΄λΌμ΄μΈνΈλ μλ²μμ μ μ‘λ HTTP μλ΅μ λ°κ² λκ³ , μλ²λ ν΄λΉ μμ² μ²λ¦¬μ λν μν μ½λμ λ°μ΄ν°λ₯Ό μ λ¬ν©λλ€.
- μ΄ κ³Όμ μμ λ€νΈμν¬ μΉ΄λμ λ©λͺ¨λ¦¬, CPUκ° μ§μμ μΌλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ΅λλ€.
6οΈβ£ νλμ¨μ΄ κ΄λ ¨ ν΅μ¬ μν μμ½.
1. CPU
- νλ‘κ·Έλ¨μ λͺ λ Ήμ μ²λ¦¬νκ³ κ³μ°μ μννλ κ°μ₯ μ€μν μ₯μΉμ λλ€.
- μμ²μ μ²λ¦¬νλ μ€λ λ μμ±, λ°μ΄ν° μ²λ¦¬, λ©λͺ¨λ¦¬ κ΄λ¦¬ λ±μ λ΄λΉν©λλ€.
2. RAM
- λ°μ΄ν°λ₯Ό μΌμμ μΌλ‘ μ μ₯νκ³ , CPUκ° λΉ λ₯΄κ² μ κ·Όν μ μλλ‘ λμμ€λλ€.
- μμ² μ²λ¦¬ μ€ νμν λ°μ΄ν°λ RAMμ μ μ₯λλ©°, CPUκ° μ΄ λ°μ΄ν°λ₯Ό λΆλ¬μ μ²λ¦¬ν©λλ€.
3. λμ€ν¬(HDD/SSD)
- μ ν리μΌμ΄μ μ½λμ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ μ₯νλ μꡬμ μΈ μ μ₯μμ λλ€.
- νμν λ°μ΄ν°λ λμ€ν¬μμ RAMμΌλ‘ λΆλ¬μ μ¬μ©λ©λλ€.
4. λ€νΈμν¬ μΈν°νμ΄μ€ μΉ΄λ(NIC)
- ν΄λΌμ΄μΈνΈμ μμ²μ λ°μλ€μ΄κ³ , μλ²μ μλ΅μ ν΄λΌμ΄μΈνΈμκ² λ³΄λ΄λ μν μ λ΄λΉν©λλ€.
- λ€νΈμν¬ ν¨ν·μ μ£Όκ³ λ°μΌλ©° μΈν°λ· μμμ λ°μ΄ν°κ° νλ₯΄κ² ν©λλ€.
7οΈβ£ μ 체 κ³Όμ μμ½.
1. μ ν리μΌμ΄μ μμ.
- λμ€ν¬μμ μ ν리μΌμ΄μ μ΄ λ‘λλκ³ , JVMμ΄ λ©λͺ¨λ¦¬μμ μ€νλ©λλ€.
2. λ€νΈμν¬ μ€μ .
- μλ²λ ν¬νΈμ IP μ£Όμλ₯Ό λ°μΈλ©νκ³ μΈλΆ μμ²μ λκΈ°ν©λλ€.
3. ν΄λΌμ΄μΈνΈ μμ².
- ν΄λΌμ΄μΈνΈμ μμ²μ΄ λ€νΈμν¬λ₯Ό ν΅ν΄ μλ²λ‘ μ λ¬λκ³ , λ€νΈμν¬ μΉ΄λμ CPUκ° μ΄λ₯Ό μ²λ¦¬ν©λλ€.
4. λΉμ¦λμ€ λ‘μ§ μ€ν.
- CPUλ μμ²μ λ§λ λΉμ¦λμ€ λ‘μ§μ μ€ννκ³ , λ°μ΄ν°λ² μ΄μ€λ μΊμμμ λ°μ΄ν°λ₯Ό λΆλ¬μ μ²λ¦¬ν©λλ€.
5. μλ΅ μμ±.
- μ²λ¦¬λ λ°μ΄ν°λ λ€μ ν΄λΌμ΄μΈνΈλ‘ μ μ‘λλ©°, λ€νΈμν¬ μΉ΄λμ CPUκ° μ΄ κ³Όμ μ μνν©λλ€.
νλμ¨μ΄μ μΈ‘λ©΄μμλ λμ€ν¬, RAM, CPU, λ€νΈμν¬ μΈν°νμ΄μ€ μΉ΄λκ° μνΈμμ©νλ©°, κ° μ₯μΉλ μμ μ μν μ μννμ¬ APIκ° μνν λμν μ μλλ‘ μ§μν©λλ€.