์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- where
- error
- MySQL
- JDBC
- Git
- DBCP
- equals
- ํ๋ก๊ทธ๋๋จธ์ค
- dml
- constraints
- Java
- DDL
- springboot
- docker
- MariaDB
- ์๊ณ ๋ฆฌ์ฆ
- oauth2
- ๋ฐฑ์ค
- Spring
- GPG
- DataSource
- ์๊ณ ๋ฆฌ์ฆ #๋ฐฑ์ค #1717
- hikaricp
- database
- ConnectionPool
- Operating System
- aws
- ํ์
- greedy
- hashCode
- Today
- Total
did_story
[Spring Boot] ์ธ๋ถ ์๋น์ค ์ฅ์ ์ ๋๋นํ๋ ๋๊ธฐ ํธ์ถ์ ์์กด ์ ๋ต - 1 ๋ณธ๋ฌธ
[Spring Boot] ์ธ๋ถ ์๋น์ค ์ฅ์ ์ ๋๋นํ๋ ๋๊ธฐ ํธ์ถ์ ์์กด ์ ๋ต - 1
์ด์ ์์ 2025. 7. 2. 15:50๋ฐฑ์๋ ์์ ์ ํ๋ค๋ณด๋ฉด ์ธ๋ถ API๋ฅผ ๋ถ๋ฌ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ๋ค์ด ์ ์ ๋ง์์ง ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์๊ธฐ ์ด ์ธ๋ถ ์๋น์ค๋ค์ด ๊ฐ์๊ธฐ ๋๋ ค์ง๋ ์ฅ์ ๊ฐ ๊ฑธ๋ฆฌ๋ฉด ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ ๋ ๊น?! ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ๋๊ธฐ ๋ฐฉ์์ผ๋ก ํธ์ถํ๋ ๊ฒฝ์ฐ, ์ด๋ฌํ ๋ฌธ์ ๋ค์ ์ฐ๋ฆฌ์ ์๋น์ค์ ์ฅ์ ๋ฅผ ์ผ์ผํฌ ๊ฒ์ ๋๋ค.
์ด๋ฒ ๊ธฐํ์ ์ด์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ๋ค์ ์ดํด๋ณด๊ณ , ํด๊ฒฐํ๊ธฐ ์ํ ํต์ฌ ์ ์ฝ์ธ ํ์์์ ์ค์ , ๋ฒํฌํค๋ ํจํด, ๊ทธ๋ฆฌ๊ณ ์ํท ๋ธ๋ ์ด์ปค ํจํด์ ๋ํด ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1. ์ธ๋ถ ์๋น์ค ์ฅ์ : ์กฐ์ฉํ ์์ด์
์ค๋๋ ๋๋ถ๋ถ์ ์์คํ ์ ์ธ๋ถ API๋ ์๋ํํฐ ์๋น์ค(๊ฒฐ์ , ์ธ์ฆ, ์ฃผ์ ๊ฒ์, ๋ฒ์ญ, ๋ ์จ ์ ๋ณด ๋ฑ๋ฑ)์ ์์กดํด ๋์ํ๊ณ ์์์ ๊ฐ์ ํด๋ด ์๋ค. ์ ๋๊ณ ์๋ค๋ฉด ์๊ด์ด ์๊ฒ ์ง๋ง, ๋ง์ฝ ์๋ต์ด ์ง์ฐ๋๊ธฐ ์์ํ๋ฉด ์ด๋ค ์ผ์ด ๋ฐ์ํ ๊น์?
- ์ฐ๋ ๋(๋๋ ์ปค๋ฅ์
)๊ฐ ๋ฌถ์ธ๋ค.
- ์ธ๋ถ API ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๋์, ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ์ ์ฐ๋ ๋๊ฐ ๋ธ๋กํน ์ํ์ ๋น ์ง๋๋ค.
- ์ด๋ ๊ณง ์๋ฒ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ ์์ฒญ์๊ฐ ์ค์ด๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ์๋ต ๋๊ธฐ ์์ ์ฆ๊ฐ.
- ๋ธ๋กํน๋ ์ฐ๋ ๋๊ฐ ์ ์ ๋์ด๋๊ณ , ๋์์ ๋ค์ด์ค๋ ์์ฒญ์ ์ฒ๋ฆฌ๋์ง ์๊ณ ๋๊ธฐ์ด์ ์์ด๊ฒ ๋ฉ๋๋ค.
- ์ด๋ก ์ธํด ํ๊ท ์๋ต ์๊ฐ๋ ์ ์ฒด์ ์ผ๋ก ์ง์ฐ๋๊ธฐ ์์ํฉ๋๋ค.
- ์์ ๊ณ ๊ฐ (๋ฆฌ์์ค Exhaustion)
- ์ปค๋ฅ์ ํ, ์ฐ๋ ๋ ํ, DB ์ปค๋ฅ์ ๋ฑ์ด ๊ณ ๊ฐ ๋ฉ๋๋ค.
- ์๋ฒ๋ ๋ด๋ถ ์์ฒญ ์กฐ์ฐจ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ค๋ฉด, ๊ฒฐ๊ตญ ์๋น์ค์ ์ ์ฒด ์ฅ์ ๋ก ์ด๋ค์ง ์ ์์ต๋๋ค.
- ์ฑ๋ฅ์ ํ.
- ๊ฐ์ฉ ์์์ด ์ค๋ค๋ฉฐ ์ ์ฒด์ ์ธ ์๋น์ค ์๋ต์๋๊ฐ ๋๋ ค์ง๊ณ , ์ฒ๋ฆฌ๋์ด ๊ฐ์ํฉ๋๋ค.
- ๋ง์น ์์ ๊ท ์ด์์ ์์๋ ๋๋ฏธ๋ ธ ๋ถ๊ดด์ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆผ ์ด์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ด๋ค ๋ฐฉ๋ฒ๋ค์ด ์์๊น์?
์ฒซ๋ฒ์งธ, ํ์์์ ์ค์ .
ํ์์์ ์ค์ ์ ์ธ๋ถ ์๋น์ค ์ฅ์ ๋ ์ง์ฐ์ ์ฐ๋ฆฌ ์์คํ ์ด ๋ฌดํ์ ๋๋ ค๊ฐ์ง ์๋๋ก ๋ง๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๊ณ ์ค์ํ ๋ฐฉ์ด์ ์ ๋๋ค.
ํ์์์(TimeOut)์ ์์ฒญ์ ๋ณด๋ธ ํ, ์ง์ ๋ ์๊ฐ ๋ด์ ์๋ต์ ๋ฐ์ง ๋ชปํ๋ฉด ์์ฒญ์ ์ค๋จํ๊ณ ์์ธ๋ฅผ ๋ฐ์์ํค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
Connection Timout
ํด๋ผ์ด์ธํธ๊ฐ ์ธ๋ถ ์๋ฒ์ TCP ์ฐ๊ฒฐ์ ์๋ฆฝํ๋ ค๊ณ ์๋ํ ๋, ๊ทธ ์๋๊ฐ ์ผ๋ง๋ ์ค๋ ๊ฑธ๋ฆด ์ ์๋์ง๋ฅผ ์ ํํ๋ ์๊ฐ์ ๋๋ค. ์ฆ, ์๋ฒ๊ฐ ๊บผ์ ธ ์๊ฑฐ๋ ๋๋ฌด ๋ฉ๊ฑฐ๋ ๋ฐฉํ๋ฒฝ์ด ๋ง๊ณ ์์ด๋, ๋ฌดํํ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ ํด์ง ์๊ฐ๊น์ง๋ง ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค.
[Client] โโโ TCP SYN โโโบ [Server] (์๋ต ์์)
โโโ timeout (์: 3์ด)
Read Timeout
์๋ฒ๋ก๋ถํฐ ์๋ต(ํค๋๊ฐ ์๋๋ผ ๋ณธ๋ฌธ!)์ด ์ธ์ ๋์ฐฉํ ์ง ๋ชจ๋ฅผ ๋, ๊ธฐ๋ค๋ฆด ์ ์๋ ์ต๋ ์๊ฐ์ ๋๋ค. ์ฐ๊ฒฐ์ ๋์๊ณ , ์์ฒญ๋ ์ ์ ์ก๋์์ง๋ง, ์๋ฒ๊ฐ ์๋ต์ ๋๋ฆฌ๊ฒ ํ๊ฑฐ๋ ๋ฉ์ถ ์ํฉ์ ๋๋นํฉ๋๋ค.
[Client] โโโ request โโโบ [Server]
(์๋ฒ๊ฐ ๋๋ฌด ๋๋ฆฌ๊ฒ ์๋ตํจ)
โโโ timeout (์: 5์ด)
Write Timeout
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก POST๋ PUT ์์ฒญ ์ body ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋, ์ผ๋ง๋ ์ค๋ ๊ฑธ๋ฆด ์ ์๋์ง๋ฅผ ์ ํํฉ๋๋ค. ๋ณดํต ์ด๋ฏธ์ง, ๋์ฉ๋ JSON ๋ฑ ํฐ ๋ฐ๋๋ฅผ ๋ณด๋ด๋ ๊ฒฝ์ฐ ํด๋น๋ฉ๋๋ค.
[Client] โโโ(๋ณด๋ด๋ ์ค)โโโบ [Server]
โโโ timeout (์: 10์ด)
→ Timeout์ ๊ธฐ์ค: “ํ ๋ฒ์ ํจํท ์ ์ค ์ ๋๋ ์ฌ์ ์ก์ ํตํด ๋ณต๊ตฌ๋ ์ ์๋ ์์ค์ ํ์์์”
- Connection Timout ๊ฐ ์ค์
- TCP ์ฐ๊ฒฐ์ ๋งบ์ ๋๋ 3๋จ๊ณ์ ํธ๋ ์ธ์ดํฌ๊ฐ ํ์ํฉ๋๋ค.
- Client → Server : SYN ์ ์ก
- Server → Client : SYN/ACK ์๋ต
- Client → Server : ACK ์ ์ก
- TCP๋ ์ต์ด๋ก ํจํท(SYN)์ ๋ณด๋ผ ๋, ์๋ ์๋ฒ๊น์ง ์๋ณตํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ(RTT)์ ์์ง ์์๊ฐ ์์ต๋๋ค. ๊ทธ๋์ ์์๋ก ๊ณ ์ ๋ ๊ฐ์ธ InitRTO๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๋ง์ฝ ์ฒซ๋ฒ์งธ SYN๊ฐ ์ ์ค๋๋ค๋ฉด, 1์ด ํ ์ฌ์ ์ก ํฉ๋๋ค. ์ด๋๋ ์คํจํ๋ฉด 2์ด๋ค ์ฌ์ ์ก ํ๊ณ , ๊ทธ๋๋ ์คํจํ๋ฉด 4์ด ๋ค ์ฌ์ ์ก ํ๊ฒ๋ฉ๋๋ค. (์ฆ ํ์์์ ์๊ฐ์ 2์ ์ ๊ณฑํํ๋ก ์ฆ๊ฐํฉ๋๋ค.)
// ์ฌ์ ์ก ์ฃผ๊ธฐ 1์ด → 2์ด → 4์ด ...
- initRTO ๊ฐ์ 3์ด๋ก ์ค์ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ฉ์ ์ด๋ผ๊ณ ํ๋ค ์์ผ๊น?, ๋ต์ 3์ด๋ ๋๋ถ๋ถ์ ๋คํธ์ํฌ ํ๊ฒฝ์์ 1~2๋ฒ์ ํจํท ์์ค๊น์ง๋ ๋ณต๊ตฌ ์ง์์ ์ฅ์ ์ํฉ์์๋ ๋น ๋ฅด๊ฒ ์คํจ๋ฅผ ๊ฐ์งํ ์ ์๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. (ํ์ง๋ง ์ด ๋ํ ์๋น์ค์ ํ๊ฒฝ์ ๋ฐ๋ผ์ ์กฐ์ ์ด ํ์ํ๋ค.)
- TCP ์ฐ๊ฒฐ์ ๋งบ์ ๋๋ 3๋จ๊ณ์ ํธ๋ ์ธ์ดํฌ๊ฐ ํ์ํฉ๋๋ค.
- Read Timeout ๊ฐ ์ค์
- TCP๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ํ RTT(Round-Trip-Time) ๋ฅผ ์ธก์ ํ์ฌ RTO(์ฌ์ ์ก ํ์์์)์ ๊ณ์ฐํฉ๋๋ค. RTO์ ์ต์๊ฐ์ 200ms์ด๋ฉฐ RTT์ ๊ธฐ๋ฐํ์ฌ ๋ณํ ์ ์์ต๋๋ค.
- ์ฆ ๋ฆฌ๋ ํ์ ์์ ์ ์ค์ ์ธ๋ถ ์๋น์ค ์ฒ๋ฆฌ ์๊ฐ(Processing Time)๊ณผ RTT, RTO์ ํจ๊ป ๊ณ ๋ คํด์ ์ ํด์ผ ํ๋ ๊ณจ์น์ํ ์ผ์ ๋๋ค.
์ฌ์ฉํ๋ HTTP ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ปค๋ฅ์ ํ์์์๊ณผ ๋ฆฌ๋ ํ์์์์ ๊ฐ๋ณ์ ์ผ๋ก ์ค์ ํ ์ ์๋๋ก ์ง์ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ค์ํ ๊ฒ์ ํ์์์์ ์๋ฏธ๋ฅผ ์ ํํ ์ดํดํ๊ณ ์๋น์ค ํน์ฑ์ ๋ง์ถฐ์ ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
๋ค์์ ๋ฒํฌํค๋ ํจํด, ๊ทธ๋ฆฌ๊ณ ์ํท ๋ธ๋ ์ด์ปค ํจํด์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.