1. ์ฑ๋ฅ ํ ์คํธ ๋ชฉ์
์๋ฒ์ ๋ฐฐํฌ์ ์๋น์ค๋ฅผ ํ๋๋ฐ?! ๋ง์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํด์ผํ ๊น์?
๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋ฒ์ ๋ถํ๋ฅผ ์ฃผ๋ ์ฑ๋ฅ ํ ์คํธ๊ฐ ํ์ํฉ๋๋ค.
์ฑ๋ฅ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ณตํ๋ฉด์ ํ ์คํธ ํด๋ก ์ฑ๋ฅ ํ ์คํธ๋ฅผ ํด์ผํฉ๋๋ค.
(๋ก์ง ๊ฐ์ -GC, ๋ฐ์ดํฐ๋ฒ ์ด์ค-์ธ๋ฑ์ค/๋ฐ๋๋ฝ, ์์คํ ์ค๊ณ ๊ฐ์ -๋น๋๊ธฐ์ ๊ตฌ์กฐ)
โป ํธ๋ํฝ? (๋คํธ์ํฌ์ ํ๋ฅด๋ ๋ฐ์ดํฐ์ ์)
- ์ฑ๋ฅ ํ ์คํธ
- ๋ถํ ํ ์คํธ
- ์คํธ๋ ์ค ํ ์คํธ
2. ์ฑ๋ฅ ํ ์คํธ ๋ฐฐ๊ฒฝ์ง์
์ง์ฐ์๊ฐ(Latency)
- ์์ฒญ ํ๊ฑด ๋น ์ฒ๋ฆฌ์๊ฐ
- 1์ด ๋ด : ๋ถํธํ ์์
- ์์ด~์์ญ์ด : ๋ถํธํ ์๋ ์์
์ฒ๋ฆฌ๋(Throuhput)
- ๋จ์ ์๊ฐ๋์ ๋ช ๊ฑด์ ์ฒ๋ฆฌ๋ฅผ ํ ์์๋๊ฐ?
- tps ๋จ์
(API๊ฐ 1์ด ๋์ 1000๊ฐ์ API ์์ฒญ์ด ๋ค์ด์ฌ ๋ 1000๊ฐ์ ์์ฒญ์ ๋ฌธ์ ์์ด ์ฒ๋ฆฌํด๋ผ ์ ์๋ค๊ณ ํ๋ฉด ์ด API์ Throuhput์ 1000TPS ์ด์์ด๋ค ๋ผ๊ณ ๋ณผ ์ ์์)
์ง์ฐ์๊ฐ & ์ฒ๋ฆฌ๋์ ๊ฒฐํฉํ์ฌ ์ฑ๋ฅ ํ ์คํธ์ ๋ชฉํ๋ฅผ ์ธ์๋๋ค.
โป 99%: ์ฌ๋ฌ ๋ณ์๊ฐ ์กด์ฌ ํ ์ ์๊ธฐ ๋๋ฌธ์ 100% ๋ ์์ต๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ฒ๋ฆฌ๋์ด ๋ฎ์ ๋๋ ์ง์ฐ์๊ฐ์ด ๋ฎ๊ณ ์ผ์ ํ๊ฒ ์ ์ง๋๋ค๊ฐ ์ฒ๋ฆฌ๋์ด ์ ์ ๋์์ง๋ฉด ์ง์ฐ์๊ฐ์ด ํจ๊ป ๋์์ง๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
3. ์ด์์ฒด์ ์ ์๋ฒ ์์
์ด์์ฒด์ (OS; Operating System)
์๋ฒ์ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํด์ ์คํ์ํค๋ฉด, ์ด์์ฒด์ ๋ ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก์ธ์ค๋ก ์์ฑํด์ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
์ฆ, ์ํ๋๋ ์์ ์ ๋จ์๋ ํ๋ก์ธ์ค ์ ๋๋ค.
์ด์์ฒด์ ๋ ๋ฌผ๋ฆฌ์ ์ธ ์์์ ๊ด๋ฆฌํ๋ฉด์ ํ์ํ ๊ณณ์ ์์์ ํ ๋นํ์ฌ ์ปดํจํฐ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋๋ก ๋์์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
์ด๋ ์ํ๋๋ ์์ ์ ๋จ์๋ฅผ ํ๋ก์ธ์ค๋ผ๊ณ ํฉ๋๋ค.
์๋ฒ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์ด์์ฒด์ ๋ ๋ฆฌ๋ ์ค์ด๊ณ ์๋ฒ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ๊ฐ์ ์์์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ
์ด์์ฒด์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก์ธ์ค๋ผ๋ ์กด์ฌ๋ก ์์ฑํด์ ๊ด๋ฆฌํ๊ฒ ๋๋๋ฐ, ํ๋ก์ธ์ค๋ ์๋ฒ๊ฐ ๊ฐ์ง๊ณ ์๋ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ๋ฅผ ํ์ํ๋ค๋ฉด ํ ๋น๋ฐ์์ ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ฉด API ์์ฒญ์ ๋ฐ์์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ์ด๋ฐ ์์๋ค์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
์ด๋ค ์์ ์ CPU๊ฐ ๋ง์ด ํ์ํ ์ ์๊ณ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง์ด ํ์ํ ์๋ ์์ต๋๋ค.
์์์ ์ ํํ๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ฌ์ฉ์ค์ด๋ผ๋ฉด ์ถ๊ฐ์ ์ธ ์์ฒญ์ด ์์ ๋ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ ๋ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ํ ๋ ์์ ์ฌ์ฉ๋ฅ ์ด ๋์์ง๋ ์์์ด ์๋ค๋ฉด ํด๋น ์์์ ์ฌ์ฉ๋ฅ ์ ๋ฎ์ถ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํด์ผ ํฉ๋๋ค.
(๋ณ๋ชฉ์ด ๋๊ธฐ ๋๋ฌธ)
๋์คํฌ์ ์ ์ฅ๋์ด ์๋ ์คํ๋ ์ ์๋ ํ์ผ์ด๋ ์ํํธ์จ์ด ์งํฉ์ ํ๋ก๊ทธ๋จ์ด๋ผ๊ณ ํฉ๋๋ค.
ํ๋ก๊ทธ๋จ์ ์คํ์ํค๋ฉด ๋ฉ๋ชจ๋ฆฌ ์๋ก ์ฌ๋ผ๊ฐ์ ์คํ๋๋๋ฐ, ์ด๋ ํ๋ก์ธ์ค๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
ํ๋ก์ธ์ค๋ ๋ฉ๋ชจ๋ฆฌ(Stack, Heap ๋ฑ) + ์ฝ๋๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
CPU๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ง ์ฝ๋์ ๋ฐ๋ผ ์คํ ์ํต๋๋ค.
๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํด์๋ CPU์ ๋ฉ๋ชจ๋ฆฌ์ ๋์คํฌ ์ธ๊ฐ์ง ์์๊ฐ ์๋ก ์ํธ์์ฉ์ ํ๋ฉด์
์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ค๋ ์ ์ ๊ธฐ์ตํฉ์๋ค!
๊ทธ๋ ๋ค๋ฉด ์ด๋ค ๋์์ด ์์์ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ์ผ๊น์?
CPU ์ฌ์ฉ๋์ด ๋์์ง๋ฉด RAM ์ฌ์ฉ๋์ด ๋์์ง ๊ฒ์ ๋๋ค. ์ํธ์์ฉ ํ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง ์ ๋๋ค.
RAM์์ ์ธ์คํด์ค๊ฐ ํนํ ๋ง์ด ์ผ์ด๋๋ ์์ ์ด ์กด์ฌํ๋ค๋ฉด ์ด ์ธ์คํด์ค๋ฅผ ์ ๋ฆฌํ๋ ๊ณผ์ ์์ CPU๊ฐ ๊ฐ์ ํ์ฌ ์ฌ์ฉํ๋ ์ธ์คํด์ค์ธ์ง ์๋์ง๋ฅผ ๊ตฌ๋ณํ์ฌ ์ ๋ฆฌํด์ผ ํ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์!!
๋์คํฌ์ ๊ณต๊ฐ์ ์ผ๋ง๋ ์ฐจ์งํ๊ณ ์๋๋๋ ์ค์ํ์ง๋ง ๋์คํฌ๋ก ์ผ๋ง๋ ๋ง์ ์์ ๋ฐ์ดํฐ๊ฐ ๋น ๋ฅด๊ฒ ์ฝํ์ง๊ณ ์ฐ์ฌ์ง๊ณ ์๋์ง๊ฐ ์ค์ํฉ๋๋ค.
๋คํธ์ํฌ
์ค์ํ ์์์ผ๋ก ๋คํธ์ํฌ๋ ์กด์ฌํ๋๋ฐ, ๋ค๋ฅธ ์๋ฒ์ ์๋ ์์์ ์ฌ์ฉํ๋ ค๋ฉด ๋คํธ์ํฌ I/O๊ฐ ๋ฐ๋์ ํ์ํฉ๋๋ค.
(์์ธํ ๋ด์ฉ์ ์๋์)
์ง์ฐ์๊ฐ, ์ฒ๋ฆฌ๋๊ณผ์ ๊ด๊ณ
์์ฒญ ํ๋ํ๋์ ์์ ์ ์๋ฃํ๊ธฐ ์ํด์๋ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ๊ฐ ๋ชจ๋ ์ฌ์ฉ๋์ด์ผ ํ๋๋ฐ
์๋ฒ ์์๋ค์ด ๋๋ฌด ๋ฐ์ ์ํ๊ฐ ๋๋ฉด ํ ๊ฑด์กฐ์ฐจ๋ ์ ๋๋ก ์ฒ๋ฆฌ๊ฐ ๋์ง ๋ชปํ๊ณ ํ์์์์ด ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๊ฒฝ์์ํ์ ์๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌ๋์ด ์คํ๋ ค ํ์ ์์ฒญ์ด ์ ๊ฒ ๋ค์ด์ฌ ๋๋ณด๋ค ๋ฎ์์ง ์๋ ์์ต๋๋ค.
์ง๋์น๊ฒ ๊ฒฝ์์ ์ธ ์ํ๋ฅผ ํด์ํ๊ธฐ ์ํด
4. ๋คํธ์ํฌ
๋คํธ์ํฌ๋ฅผ ์ดํดํ์ง ๋ชปํ๊ณ ์ฑ๋ฅ ํ
์คํธ๋ฅผ ํ๋ฉด ์์ ํ ์๋ชป๋ ์ฑ๋ฅ ์ธก์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ,
๊ฐ์ ํฌ์ธํธ๋ ์๋ชป ์ก์ ์ ์์ผ๋ ๋คํธ์ํฌ๋ ์ฑ๋ฅํ
์คํธ ๋ถ๋ถ์์ ๋งค์ฐ๋งค์ฐ ์ค์ํ๋ค๊ณ ํ ์ ์์ต๋๋ค !
์ง์ฐ์๊ฐ์ ๋๋ถ๋ถ์ ์ฐจ์งํ๋ ๋คํธ์ํฌ ํธ์ถ
์๋ต์ ๋ณด๋ด๊ณ ๋ฐ๊ธฐ๊น์ง๋ฅผ ์ง์ฐ ์๊ฐ์ด๋ผ๊ณ ํ์ต๋๋ค.
API๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฒ ๋ด๋ถ ์์์ ์ฌ์ฉํ ๊ฒ์ด๋ฉฐ APIํน์ฑ์ ๋ฐ๋ผ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ์ ์ฌ์ฉ๋์ ์ฐจ์ด๊ฐ ๋ ๊ฒ์ ๋๋ค.
์๋ฒ ๋ด๋ถ ์์์ ์ฌ์ฉํ๋ ๊ฒ ์ด์ธ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํธ์ถํ๊ฑฐ๋ ๋ค๋ฅธ API๋ฅผ ํธ์ถํด์ ๊ฒฐ๊ณผ๋ฅผ ํ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
์ด๋ ์๋์ ๊ฐ์ด ๋คํธ์ํฌ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค.
๋คํธ์ํฌ ํต์ ๋ฐ์ = ๋น์ฉ์ด ํฐ ์ํฉ!
์๋ฒ ๋ด๋ถ ์์์ ์ฌ์ฉํ ๋ 1ms ๋ฏธ๋ง์ด ๊ฑธ๋ฆฐ๋ค๋ฉด ๋คํธ์ํฌ๋ 1ms ์ด์ ์ต๋ ์๋ฐฑ,์์ฒms๊ฐ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋คํธ์ํฌ ๋น์ฉ์ ์ค์ด๊ธฐ ์ํด ์บ์๋ฅผ ์ฌ์ฉํ๋ ๋ฑ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋คํธ์ํฌ๋ ๋ง๋ฒ์ด ์๋๋ค.
๋คํธ์ํฌ๋ ๋น์ด ์๋๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ฆฌ์ ๊ต์ฅํ ์ํฅ์ ๋ง์ด ๋ฐ์ต๋๋ค.
๋คํธ์ํฌ๋ ์ฌ๋ฌ ๋ผ์ฐํฐ๋ค์ ๊ฑฐ์ณ์ผ ํ๊ธฐ ๋๋ฌธ์ 133.3ms๋ณด๋ค ๋ ํด ๊ฒ์ด๋ผ๋ ๊ฒ์ ์ถฉ๋ถํ ์์ธก ๊ฐ๋ฅํฉ๋๋ค.
์ค๋ฌด์์๋ IDC๋ผ๋ ๋จ์๋ก ์๋ฒ๋ค์ด ๋ชจ์ฌ ์๋๋ฐ IDC ๋ด์์๋ ์๋ฒ๋ค๋ผ๋ฆฌ 1ms๋ฏธ๋ง์ ์๊ฐ๋ง์ผ๋ก๋ ํต์ ํ ์ ์์ต๋๋ค.
๋ฌผ๋ฆฌ์ ์ธ ๊ฑฐ๋ฆฌ๊ฐ ์ค์ํฉ๋๋ค!
๋คํธ์ํฌ ๋์ญํญ๊ณผ ์ง์ฐ์๊ฐ์ ๊ด๊ณ
50mb/s๋ ๋ณด๋ด์ง์ง ์๊ณ ๋ฒ๋ฆฌ์ง๋๊ฐ ํด๋ผ์ด์ธํธ์ชฝ์ ์์ผ ๊ฒ์ ๋๋ค.
๋์ญํญ๋ณด๋ค ํฐ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ค๊ณ ํ๋ฉด ๋ณด๋ด์ง์ง ๋ชปํ๊ณ ์ง์ฐ์๊ฐ์ด ๋์ด๋ ๊ฒ์ด๋ค.
๋์ญํญ์ ๊ฐ์ฅ ๋์ญํญ์ด ๋ฎ์ ํ์ ์ ๋ง์ถฐ์ง๋ค.
๋์ญํญ์ ๊ฐ์ฅ ๋ฎ์ 100์ ๋ง์ถฐ์ง๋๋ค!
5. ๋ฐ์ดํฐ๋ฒ ์ด์ค
์ฐธ๊ณ
'๐ Back-end & ๐ฉ๐ปโ๐ป > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Graph DB] ์ฐ๋ถํฌ(Ubuntu)์ Neo4j & Neo4j Desktop ์ค์นํ๊ธฐ (1) | 2024.09.24 |
---|---|
[์ฑ๋ฅ ํ ์คํธ] Artillery๋ก ๊ฐ๋จํ ์ฑ๋ฅ ํ ์คํธ ํด๋ณด๊ธฐ (0) | 2024.08.06 |
[Graph DB] Neo4jd3 ์๊ฐํ (0) | 2024.06.25 |
[Graph DB] Neo4j๋ก DB ์ฐ๋, D3.js ์๊ฐํ(1) (0) | 2024.06.05 |
[Graph DB] Neo4jD3 ์๊ฐํ ๊ด๋ จ ์ฌ์ดํธ (0) | 2024.06.04 |