๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project/๐Ÿ“บ KIOSEK

๋‹จ๊ณ„๋ณ„๋กœ ์„ฑ์žฅํ•˜์ž!
1. ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ ๊ธฐ์กด์—๋Š” ํ…Œ์ŠคํŠธ๋ฅผ API ๊ตฌํ˜„ ์™„๋ฃŒ ํ›„ Postman์œผ๋กœ ๊ตฌ๋™ ํ™•์ธ ์œ„์ฃผ๋กœ ํ•˜์˜€๋‹ค. ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋ชฐ๋ž๊ณ  ์ค‘์š”์„ฑ๋„ ํฌ๊ฒŒ ๋ชฐ๋ž์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ์‹ค์ œ ์„œ๋น„์Šค ํ•ด์•ผํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๊ณ  ์„œ๋น„์Šคํ›„์—๋„ ๊ณ„์† ์ˆ˜์ •์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋†“์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ •๋ง ํž˜๋“ค์–ด์งˆ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ธ์ง€? ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์˜ ์ฐจ์ด๊ฐ€ ๋ฌด์—‡์ธ์ง€? ์ „ํ˜€ ๋ชฐ๋ž๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ผ๋Š” ์ฑ…์„ ์ฝ๊ณ  ์˜ˆ์‹œ ์ƒํ™ฉ์„ ์ •๋ฆฌํ•ด๋ณด๋ฉฐ ์ƒ๊ฐ์„ ์ •๋ฆฌํ•ด๋ดค๋‹ค. 2. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ž€? ์ •์˜ ๋ชจ๋“ˆ์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์— ์žˆ๋Š” ์ž‘์€ ์ฝ”๋“œ ์กฐ๊ฐ์ด ์˜ˆ์ƒ๊ณผ ๋˜‘๊ฐ™์ด ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ˜๋ณต์ ์ธ ํ–‰์œ„ ์†์„ฑ - ํ”„๋กœ๊ทธ๋žจ์˜ ์ž‘์€ ์ฝ”๋“œ ์กฐ๊ฐ ๋‹จ์œ„๋ฅผ..
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..
DevPoong
'๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project/๐Ÿ“บ KIOSEK' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)