1. ํ
์คํธ์ ๋ํด์ ๊ณต๋ถํ๊ฒ ๋ ๊ณ๊ธฐ ๊ธฐ์กด์๋ ํ
์คํธ๋ฅผ API ๊ตฌํ ์๋ฃ ํ Postman์ผ๋ก ๊ตฌ๋ ํ์ธ ์์ฃผ๋ก ํ์๋ค. ํ
์คํธ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ๋ชฐ๋๊ณ ์ค์์ฑ๋ ํฌ๊ฒ ๋ชฐ๋์๋ค. ํ์ง๋ง ์ด๋ฒ์๋ ์ค์ ์๋น์ค ํด์ผํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด๊ณ ์๋น์คํ์๋ ๊ณ์ ์์ ์ฌํญ์ด ๋ฐ์ํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ
์คํธ์ฝ๋๋ฅผ ์์ฑํด๋์ง ์๋๋ค๋ฉด ์ ๋ง ํ๋ค์ด์ง ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ํ์ง๋ง ๋จ์ ํ
์คํธ๋ ์ด๋ป๊ฒ ํ๋ ๊ฒ์ธ์ง? ๋จ์ ํ
์คํธ์ ํตํฉ ํ
์คํธ์ ์ฐจ์ด๊ฐ ๋ฌด์์ธ์ง? ์ ํ ๋ชฐ๋๋ค. ๋ฐ๋ผ์ ๋จ์ ํ
์คํธ ๋ผ๋ ์ฑ
์ ์ฝ๊ณ ์์ ์ํฉ์ ์ ๋ฆฌํด๋ณด๋ฉฐ ์๊ฐ์ ์ ๋ฆฌํด๋ดค๋ค. 2. ๋จ์ ํ
์คํธ๋? ์ ์ ๋ชจ๋์ด๋ ์ ํ๋ฆฌ์ผ์ด์
๋ด๋ถ์ ์๋ ์์ ์ฝ๋ ์กฐ๊ฐ์ด ์์๊ณผ ๋๊ฐ์ด ๋์ํ๋์ง ๊ฒ์ฆํ๋ ๋ฐ๋ณต์ ์ธ ํ์ ์์ฑ - ํ๋ก๊ทธ๋จ์ ์์ ์ฝ๋ ์กฐ๊ฐ ๋จ์๋ฅผ..
๐จ๐ฉ๐ง๐ฆ Project/๐บ KIOSEK
๋จ๊ณ๋ณ๋ก ์ฑ์ฅํ์!1. ๋ฌธ์ ์ํฉ ๊ธฐ์กด ์ฝ๋ ํ๋ฆ @Getter public enum ErrorCode { DUPLICATED_LONGIND("0101", ์ด๋ฏธ ์ฌ์ฉ์ค์ธ ์์ด๋(ํ๋ฒ) ์
๋๋ค.)"), ... public DuplicatedLoginIdException extends RuntimeException { public DuplicatedLoginIdException() { } } # SignupService public void signup(LoginReq req) { ... throw new DuplicatedLoginIdException(); } @RestControllerAdvice public class ControllerAdvice { @ResponseStatus(HttpsStatus.CONFLICT) ..
1. ๋ฌธ์ ์ํฉ ์ฌ์ฉ์ ์๊ฐ ๋ง์ง ์์ง๋ง ๋ฐฐํฌํ๋ ค๋ ๋ฌผ๋ฆฌ ์๋ฒ ์ปดํจํฐ์ ์ฑ๋ฅ์ด ๊ทธ๋ฅ ์ข์ง ์๊ธฐ์ ํน์๋ ์๋ชป๋๋ฉด ์ด๋กํ๋๋ผ๋ ๊ฑฑ์ ์ด ๊ณ์ ์์๊ณ CPU, ๋ฉ๋ชจ๋ฆฌ, Thread Pool์ ๊ณ์ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น? ๋ผ๊ณ ์๊ฐํ์ฌ ์ฐพ์๋ณด๋ค๊ฐ Spring Actuator, Micrometer, Prometheus, Grafana์ ๊ฐ์ ํค์๋๋ฅผ ์๊ฒ๋์ด ๊ณต๋ถํ๊ณ ๊ตฌ์ถํ๊ฒ ๋์๋ค. 2. ๋ฌธ์ ํด๊ฒฐ โ๏ธ Spring Actuator Production์ ์ด์ํ๊ฒฝ์ ๋ฐฐํฌํ ๋ Metric(์งํ), Trace(์ถ์ ), Auditing(๊ฐ์ฌ), ๋ชจ๋ํฐ๋ง๊ณผ ๊ฐ์ ํ์ํ ๊ธฐ๋ฅ์ ๋งค์ฐ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. Micrometer, Prometheus, Grafana๋ฅผ ๋งค์ฐ ์ฝ๊ฒ ์ฐ๋..
1. ๋ฌธ์ ์ํฉ ๋ด๊ฐ ๋ง๋ ์ฌ์ดํธ์์๋ ์๋ฌด๋๋ ์ฐ๋ฆฌ ํ๊ต ๋ํ์์ ์๋๋ก ํ๊ธฐ ๋๋ฌธ์ ํ์๊ฐ์
์ ํ๋ฒ, ํจ์ค์๋, ์ด๋ฉ์ผ์ ์
๋ ฅํ๋ค. ์ด ์ ๋ณด๋ ๊ฐ์ธ์ ๋ณด ์ด๋ฏ๋ก ์ํธํ ํ ํ์๊ฐ ์๋ค. ํจ์ค์๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋น๊ต๋ง ํ๋ฉด ๋๋ฏ๋ก ๋จ๋ฐฉํฅ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๋ PasswordEncoder์ ๋์์ ํตํด ์ฝ๊ฒ ์ํธํ ํ์๋๋ฐ, ํ๋ฒ์ด๋ ์ด๋ฉ์ผ์ ์ ๋ณด๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ณตํธํํ ์ ์์ด์ผ ํ๋ฏ๋ก ์๋ฐฉํฅ ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผ ํ๋ค. ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ๋จผ์ ํ์
ํ๊ธฐ ์ํด ๋จผ์ AES256์ ๋ํด์ ๊ณต๋ถํ๊ณ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์๋ค. 2. ๋ฌธ์ ํด๊ฒฐ โ๏ธ AES-256 ๋์นญํค ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ AES(Advanced Encryption Standard) AES ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ ์ํธํ ๋ฐ ๋ณตํธํ์ ๋..
1. ๋ฌธ์ ์ํฉ ์ค์ ์ด์ํด์ผ ํ๋ ์ฌ์ดํธ๋ฅผ ๊ฐ๋ฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ธ ์ด์๋ค์ ๊ณ์ ์๊ฐํ๊ณ ์์ ํด ๋๊ฐ๊ณ ์๋ค. ๊ธฐ์กด์๋ ์๋ฅผ ๋ค์ด ๋ง์ดํ์ด์ง ์ ๋ณด๋ฅผ ์ป์ด์ค๋ Rest API๋ฅผ /api/members/{memberId} ๋ผ๊ณ ์ค๊ณํ๊ณ ๊ตฌํํ๋ค. ํ์ง๋ง Https ํ๋กํ ์ฝ์ ์ ์ฉํ๋๋ผ๋ path variable ๋๋ query parameter๋ก ๋ฐ๋ ๋ฐ์ดํฐ๋ URI์ ํฌํจ๋์ด ์ํธํ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ผ๋ก ์ข์ง ์์๋ฟ๋๋ฌ Jwt token ์ธ์ฆ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ํ ํฐ์ ์ฌ์ฉ์ ์๋ณ์ ๋ณด๊ฐ ๋ค์ด์๋๋ฐ ๊ตณ์ด ํด๋ผ์ด์ธํธํํ
๋ค์ ๋ณธ์ธ์ ๋ํ ํค๋ฅผ ๋ฐ์ ํ์๊ฐ ์๋ค๊ณ ์๊ฐ์ ํ๋ค. 2. ๋ฌธ์ ํด๊ฒฐ โ๏ธ HttpServeletRequest๋ฅผ ์ฌ์ฉํ์ HttpServletRequest๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์์ H..
1. ๋ฌธ์ ์ํฉ ์ปจํ
์ด๋๋ฅผ ๊ฐ์ ๋์ฐ๊ณ ๋คํธ์ํฌ๋ฅผ ์ฐ๊ฒฐํด์ฃผ๊ณ ๋ณผ๋ฅจ์ ์ฐ๊ฒฐํด์ฃผ๊ณ ๋ฅผ ๋ฐ๋ณตํ๋ค๋ณด๋ ์๋์ ๊ฐ์ ์๊ฐ์ ํ์๋ค. MariaDB, Redis, Spring Boot Jar, Prometheus, Grafana ๋ฑ์ ์ปจํ
์ด๋๋ฅผ ํ๋ฒ์ ๋์ฐ๊ณ ์
๋ฐ์ดํธํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๊น? ๊ทธ๋ฆฌ๊ณ ๊ฐ ์ปจํ
์ด๋์ docker network๋ฅผ ์์ฝ๊ฒ ์ฐ๊ฒฐํ๊ณ ๋ณผ๋ฅจ, ์์กด๊ด๊ณ, ๊ธฐํ ํ๊ฒฝ์ค์ ๋ฑ์ ํ๋์ ํ์ผ์์ ํธ๋ฆฌํ๊ฒ ์ค์ ํ๊ณ ๊ด๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๊น? 2. ๋ฌธ์ ํด๊ฒฐ โ๏ธ Docker Compose๋ฅผ ์ฌ์ฉํ์! Docker Compose๋ ๋ค์ค ์ปจํ
์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ํ๊ธฐ ์ํ Tool์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. โ๏ธ Docker Compose ์ฃผ์ ํน์ง 1๏ธโฃ ๋จ์ผ ํธ์คํธ์ ์ฌ๋ฌ ๊ฐ์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ Compose..