์ํฐ๋ ํ๋ฆฌ์จ๋ณด๋ฉ ๋ฐฑ์๋ ์ฑ๋ฆฐ์ง 1์ฐจ ํน๊ฐ
โ๏ธ์ฌ์ ๊ณผ์
DB Table row ๋ฅผ ์
๋ฐ์ดํธํ๋ ์ํฉ์ ๋ฐฉ์ดํ๊ธฐ ์ํด ์ด๋ป๊ฒ ๊ฐ๋ฐํ์ค๊ฒ์ธ์ง
- DB Lock (๋น๊ด์ ๋ฝ / ๋๊ด์ ๋ฝ)
- ์ฒ๋ฆฌ์จ (TPS๊ฐ 5๋ง๊ฑด์ฉ ๋ค์ด์ฌ๋ ๋ฝ์ ๊ฑธ์ด๋ฒ๋ฆฌ๋ฉด ์๋ฒ๊ฐ ํฐ์ ธ๋ฒ๋ฆผ.. , ๋น๊ด์ ๋ฝ์ ๊ฑธ์ด๋ฒ์ด๋ฉด ๋ฐ๋๋ฝ ํฐ์ง์๋์์)
=> Redis๊ฐ์ ์ฑ๊ธ์ค๋ ๋๋ฅผ ๋์ด ๋๊ธฐ์ด์ ๋ง๋ค์๋ ์์.
- ๋/์ฅ๋ถ๊ฐ์ ์ค์ํ๊ฒ์ผ ๊ฒฝ์ฐ, ๋ถ์ฐ๋ฝ์ ๊ฑธ์ด์ ๊ณ์ข๋ ๊ณ ๊ฐ์ ์์ฐ์ ๊ฒฝ์ฐ ๋ถ์ฐ๋ฝ์ ๊ฑธ์ด์ฃผ๋ฉด ๋ณด์ฅ์ด ๋จ.
- ์๋ ๋น ๋ฅธ kafka ์ธ์๋ ์๋๋ฐ.. ์ธ๋ฐ์๋ Redis ์ธ๊ฒ ๊ฐ์.. ํํฐ์
์ด๋ผ๋ ๊ฐ๋
์ฐพ์๋ณด๊ธฐ
- [์ฐ์ํํ
ํฌํ ํฌ] ์ ์ฐฉ์ ์ด๋ฒคํธ ์๋ฒ ์์กด๊ธฐ! 47๋ง RPM์์ ์ด์๋จ๋ค?!
> ์ฐธ๊ณ ํด๋ณด๊ธฐ
- DB๊ฐ ์ฌ๋ฌ๊ฐ๋ฉด ๋ฝ๊ฑธ๊ธฐ๊ฐ ์ด๋ ค์. MSA ์์๋ ๋ถ์ฐ๋ฝ๊ฐ์๊ฑธ ๋ง์ด ์.
TCP vs UDP (๋ฉด์ ๋จ๊ณจ์ง๋ฌธ, ์ฐพ์๋ณด์)
- TCP & UDP๋ OSI ํ์ค๋ชจ๋ธ๊ณผ TCP/IP ๋ชจ๋ธ์ ์ ์ก ๊ณ์ธต์์ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์.
- TCP : ๋์ ์ ๋ขฐ์ฑ
- UDP : ์ ์ก์๋๊ฐ ๋น ๋ฆ (์ต๊ทผ์ ๋จ๊ณ ์์)
๊ฒ์์ฐฝ์ Naver๋ฅผ ๊ฒ์ํ์๋ ์ผ์ด๋๋ ์ผ
๋ณธ์ธ์ด ์ฃผ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ์ธ์ด์์ ์ค๊ณ์ ๊ฒฐํจ ํ๊ฐ์ง๋ฅผ ์์ฑ
- ์์1 : Java null ๊ฐ๋
(null object pattern)
- ์์2 : Stack์ด๋ผ๋ ํด๋์ค๋ฅผ ์ ๊ตฌํํ๋๊ฐ.. Stack ๋ง๋ค๋ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ง ์์์. / DEQUE ์จ์ผํจ.
๋ณธ์ธ์ด ์ฃผ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ ์ธ์ด์์ ์ค๊ณ์ ๊ฒฐํจ ํ๊ฐ์ง๋ฅผ ์์ฑ
- ArrayList
- HashMap ์๊ณ ๋ฆฌ์ฆ ์ด๋ค๊ฑฐ ์ฐ๋์ง ๋ฑ๋ฑ
- StringBuilder(์ฌ์ด์ฆ 16) StringBuffer String
Apache Kafka
- ์ค์์ง๊ถํ๋ ํ, ๋ฐ์ดํฐ ์ ์ฅ์(์ฌ๋ฌ๊ตฐ๋ฐ์์ ๊ตฌ๋
ํ ์ ์๊ณ , ๊ทธ๊ฑธ ๋๊ธฐ์ด ํ๋ก ์ ๊ณตํ ์ ์๋ค)
- ๋๊ธฐ์ด ํ๋ฅผ ์ฌ๋ฌ๊ฐ๋ก ์ค์ ์ธ ์ ์์. ๊ตฌ๋
ํ๋๊ฒ๋ ์ฌ๋ฌ๊ฐ๋ฅผ ์ค ์ ์๋ค.
- ๋ค๋ง ์์๋ณด์ฅ์ ์ด๋ ค์ธ ์ ์๋ค. (๋๊ธฐ์ด์ ์ฌ๋ฌ๊ฐ ์ฃผ๋๊น..)
๐ฟ[๊ธฐ์ ๋ฉด์ ์์ ์์คํ
์ค๊ณ ๋ฌธ์ ๊ฐ ๊ฐ์ง๋ ์๋ฏธ]
1. ์์คํ
์ค๊ณ ๋ฌธ์ ๋
1-1. ๋ฌด์์ ์ํ๋๊ฐ
๊ธฐ์ ๋ฉด์ ์์ ์์คํ
์ค๊ณ ๋ฌธ์ ๋ฅผ ๋ฌผ์ด๋ณด๋ ์ด์ ๋ ๋ญ๊น? -> ํ์
์์ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ ํ์ธํ๊ธฐ ์ํจ.
- ์ค๊ณ๋ ์ ๋ต์ด ์์. ํจ์จ์ฑ์ ์ฐจ์ด๊ฐ ์๊ฒ ์ง๋ง, ์ ๋ต์ด ์์ผ๋ ์๊ฒฌ์ ๋ํ ๊ทผ๊ฑฐ๋ฅผ ๊ฐ๊ณ ์ค๋ํ๋ ๊ฒ.
- ๊ผฌ๋ฆฌ ์ง๋ฌธ์ด ๋ง์ ์ ์์ ( ์ด๊ฑด ๋ด๊ฐ ๋ต๋ณ์ ์ ํ๊ณ ์๋ค๋ ๋ป ใ
ใ
๊ถ๊ธํ๊ฒ ๋ง์ผ๋ ๋ฌผ์ด๋ณด๋ ๊ฒ)
1-2. ํผํด์ผ ํ ๊ฒ
- ์ค๊ณ์ ์์์ฑ์ ์ง์ฐฉํ ๋๋จธ์ง, ์ค๋ฒ์์ง๋์ด๋ง์ ํ๋ ์์ง๋์ด๋ง๋ค์ด ํ์
์๋ ๋ง์.
- ์ค๋ฒ ์์ง๋์ด๋ง์ ๊ฒฐ๊ณผ๋ก ์์คํ
์ ๋ฐ์ ๋น์ฉ ์์นํ ์ ์์.
ex) ์ฌ์ฉ์ 10๋ช
์ธ๋ฐ, MAS ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋ค? ์ฐจ๋ผ๋ฆฌ Monolith๋ก ํ๋๊ฒ ๋์์๋ ์์
2. ํจ๊ณผ์ ๋ฉด์ ์ ์ํ 4๋จ๊ณ ์ ๊ทผ๋ฒ
2-1. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์
- ๋ต๋ถํฐ ๋ค์ด๋ฐ์ง ๋ง์
- ๊น์ด ์๊ฐํ๊ณ ์ง๋ฌธํ์ฌ ์๊ตฌ์ฌํญ๊ณผ ๊ฐ์ ์ ๋ถ๋ช
ํ ํ์
- ๋ชจํธํจ์ ์์ ๋๊ฒ ๊ฐ์ฅ ์ค์ํจ
- ์ฌ๋ฐ๋ฅธ ์ง๋ฌธ์ ํ๋ ๊ฒ. ์ ์ ํ ๊ฐ์ ์ ํ๋ ๊ฒ. ์์คํ
๊ตฌ์ถ์ ํ์ํ ์ ๋ณด๋ฅผ ๋ชจ์ผ๋ ๊ฒ
- ๋ฉด์ ๊ด๊ณผ ํํ์ ๋ง์ด ํ์!!
2-2. ๊ฐ๋ต์ ์ธ ์ค๊ณ์ ์ ์ ๋ฐ ๋์ ๊ตฌํ๊ธฐ
- ๊ฐ๋ต์ ์ธ ์ค๊ณ์์ ์ ์ํ๊ณ ๋ฉด์ ๊ด์ ๋์๋ฅผ ์ป์.
2-3. ์์ธ ์ค๊ณ
- Monolith > MSA๋ก ๋์ด๊ฐ๋ค๊ณ ๊ฐ์ ํ๋ฉด..
- ์บ์์ฒ๋ฆฌ ์ด๋ป๊ฒ ํ ๊ฑด์ง, ์๋ฆผ์ ์ฅ์ ๊ฐ ๋๋ฉด ์ด๋ป๊ฒ ํ ๊ฑด์ง? , ๋ฑ๋ฑ..
- ๋ฏธ๋์ ๋ฅ์น ๊ท๋ชจ ํ์ฅ ์๊ตฌ์ ๋ํด ์ด๋ป๊ฒ ๋์ฒํ ๊ฒ์ธ์ง..
2-4. ๋ง๋ฌด๋ฆฌ๋จ๊ณ
- ๊ฐ์ ์ ..
- ๋ฏธ๋ ๊ท๋ชจ ํ์ฅํด์ผํ ๋ ์ด๋ป๊ฒ ํด์ผํ๋์ง?
** ์ค์ํ ๊ฒ
- ์ง๋ฌธ์ ๋ง์ด ํด์ผํด์ ์๊ตฌ์ฌํญ์ ์ต๋ํ ์ดํดํด์ผ ํจ.
- ์ํต์ด ๊ฐ์ฅ ์ค์ํ๋ค. ์ผ์ ํ ๋ ๊ฐ์ด ์ ํ ์ ์๋ ์ฌ๋์ธ์ง ํ์ธํ๋ ์๋ฆฌ์ด๊ธฐ๋ ํจ.
- ํํธ๋ฅผ ์ฒญํ๊ธฐ ์ฃผ์ ํ์ง ๋ง์
- ์๋ฌด๊ฒ๋ ๋๋นํ์ง ๋ง๊ณ ๋ฉด์ ์ฅ์ ๊ฐ์ง ๋ง์;;
- JAVA / SPRING ์ ๋น์ฐํ ๊ธฐ๋ณธ์ด๊ณ , ๊ฒฝ์๋ ฅ์ ๊ฐ์ถ๊ธฐ ์ํด์๋ ์์คํ
์ค๊ณ๋ ์ ์์์ผํ๋ค.
์ ํ์ ์ธ ๋ฉด์ ์ง๋ฌธ
- DB Lock, ๋์์ฑ
- ๋คํธ์ํฌ
๐ฟ[์ค๊ณ]
1 . ๋จ์ผ ์๋ฒ ์ค๊ณ

2 . ์ด๋ค DB๋ฅผ ์ฌ์ฉํ์ง? (RDBMS vs NoSQL)
CAP ์ด๋ก
- Availability(๊ฐ์ฉ์ฑ) : ๋ชจ๋ ๋
ธ๋๊ฐ ๋ชจ๋ ์์ฒญ์ ๋ํ์ฌ ์ ์์ ์ธ ์๋ต์ ํ๋ค.
- Consistency (์ผ๊ด์ฑ) : ๋ชจ๋ ๋
ธ๋๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.
- Partition Tolerance (๋ถ๋ถ ๊ฒฐํจ) => ๋คํธ์ํฌ์ ํน์ฑ์ด๋ผ.. ๋
ผ๋์ด ์ข ์์!
์ฐธ๊ณ ํ๊ธฐ!
CAP Theorem, ์คํด์ ์ง์ค
CQRS Pattern
์ฐธ๊ณ ํด๋ณด๊ธฐ
B๋งํธ ์ ์ ๋๋ฉ์ธ CQRS ์ ์ฉํ๊ธฐ
3. ๊ท๋ชจ๋ฅผ ํ์ฅํด๋ณด์ (์ํ์ ํ์ฅ / ์์ง์ ํ์ฅ)
3-1. ์ํ์ ํ์ฅ
๋ ๋ง์ ์๋ฒ๋ฅผ!
3-2. ์์ง์ ํ์ฅ
๋ ๊ณ ์ฌ์์ผ๋ก!
์์ง์ ํ์ฅ์ ๋จ์
- ํ๋์ ์๋ฒ์ CPU, Memory๋ฅผ ๋ฌดํ๋๋ก ์ฆ์คํ ๋ฐฉ๋ฒ์ ์์.
- ๋น์ฉ์ด ์ ํ์ ์ธ ์ถ์ธ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ฒ ์ฆ๊ฐ
- ๋๋ฐฐ ์ด์์ CPU, Memory๋ฅผ ๊ฐ์ถ ์์คํ
์ ๋๋ฐฐ ์ด์์ ๋น์ฉ์ด ๋ค์ง๋ง, ๋๋ฐฐ ์ด์์ ๋ถํ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒ์ ์๋.
- ex) JAVA Heap ๋ฉ๋ชจ๋ฆฌ ์ค์บ ๋น์ฉ์ด ๋์ด๋๊ธฐ๋ ํจ.