์ ์ฒด ๊ธ (46) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [๊ฒฐ์ ์น์ธ ํ๋ก์ธ์ค ์ค๊ณ] ๊ฒฐ์ ์น์ธ ์์ฒญ๊ณผ DB ํธ๋์ญ์ ์ ์์๊ฐ์ ์ฅ๋จ์ ์ ๋น๊ต ๋ถ์ ์ฌ์ด๋ ํ๋ก์ ํธ ์ค, ์์ ์์ฝ์ ํ ๋์ ๊ฒฐ์ ํ๋ก์ธ์ค๋ฅผ ๊ตฌํ์ค์ด์์ต๋๋ค. ์์ฝ์ ํ์ ํ ๋, ๊ฒฐ์ ํ๋ก์ธ์ค๋ ๋ค์ ์ฌ์ง์ฒ๋ผ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ก ๋๋์ด ์ง๋๋ค. ์ด ๋, ์ ๊ฐ ๊ณ ๋ คํ ๊ฒ์ ์ด 5๊ฐ์ง์ด๋ฉฐ ์ด์ ๋ํด ์ค๋ช ์ ์งํํฉ๋๋ค. ๊ฒฐ์ ํ๋ก์ธ์ค์ ํธ๋์ญ์ ์ค์ ๋ฒ์'๊ฒฐ์ ์น์ธ์ ์ํ PG์ฌ API ํธ์ถ'๊ณผ ํธ๋์ญ์ ์ ์์'๊ฒฐ์ ์น์ธ์ ์ํ PG์ฌ API ํธ์ถ'์ ๋๊ธฐ/๋น๋๊ธฐ ์ค ์ ํ ๋์์ฑ ์ ์ด ๋ฐฉ๋ฒ์์ก ๋ถ์กฑ์ผ๋ก ์ธํ ๊ฒฐ์ ์น์ธ ์คํจ๋ ํธ๋์ญ์ ๋กค๋ฐฑ ์ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง 1. ๊ฒฐ์ ํ๋ก์ธ์ค์ ํธ๋์ญ์ ์ค์ ๋ฒ์'๊ฒฐ์ ์น์ธ์ ์ํ PG์ฌ API ํธ์ถ' ์ ๋คํธ์ํฌ๋ฅผ ํตํด PG์ฌ์๊ฒ POST ์์ฒญ์ ํตํด ๊ฒฐ์ ๋ฅผ ์น์ธ ๋ฐ๋ ๊ณผ์ ์ผ๋ก ํธ๋์ญ์ ์ ํฌํจ๋์ด ํธ๋์ญ์ ์ด ๊ธธ์ด์ง๊ฒ ๋๋ค๋ฉด ๋ค์๊ณผ ๊ฐ.. ๋ก์ปฌ์์ Docker๋ฅผ ํ์ฉํ Prometheus & Grafana ์ฐ๋ ๋ฐฉ๋ฒ OSํ๊ฒฝ์ ๊ตฌ์ ๋ฐ์ง ์๋ ๋ชจ๋ํฐ๋ง ๊ตฌ์ถ์ ์๊ฐํ๋ ๊ธ์ ๋๋ค.Docker-compose, Actuator, ํ๋ก๋ฉํ ์ฐ์ค, ๊ทธ๋ผํ๋์ ๋ํ ๊ธฐ๋ณธ ์ค๋ช ๊ณผ ๋ชจ๋ํฐ๋ง ์ํคํ ์ฒ์ ๋ํ ์ค๋ช ์ ํ์ง ์๊ณ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ๋ง ์๊ฐํฉ๋๋ค.ํ๋ก๋ฉํ ์ฐ์ค & ๊ทธ๋ผํ๋ ๋์ ์๊ฐ Jmeter ๋ฅผ ์ฌ์ฉํด์ ์ฌ์ด๋ ํ๋ก์ ํธ์ ๋ถํํ ์คํธ๋ฅผ ์งํํด๋ณด๋ ค๊ณ ๊ณํ์ค์ ๋๋ค.์ด๋ค ๋ถํํ ์คํธ๋ฅผ ์์ํ์ ๋ ํฐ์บฃ์ ์ฐ๋ ๋ ํ์ ๋ฌธ์ ์ธ์ง, DB ์ปค๋ฅ์ ํ์ด ๋ฌธ์ ์ธ์ง, ๋ด ๋ ธํธ๋ถ CPU ๋ฌธ์ ์ธ์ง, ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ์ธ์ง๋ฅผ ํ์ธํ๊ณ ์ถ์๊ณ ํด๋น ๋ฌธ์ ์ ๋ง๊ฒ ํด๊ฒฐ์ ํ๊ณ ์ถ์์ต๋๋ค. ์คํ๋ง๋ถํธ์์ ์ง์ํ๋ ๊ฐ๋จํ ๋ชจ๋ํฐ๋ง ๋ชจ๋์ธ Actuator ๋ ๋ฉํธ๋ฆญ(์งํ)๋ค์ด ์ ์ฅ์ด ๋์ง ์๋ ์ ๊ณผ ๋ชจ๋ํฐ๋ง ์๋ฒ๋ฅผ ์ค์ ์ด์ํ๋ ๊ฒ์ฒ๋ผ ์๋ฒ๋ฅผ ๊ตฌ์ถํ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ ํ๋ก๋ฉํ .. MySQL 8.0์ B-Tree ์ธ๋ฑ์ค ์์๋ณด๊ธฐ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ๋ฉด ์กฐํ๊ฐ ์ ๋น ๋ฅธ์ง์ ๋ํ ์๋ฌธ์ ํด์ํ๊ณ ์ Real MySQL์ ํ์ต์ ๋ฐํ์ผ๋ก ์ ๋ฆฌํ์ต๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์๊ธฐ ์ , ์ด๋ป๊ฒ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋์ง๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.8.1 ๋์คํฌ ์ฝ๊ธฐ ๋ฐฉ์# ๊ธฐ๊ณ์ ์ฅ์น์ธ HDD(ํ๋ ๋์คํฌ)๊ธฐ์กด ๋ฐ์ดํฐ๋ ๊ธฐ๊ณ์ ์ฅ์น์ธ ์ํ ๋ชจ์์ HDD(ํ๋ ๋์คํฌ)์ ์ ์ฅํ์์ต๋๋ค.HDD๋ ์ํ์ ๋๋ ค๊ฐ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋คI/O ์์ ์ ๋งค์ฐ ๋นํจ์จ์ ์ด์์ต๋๋ค. # ์ ์์ ์ฅ์น์ ๋ฑ์ฅHDD์ ๋จ์ ์ ๋ณด์ํ๊ณ ์ SSD, CPU, ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ด ์ ๊ธฐ์ ํน์ฑ์ ๋ ์ ์์ ์ฅ์น๊ฐ ๋ฑ์ฅํ๊ฒ ๋์์ต๋๋ค.SSD๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํด HDD๋ฅผ ํ์ ์ํฌ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ์์ ์ด ๋งค์ฐ ๋น ๋ฆ ๋๋ค. ๊ทธ๋ฆฌ๊ณ , DBMS๊ฐ ์ด SSD๋ฅผ ์ฑํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฒ.. [๋ก๊ทธ์ธ ๋ฐ ์ธ๊ฐ] Interceptor์์ ArgumentResolver๋ก ๋ฆฌํฉํ ๋งํ๊ธฐ [์๋ก ]์์ด๋น์ค๋น ํด๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ, ๋ก๊ทธ์ธ ํ์๋ง '์์ ๋ฑ๋ก' ๊ณผ '์์ ์์ฝ' ์ ํ ์ ์๊ธฐ ์ํด(์ธ๊ฐ๋ฅผ ์ฃผ๊ธฐ ์ํด) ๋ก๊ทธ์ธํ ํ์์ ๋์์ผ๋ก ์ธ์ ์ ์ฌ์ฉํด์ stateful ํ๊ฒ ๊ตฌํ ํ์ต๋๋ค.@PostMapping("/login") public ApiResponse login(@RequestBody @Valid MemberLoginRequest request, HttpSession httpSession) { memberService.login(request.toServiceRequest()); // ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด httpSession.setAttribute(LOGIN_MEMBER, true.. TCP & UDP์ ์ฐจ์ด์ 3,4 way handshake ์์๋ณด๊ธฐ โญ๏ธUDP๊ฐ๋ ์ ๋ขฐ์ฑ๋ณด๋ค ์๋์ ํจ์จ์ฑ์ ์ค์์ํ ๋ ์ฌ์ฉํ๋ ์ ์ก ๊ณ์ธต ํ๋กํ ์ฝ ํน์ง1. TCP์ ๋ฌ๋ฆฌ UDP๋ ์ฐ๊ฒฐ ์งํฅํ์ด ์๋๋๋ค.๊ทธ๋์, 3 way handshake ์ 4 way handshake ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฆ ๋๋ค. 2. 1:N , N:N ํต์ ์ด ๊ฐ๋ฅํด์ DNS ํ๋กํ ์ฝ๊ณผ ์คํธ๋ฆฌ๋ฐ ์๋น์ค์ ์ ํฉํฉ๋๋ค. 3. ๋ฐ์ดํฐ์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ์ง ์์ต๋๋ค.๋จ์ง ์ฒดํฌ์ฌ์ ํตํด ์์ ๋ ํจํท์ ์ค๋ฅ ์ฌ๋ถ ์ ๋๋ง์ ์ ์ ์์ต๋๋ค. - ์ฒดํฌ์ฌ ?UDP ๋ฐ์ดํฐ๊ทธ๋จ์ ๋ฌด๊ฒฐ์ฑ์ ์ํด ์ฌ์ฉ๋๋ ๊ฒ ์ ๋๋ค.์ฒดํฌ์ฌ์ ์ก์ ํ ๋ฐ์ดํฐ๊ทธ๋จ์ 16๋นํธ ๋จ์๋ก ๋๋๊ณ , ๋ชจ๋ ๋ํ ๋ค์ 1์ ๋ณด์๋ฅผ ์ทจํด์ ๋ง๋ค์ด ์ง๋๋ค.๋ง๋ค์ด์ง ๊ฐ์ UDPํค๋์ ์ฒดํฌ์ฌ ํ๋์ ๋ฃ์ด ์ ์ก ํฉ๋๋ค. ์์ ์๋ ์์ ํ ๋ฐ์ดํฐ๊ทธ๋จ์ ๋ํด ๋์ผํ .. ARQ์ TCP ์ ์ฐจ์ด์ , ๊ทธ๋ฆฌ๊ณ TCP Reno ARQ์ TCP๋ ํจํท์ ์ค๋ฅ๋ฅผ ์ ์ดํ๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.๊ทธ๋ ๊ธฐ์, ๋ฌด์์ด ๋ค๋ฅธ์ง ์์๋ณด๊ณ ์ ํฉ๋๋ค. โญ Automatic Repeat Request (ARQ)๋ฐ์ดํฐ์ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ค๋ฅ ์ ์ด ๋ฉ์ปค๋์ฆ์ Automatic Repeat Request(์ดํ ARQ)๋ผ ๋ถ๋ฆ ๋๋ค.ARQ ์ข ๋ฅ์๋ Stop-and-Wait ARQ , Go-Back-N ARQ , Selective Repeat ARQ ๊ฐ ์์ต๋๋ค. Stop-and-Wait ARQ์ ์กํ ๋๊ธฐ ํ๋กํ ์ฝ๋ก ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค.์ด ๋ฐฉ์์ ํจํท์ ์ ์กํ๊ณ ๊ทธ ํจํท์ ๋ํ ์์ ํ์ธ ์๋ต(ACK)์ ๋ฐ๊ณ ๋์, ๋ค์ ํจํท์ ์ ์กํ๋ ๋ฐฉ์์ ๋๋ค. ์ฅ์ ์ ์์ฐจ์ ์ผ๋ก ํจํท์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ๊ตฌํ์ด ์ฝ๊ณ , ํจํท์ ์์์ด ์ ์ ํ๊ฒฝ์ ์ ์ ํฉ๋๋ค.๋จ.. [ํธ๋ฌ๋ธ ์ํ ] ํ ์คํธ๋ก ์์๋ณด๋ ์ปจํธ๋กค๋ฌ์์ HttpSession ์ฌ์ฉ ์ ์ฃผ์์ Junit5 ๋ฐ Mock ์ ๋ํด ์ค๋ช ๋๋ฆฌ์ง ์๋ ์ ์ํด ๋ถํ๋๋ฆฝ๋๋ค.ํ ์คํธ ์ฝ๋๋ณด๋ค๋ ์ปจํธ๋กค๋ฌ์์ HttpSession ์ ์ฌ์ฉํ ๋์ ์ฃผ์์ ์ ์์๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๊ฐ์ จ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ์ปจํธ๋กค๋ฌ์์ ํ๋ผ๋ฏธํฐ๋ก HttpSession ์ ์ฃผ์ ๋ฐ์์ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์ ์ด ์์ต๋๋ค. ์ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํ๋์ง HttpSession ๊ณผ HttpServletRequest.getSession() ์ ์ฐจ์ด๋ฅผ ํ ์คํธ ์ฝ๋๋ก ์์๋ณด๊ฒ ์ต๋๋ค. โญ HttpSession ๋ฅผ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๋ก ์ฆ์ ์ฃผ์ ๋ฐ๊ธฐ์ฝ๋ ์ค๋ช - ํ์์ด ์ธ์ฆ ์ฝ๋๋ฅผ ์๋ชป ์ ๋ ฅํด์ ์ด๋ฉ์ผ ๊ฒ์ฆ์ ์คํจํ๋ฉด if ๋ฌธ์ด ๊ฑฐ์ง์ด ๋ฉ๋๋ค.- Session ์ ๊ฐ์ ์ค์ ํ์ง ์๊ณ , ๋ฉ์๋๊ฐ ์ข ๋ฃ๋ฉ๋๋ค.@GetMapping("/email/authenticat.. ์ฟ ํค ์ธ์ ํ ํฐ์ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ , ์ฟ ํค ์ฌ์ฉ ์์ XSS CSRF ์๋ฐฉ ์์๋ณด๊ธฐ ์ฟ ํค์ฟ ํค๋ stateless ๋ฐฉ์์ผ๋ก ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ ์งํ ๋ ์ฌ์ฉํฉ๋๋ค. โถ ํน์ง- ์ฟ ํค๋ ๋ณด์์ด ์ทจ์ฝํ๋ค์ฟ ํค๋ F12 ์ Network ํญ์ผ๋ก๋ ์ฝ๊ฒ ์กฐ์์ด ๊ฐ๋ฅํ๊ณ , ๋ณผ ์ ์๋ ๋งํผ ๋ณด์์ ์ทจ์ฝํฉ๋๋ค.๊ทธ๋ ๊ธฐ์ ์ฟ ํค ๋จ๋ ์ผ๋ก ์ฐ์ง ์๊ณ ์ฟ ํค์ ๋ฌด๊ฒฐ์ฑ์ ์ํด ์ธ์ /JWT์ ํจ๊ป ์ฐ์ ๋๋ค. - ํด๋ผ์ด์ธํธ์ธก์์ ๊ด๋ฆฌํ๋ฉฐ, ์ด๋ฅผ stateless ๋ฐฉ์์ด๋ผ ํฉ๋๋ค. -๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋ ์ฟ ํค๋ ๋ชจ๋ ์์ฒญ์ ํฌํจ๋์ด ์๋ฒ์ ์ ์ก๋ฉ๋๋ค.์ด๋ ์ฟ ํค๊ฐ ํ์์๋ ์์ฒญ์ ๋ํด์๋ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ถ๊ฐ๋ก ์ ๋ฐํ๊ฒ ๋ฉ๋๋ค.๊ทธ๋ ๊ธฐ์ ์ฟ ํค๋ฅผ ์ฌ์ฉํ ๋๋ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ค์ด๊ธฐ ์ํด ์ต์ํ์ ์ ๋ณด๋ง ํฌํจ๋์ด์ผ ํฉ๋๋ค.๋ํ, ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ํน์ง์ ์ ์ฉํ CSRF ๊ณต๊ฒฉ์ ๋ ธ์ถ๋๊ธฐ ์ฝ์ต๋๋ค.์ธ์ ์ธ์ ์ stateful .. ์ด์ 1 2 3 4 5 6 ๋ค์