๐พ [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๊ฐ ์ํํ ๋์ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.