๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€250

[2์ฃผ์ฐจ] (External Interrupt) Caston Challenge 4 โ€ป Caston Challenge 2๋ฒˆ, 3๋ฒˆ ๋ฌธ์ œ๋Š” ํ•˜๋“œ์›จ์–ด์  ๊ตฌ์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋žตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ - ์Šค์œ„์น˜ 1์€ Falling Edge๋กœ - ์Šค์œ„์น˜ 2๋Š” Rising Edge๋กœ ์„ค์ • - AVR ๋ช…๋ น์–ด(PORT ์ž…์ถœ๋ ฅ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Interrupt ์‹คํ—˜ - ์Šค์œ„์น˜ 1 Debounce ํšŒ๋กœ๋ฅผ ์„ค๊ณ„ - ์Šค์œ„์น˜ 2 ์ผ๋ฐ˜ ํšŒ๋กœ๋กœ ์„ค๊ณ„ - ์Šค์œ„์น˜ 1 LED 4๊ฐœ๊ฐ€ LSB ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋ˆ„์ ํ•˜์—ฌ On, LCD์—๋Š” 1ํ–‰์—๋Š” โ€œFalling Edgeโ€ Displayํ•˜๊ณ , 2ํ–‰์—๋Š” ํ˜„์žฌ LED๊ฐ€ ๋ช‡๊ฐœ On ๋˜์—ˆ๋Š”์ง€ ๊ฐœ์ˆ˜๋ฅผ Display - ์Šค์œ„์น˜ 2 LED 4๊ฐœ๊ฐ€ MSB ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ด๋™ํ•˜๋ฉด์„œ On, LCD์—๋Š” 1ํ–‰์—๋Š” โ€œRising Edgeโ€๋ผ๊ณ  Display, 2ํ–‰์—๋Š” MSB ๊ธฐ์ค€์œผ๋กœ ์ฒซ๋ฒˆ์งธ LED๋ฅผ 1์ด๋ผ๊ณ  ํ–ˆ์„.. 2022. 10. 5.
[Redisson] ํŠธ๋žœ์žญ์…˜ ๋ฌธ์ œ ๋ฐœ์ƒ ๋ฐ ํ•ด๊ฒฐ ์ง€๋‚œ ํฌ์ŠคํŠธ [Redisson]์„ ์ด์šฉํ•œ ๋ถ„์‚ฐ Lock ๊ตฌํ˜„ & ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋‚ด ํ”„๋กœ์ ํŠธ์˜ Payment๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ ์ค‘์— ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ์ง๋ฉดํ–ˆ์—ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ ๋™์‹œ์„ฑ ๋ฌธ์ œ! ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ๋‚ด์žฅ ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ†ฐ์บฃ, ์–ธ๋”ํ† ์šฐ ๋“ฑ๋“ฑ์˜ WAS๋กœ ๋Œ์•„๊ฐ€๋Š”๋ฐ ์ด sweeeetgoguma.tistory.com ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ Redisson์„ ์ด์šฉํ•˜์—ฌ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฆฌํŒฉํ† ๋ง์ด ๊ฑฐ์˜ ๋๋‚˜๊ฐ€ ์กฐํšŒ API๋ฅผ ๊ตฌ์ฒดํ™”ํ•˜์—ฌ ๋ช‡ ๊ฐœ ์ถ”๊ฐ€ํ•˜๋˜ ๋„์ค‘, ์Šค๋ ˆ๋“œ 100๊ฐœ์˜ ๋™์‹œ ์š”์ฒญ์„ ์ง์ ‘์ ์œผ๋กœ ๋ฐ›๋Š” ๊ณผ์ •์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์–ด์กŒ๋‹ค. ๊ทธ๋ž˜์„œ ์‹คํ—˜ํ•ด๋ดค๋‹ค. ๊ฒฐ๊ณผ๋Š”?? ์ฒ˜์ฐธํ•˜๋‹ค.. ๋ฌด์—‡์ด ๋ฌธ์ œ์˜€์„๊นŒ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ์”นํ˜”๋‹ค. @GetMapping("/test") public void t.. 2022. 10. 1.
[Redisson]์„ ์ด์šฉํ•œ ๋ถ„์‚ฐ Lock ๊ตฌํ˜„ & ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋‚ด ํ”„๋กœ์ ํŠธ์˜ Payment๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ ์ค‘์— ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ์ง๋ฉดํ–ˆ์—ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋ฐ”๋กœ ๋™์‹œ์„ฑ ๋ฌธ์ œ! ์Šคํ”„๋ง๋ถ€ํŠธ์˜ ๋‚ด์žฅ ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ†ฐ์บฃ, ์–ธ๋”ํ† ์šฐ ๋“ฑ๋“ฑ์˜ WAS๋กœ ๋Œ์•„๊ฐ€๋Š”๋ฐ ์ด WAS๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. A๋ผ๋Š” ์ƒํ’ˆ (์žฌ๊ณ  3๊ฐœ) ์„ [๊ฐ€]๊ตฐ์ด 2๊ฐœ ๊ตฌ๋งคํ•˜๋ ค ํ•œ๋‹ค. ๋™์‹œ์— [๋‚˜]๊ตฐ์ด 2๊ฐœ ๊ตฌ๋งคํ•˜๋ ค ํ•œ๋‹ค. ๋ฏธ์„ธํ•˜๊ฒŒ ๋‚˜๋งˆ 0.00001์ดˆ์˜ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐ๊ตญ ๊ฐ๊ฐ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ™์€ ์ƒํ’ˆ์˜ ์žฌ๊ณ ๋ฅผ ์กฐํšŒํ•œ๋‹ค. ์›๋ž˜๋Œ€๋กœ๋ผ๋ฉด ํ•œ ๋ช…์€ ๋ชป ์‚ฌ์•ผ ์ •์ƒ์ด๋‹ค. ์œ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ๋ญ๊ฐ€ ์žˆ์„๊นŒ? 1. Synchronized ์ž๋ฐ”๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. Thread-Safe ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ์ข‹์•„๋ณด์ด๋‚˜, ์„œ๋ฒ„๊ฐ€ ์ฆ์„ค๋  ๊ฒฝ์šฐ ์˜๋ฏธ๊ฐ€ ์—†์–ด์ง„๋‹ค. 2. Database Lock D.. 2022. 9. 27.
๊ฒฐ์ œ API ๋ฆฌํŒฉํ† ๋ง - [2] (feat. WebClient) https://sweeeetgoguma.tistory.com/entry/%EA%B2%B0%EC%A0%9C-API-%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81-1-feat-%EC%A0%84%EB%9E%B5-%ED%8C%A8%ED%84%B ๊ฒฐ์ œ API ๋ฆฌํŒฉํ† ๋ง - [1] (feat. ์ „๋žต ํŒจํ„ด) ๊ฒฐ์ œ API๋ฅผ ๋ฆฌํŒฉํ† ๋ง ์‹œ์ž‘ํ•˜๋ฉฐ ์™ธ๋ถ€ API๋ฅผ ์—ฐ๋™ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ๊ธฐ์กด์—๋„ ์นด์นด์˜คํŽ˜์ด๋ฅผ ์ด์šฉํ–ˆ์—ˆ๊ณ , ์ง€๊ธˆ๋„ ์นด์นด์˜คํŽ˜์ด๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ด์ง€๋งŒ, ์ถ”๊ฐ€์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฒฐ์ œ API๋ฅผ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ sweeeetgoguma.tistory.com ์ง€๋‚œ ํฌ์ŠคํŒ…์— ์ด์–ด์„œ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค~ ์‹ค์ œ ๊ฒฐ์ œ API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” httpClient ๊ธฐ๋ฐ˜์˜ ๋ชจ๋“ˆ์ด ํ•„์š”ํ•˜๋‹ค. ๊ธฐ์กด์—๋Š” ๋™๊ธฐ๋ฐฉ์‹, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋ฅผ ์ด์šฉ.. 2022. 9. 22.
๊ฒฐ์ œ API ๋ฆฌํŒฉํ† ๋ง - [1] (feat. ์ „๋žต ํŒจํ„ด) ๊ฒฐ์ œ API๋ฅผ ๋ฆฌํŒฉํ† ๋ง ์‹œ์ž‘ํ•˜๋ฉฐ ์™ธ๋ถ€ API๋ฅผ ์—ฐ๋™ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ๊ธฐ์กด์—๋„ ์นด์นด์˜คํŽ˜์ด๋ฅผ ์ด์šฉํ–ˆ์—ˆ๊ณ , ์ง€๊ธˆ๋„ ์นด์นด์˜คํŽ˜์ด๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ด์ง€๋งŒ, ์ถ”๊ฐ€์ ์œผ๋กœ ๋‹ค๋ฅธ ๊ฒฐ์ œ API๋ฅผ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ์„ ๋งŒํ•œ ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ์Šคํ”„๋ง์„ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ ์ฝ์—ˆ๋˜ ์ฑ…์ธ ๊ฐœ๊ตฌ๋ฆฌ (์Šคํ”„๋ง ์ž…๋ฌธ์„ ์œ„ํ•œ ๋ญ์‹œ๊ธฐ..) ์ฑ…์—์„œ ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋””์ž์ธ ํŒจํ„ด๋“ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ ๋•Œ๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋ž€ ๊ฒƒ์— ๋Œ€ํ•ด ๊ฐ์ด ์ž˜ ์˜ค์ง€ ์•Š์•˜๋Š”๋ฐ, ์ง์ ‘ ์ ์šฉํ•  ๊ธฐํšŒ์™€ ์ƒํ™ฉ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด๋ณธ๋‹ค. ๊ณ„์† ๋ฉด์ ‘ ์งˆ๋ฌธ ๋Œ€๋น„ํ•ด ์•ต๋ฌด์ƒˆ์ฒ˜๋Ÿผ ๋‹ฌ๋‹ฌ ์™ธ์šฐ๊ณ  ๋‹ค๋‹ˆ๋˜ ๋„์ค‘ ์ง์ ‘ ์ ์šฉํ•  ๊ธฐํšŒ๊ฐ€ ๋”ฑ ์ƒ๊ฒผ๊ณ , ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋ฐœ 2์›์น™์ธ OCP์— ์ฐฐ๋–ก์ผ ๊ฒƒ์ด๋ผ๋Š” ๋จธ๋ฆฌ ์†์˜ ์™ธ์นจ์ด ์šธ๋ ธ๋‹ค. ๊ทธ๋Œ€๋กœ ์ ์šฉํ•ด๋ณด์•˜๋‹ค. ๊ธฐ์กด ํ”Œ๋กœ์šฐ ์ปจํŠธ๋กค๋Ÿฌ ์„œ๋น„์Šค(์นด์นด.. 2022. 9. 20.
๋™์‹œ์„ฑ ์กฐํšŒ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ์„ฑ๋Šฅ์— ๊ด€ํ•œ ๊ณ ๋ฏผ [Lock, Queue, Redis] ์ฃผ๋ฌธ ๊ฑด์— ๋Œ€ํ•œ ์ƒํ’ˆ ์žฌ๊ณ  ํŒŒ์•… ๋™์‹œ์„ฑ ๊ด€๋ จ ์ด์Šˆ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•œ ํ•˜๋ฃจ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฆฌํŒฉํ† ๋ง์„ ์‹œ์ž‘ํ•˜๋ฉฐ ์ง€๋‚œ ๋„๋ฉ”์ธ๋“ค์€ ๊ธฐ๋ณธ crud API๋งŒ์„ ๋‹ค๋ฃจ์—ˆ๋‹ค. 5์ผ๋™์•ˆ JPA ๊ฐ•์˜๋“ค์„ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ œ API ๋ฆฌํŒฉํ† ๋ง์— ๋‹ค์‹œ ์ฐฉ์ˆ˜ํ–ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ํ”„๋กœ์ ํŠธ์˜ ํ† ํ”ฝ์ด ์‡ผํ•‘๋ชฐ์ด๋‹ˆ ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ œ ํŒŒํŠธ์—์„œ ๋‹จ์ˆœ CRUD๊ฐ€ ์•„๋‹Œ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์‹ถ์–ด, ์™ธ๋ถ€ ๊ฒฐ์ œ API ๋ฐ ๋””์ž์ธ ํŒจํ„ด์„ ์ ์šฉํ•œ ๊น”๋”ํ•œ ์ฝ”๋“œ๋“ค์„ ๊ณ ๋ คํ•˜๋ฉฐ ์ž‘์„ฑํ•˜๋Š” ์ค‘์ด๋‹ค. ๋Œ€๋žต์ ์ธ ํ‹€์„ ๋งŒ๋“  ๋’ค, ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ฃผ๋ฌธ์„ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘, ๋™์‹œ์„ฑ ์ด์Šˆ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๋‹ค. ๊ธฐ์กด ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• MSA๋ฅผ ๊ณ ๋ คํ–ˆ๊ธฐ์—, ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Outbox pattern์„ ์ด์šฉ์ค‘์ด์—ˆ๋‹ค. ์ด ๋ฐฉ์‹์„ ํ†ตํ•ด ์ƒํ’ˆ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์—ˆ๋‹ค. .. 2022. 9. 14.
[2์ฃผ์ฐจ] Capston challenge 1 External Interrupt Process์˜ ๋Œ€ํ•œ ์ดํ•ด์™€ External Interrupt Register๋ฅผ ์ด์šฉํ•œ ์„ค๋ช… ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ด 4๊ฐ€์ง€์˜ mode๊ฐ€ ์žˆ๋‹ค. Low, Rising, Falling, Change Atmega2560์€ 8๊ฐœ์˜ External Interrupt๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์šฐ์„  ์ˆœ์œ„(Priority)์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค. External Interrupt์˜ ์‚ฌ์šฉ ์กฐ๊ฑด Status Register์˜ 7๋ฒˆ์งธ I๋น„ํŠธ๋ฅผ '1'๋กœ Enableํ•œ๋‹ค. ํ•ด๋‹น External Interrupt Mask Register๋ฅผ "1"๋กœ Enableํ•œ๋‹ค. External Interrupt๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ Interrupt Vector๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• External Interrupt Flag Registe.. 2022. 9. 12.
WebFlux๋Š” ๋ฌด์—‡์ด๊ณ , ์™œ ๋‚˜์™”๊ณ , ์–ธ์ œ ์“ฐ์ด๋Š”๊ฐ€? ์–ด์ œ Cart API ์ฝ”๋“œ ๋ฆฌํŒฉํ„ฐ๋ง์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ณ , ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด PR์„ ์˜ฌ๋ ธ๋‹ค.ํด๋ฆฐ ํ•œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ๋ทฐ์–ด๋‹˜์ด ์ฃผ์‹  ์˜๊ฒฌ์„ ๋˜๋‡Œ๊ณ , ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ํ•˜๋ฃจ ์ข…์ผ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ๋…ธ๋ ค๋ณด๋ฉฐ ํด๋ž˜์Šค ๊ฐ„ ์ฑ…์ž„์„ ๋‚˜๋ˆ„์–ด ๋ณด์•˜๋‹ค. ๋นจ๋ฆฌ ์„ฑ์žฅํ•˜๊ณ  ์‹ถ๋‹ค!!๋ฆฌ๋ทฐ๋ฅผ ์•ž๋‘๊ณ , ์นด์นด์˜คํŽ˜์ด๋ฅผ ์ด์šฉํ•œ ๋„๋ฉ”์ธ ์ฝ”๋“œ๋“ค์„ ๋ฆฌํŒฉํ„ฐ๋ง ํ•˜๊ธฐ ์•ž์„œ, ๊ธฐ์กด์— ์™ธ๋ถ€ API์™€ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋˜ ํ…œํ”Œ๋ฆฟ์ธ RestTemplate์˜ ๋Œ€์ฒด ์—ฌ๋ถ€์— ๋Œ€ํ•ด ๋– ์˜ฌ๋ž๋‹ค.RestTemplate์€ deprecated ๋˜์—ˆ์œผ๋ฏ€๋กœ, WebClient์˜ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ•ด๋ณด๋ผ๋Š” ์˜๊ฒฌ์„ ๋ฐ›์•˜๋‹ค.WebClient์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋‹ค๊ฐ€ ๋™๊ธฐ/๋น„๋™๊ธฐ, ๋ธ”๋กœํ‚น/๋…ผ๋ธ”๋กœํ‚น์ด๋ผ๋Š” ๊ฐœ๋…์˜ ์ •์˜์— ๋Œ€ํ•ด ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๋‚˜์•„๊ฐ€ WebFlux.. 2022. 8. 31.
๊ฐ์ฒด ๊ฐ„ ๋งคํ•‘์„ ์œ„ํ•œ MapStruct ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ Dto Entity๋ฅผ ๋งคํ•‘ํ•  ๋•Œ model mapper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์„ฑ๋Šฅ ์ƒ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๋งŽ์ด๋“ค ์ถ”์ฒœํ•˜๋Š” Map Struct๋ฅผ ์‚ฌ์šฉํ•ด๋ดค๋‹ค. ์ ์šฉํ•˜๋ฉด์„œ ์ž์ž˜ํ•œ ๋ฌธ์ œ๋“ค์ด ์žˆ์—ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ๊ฒช์€ ๋ฌธ์ œ์ ๋“ค์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค. https://mapstruct.org/documentation/dev/reference/html/ MapStruct 1.5.2.Final Reference Guide If set to true, MapStruct in which MapStruct logs its major decisions. Note, at the moment of writing in Maven, al.. 2022. 8. 29.
Spring Security [2] - ์˜ˆ์™ธ ์ฒ˜๋ฆฌ AuthenticationEntryPoint & AccessDeniedHandler ์„œํ๋ฆฌํ‹ฐ๋ฅผ ๋„์ž…ํ•˜๋ฉฐ ์ธ์ฆ, ์ธ๊ฐ€์˜ ๊ณผ์ •์„ ๋งˆ์ณค๋‹ค. ์ด์ œ ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ์ž‘์—…์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์— ๋Œ€ํ•ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ํ•œ ๊ฐ€์ง€ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์Šคํ”„๋ง ์„œํ๋ฆฌํ‹ฐ๋Š” ํ•„ํ„ฐ์— ๊ธฐ๋ฐ˜ํ•œ ์ฒด์ด๋‹ ๊ตฌ์กฐ์ด๋ฏ€๋กœ, ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ์š”์ฒญ์ด ๋„๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, @ExceptionHandler๋ฅผ ํ†ตํ•œ ํŽธํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค. ์ง์ ‘ Try - catch๋กœ ์žก์•„์„œ ์‘๋‹ต์„ ๋‚ด๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ• ๋ฐ–์—” ์—†๋‹ค. ํ•˜์ง€๋งŒ, ์Šคํ”„๋ง ์„œํ๋ฆฌํ‹ฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ—ˆ์ˆ ํ•˜์ง„ ์•Š๋‹ค. ์„œํ๋ฆฌํ‹ฐ ํ•„ํ„ฐ ์ฒด์ธ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋งˆ์ง€๋ง‰ ์ฆˆ์Œ์— ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•„ํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” AuthenticationEntryPoint์™€ AccessDeniedHandler๋ฅผ ๊ตฌํ˜„ํ•ด ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ๊ณผ์ •์—์„œ ์ผ์–ด๋‚œ ์˜ˆ์™ธ์— ๋Œ€.. 2022. 8. 21.
Spring Security [1] - JWT๋ฅผ ์ด์šฉํ•œ REST API ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ธฐ์กด ์ธ์ฆ์€ JWT๋ฅผ ์ด์šฉํ•œ ํ•„ํ„ฐ๋กœ, ์ธ๊ฐ€๋Š” ์ธํ„ฐ์…‰ํ„ฐ๋กœ ์• ๋…ธํ…Œ์ด์…˜์„ ์ •์˜ํ•ด ์†์ˆ˜ ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค. ์ด๋ฒˆ์— ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•˜๋ฉด์„œ, ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆ ๊ด€๋ จ ํ”„๋ ˆ์ž„์›Œํฌ์ธ ์„œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž๋Š” ๊ฒฐ์ •์„ ๋‚ด๋ ค ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์–ด๋ ต๋‹ค๊ณ ๋Š” ์–ผํ• ๋“ค์—ˆ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ค„ ๋ชฐ๋ž๋‹ค. ์—ฌ๋Ÿฌ ๋ธ”๋กœ๊ทธ๋“ค์„ ์ฐธ์กฐํ•˜๊ณ , ์ž˜ ์ฝํžˆ์ง€๋„ ์•Š๋Š” ๊ณต์‹๋ฌธ์„œ๋“ค์„ ๋ณด์•„๋„ ๋„๋ฌด์ง€ ์ดํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š์•˜๋‹ค. ์ผ๋‹จ ๋จธ๋ฆฟ์†์— ๊ทธ๋ ค์ ธ์•ผ ๊ฐ์ด ์žกํžˆ๋Š”๋ฐ, ์ด๊ฑด ๋ญ ํ•„ํ„ฐ๋„ ์—ฌ๋Ÿฌ ๊ฐœ์ด๋ฉฐ ๊ตฌํ˜„์ฒด๋„ ์™œ ์ด๋ ‡๊ฒŒ ๋งŽ์€์ง€ ๊ทธ์— ๋งž๋Š” ์ฑ…์ž„๊ณผ ์—ญํ• ์ด ๋„์ €ํžˆ ๊ฐ์ด ์˜ค์ง€ ์•Š๋Š”๋‹ค. ์ „๋ถ€ ์ถ”์ƒํ™” ๋˜์–ด ์žˆ์–ด ์ปค์Šคํ…€ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ํŽธํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๋Š”๋ฐ, ์ „๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๊ธฐ์—” ์‰ฝ์ง€ ์•Š๊ธฐ๋„ ํ•˜๊ณ  ๋”ฐ๋กœ ๊ณต๋ถ€๊ฐ€ ํ•„์š”ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ฑฐ์ง„ 1์ฃผ ๋ฐ˜์ด ๋„˜์–ด์„œ์•ผ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ ์ž.. 2022. 8. 18.
DB ์ˆ˜์ • & jpa ์„ธํŒ… ํ”„๋กœ์ ํŠธ์˜ ์ „๋ฐ˜์ ์ธ ๋ฆฌํŒฉํ„ฐ๋ง์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉฐ, ๊ธฐ์กด mybatis๋ฅผ ์ด์šฉํ–ˆ๋˜ ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ฒจ์™”๋‹ค. ํ•˜์ง€๋งŒ SQL Mapper๋ฅผ ์ด์šฉํ•œ ์„ค๊ณ„ ํŠน์„ฑ์ƒ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ์˜ ์ž‘์„ฑ์ด ์–ด๋ ค์› ๊ณ , ๋˜ ๊ธฐ์กด DB ์„ค๊ณ„์˜ ๋ฌธ์ œ๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. DB์˜ ์ „๋ฐ˜์ ์ธ ์ˆ˜์ •๊ณผ ๋”๋ถˆ์–ด, JPA๋ฅผ ์ด์šฉํ•ด ๋‹ค์‹œ ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •์„ ๋‚ด๋ ธ๋‹ค. ๊ทธ ์ˆ˜์ •๊ณผ์ •๊ณผ JPA ์„ธํŒ… ๋ฐฉ๋ฒ•์„ ๋‚˜์—ดํ•ด๋ณด๊ฒ ๋‹ค. https://github.com/GroovyArea/My-ChickenBreast-Shop GitHub - GroovyArea/My-ChickenBreast-Shop: shop api with spring boot shop api with spring boot . Contribute to GroovyArea/My-ChickenB.. 2022. 8. 8.
์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง [1] ์ง€๋‚œ 1์ฃผ์ผ๊ฐ„ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ ๋ฆฌํŒฉํ„ฐ๋ง์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ์•„ํ‚คํ…์ฒ˜ ๋ถ€๋ถ„ ์„ค๊ณ„๋ฅผ ๊ฑฐ์˜ 2, 3์ผ์€ ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์•„์ง ์ˆ˜์ •์ด ํ•„์š”ํ•˜๊ฒ ์ง€๋งŒ, ํ•ญ์ƒ ๊ณ ๋ฏผํ•ด๋ณด์ž. ๊ธฐ์กด ํ”„๋กœ์ ํŠธ๋Š” multi module๋กœ ์ง„ํ–‰ํ–ˆ์ง€๋งŒ, ์™„๋ฒฝํ•œ ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ํ”„๋กœ์ ํŠธ ์ด์ง„ ์•Š์•˜๋‹ค. ๋ชจ๋†€๋ฆฌํ‹ฑ์œผ๋กœ ๊ฐˆ์ง€, MSA๋ฅผ ๊ณ ๋ คํ•ด ๋ชจ๋“ˆ๊ฐ„ ๋ถ„๋ฆฌ๋ฅผ ํ• ์ง€๊ฐ€ ๊ณ„์† ๊ณ ๋ฏผ๋œ๋‹ค.. ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด ๋ชจ๋“ˆ, ํŒจํ‚ค์ง€๊ฐ„ ์˜์กด์„ฑ ๋ถ„๋ฆฌ๋ฅผ ํ‹ˆํ‹ˆ์ด ๊ณ ๋ คํ•ด๋ด์•ผ๊ฒ ๋‹ค. ๊ธฐ์กด ์ž‘์„ฑ ์ฝ”๋“œ๋ฅผ ์˜ฎ๊ธฐ๋ฉฐ ์กฐ๊ธˆ ๋” ํด๋ฆฐํ•œ ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ๋กœ ๋ฆฌ๋ทฐ์–ด๋‹˜์˜ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ์ˆ˜์ •ํ•ด๋‚˜๊ฐ”๋‹ค. ๋งŽ์ด ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ ๋ถ€๋ถ„์—์„œ๋„ ํ—›์ ์ด ์žˆ์—ˆ๊ณ , ์ „ํ˜€ ์•Œ์ง€ ๋ชปํ–ˆ๋˜ ๋””ํ…Œ์ผํ•œ ๋ถ€๋ถ„๋„ ์•Œ์•„๋‚˜๊ฐ€๋Š” ์ค‘์ด๋‹ค. ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ๋ถ€๋ถ„์€ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์†์ˆ˜ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ, ์ด๋ฒˆ์—๋Š” Spring Security.. 2022. 8. 3.
๋ฆฌํŒฉํ† ๋ง ๊ณ„ํš ์˜ค๋žœ๋งŒ์— ๋ธ”๋กœ๊ทธ์— ๊ธ€์„ ์“ด๋‹ค. ์ง€๋‚œ ๋ฉฐ์น  ๋™์•ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด AWS ๋ง๊ตฌ์„ฑ์„ ํ•˜๊ณ , ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋ฉฐ ๋ฐฐํฌ๊นŒ์ง€ ์‹œ์ผฐ๋‹ค. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์•ž๋‘๊ณ , ์ข‹์€ ๊ธฐํšŒ๋ฅผ ์–ป์–ด ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ฒฐ๋ก ์€, ์ด ์ƒํƒœ๋กœ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ์—†์„ ์ •๋„๋กœ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋งŽ์•˜๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉฐ ์•„์‰ฌ์šด ์ฝ”๋“œ ์ž‘์„ฑ ๋ถ€๋ถ„๋„ ๋งŽ์•˜๊ณ , ๊ถ๊ธˆ์ฆ๋„ ๋งŽ์•˜์ง€๋งŒ, ๋‚˜๋จธ์ง€ ์ฃผ๊ด€์ ์ธ ํŒ๋‹จํ•˜์— ๊น”๋”ํ•œ ๋ถ€๋ถ„์€ ๋‚˜๋ฆ„ ๊ดœ์ฐฎ๊ฒŒ ์ž‘์„ฑ์„ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค. ์•„์ง ๊ณ ์น ๊ฒŒ ๋งŽ์•˜๊ณ , ๋ฐฐ์šธ๊ฒŒ ๋งŽ์•˜๊ณ , ๋ชฐ๋ž๋˜ ๊ฒƒ์ด ๋งŽ์€ ๋‚˜์˜€๋‹ค. ์ด๋Ÿฐ ๋ฆฌ๋ทฐ๋ฅผ ๋“ค์„ ๋•Œ๋งˆ๋‹ค ๋‚˜๋Š” ์•„์ง ํ•œ์ฐธ ๋ฉ€์—ˆ๊ตฌ๋‚˜. ๊ณต๋ถ€ ๊ธฐ๊ฐ„ ๋Œ€๋น„ ๋งŽ์€ ์„ฑ์žฅ์„ ๊ฑฐ๋‘์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ์š•์‹ฌ์ด ๋งŽ์€ ๊ฑด์ง€. ์‚ฌ์‹ค์€ ๊ธฐ๊ฐ„ ๋Œ€๋น„ ์„ฑ์žฅ์น˜๊ฐ€ ํ‰๊ท ์น˜์˜€๋˜ ๊ฑด์ง€. ๋ฌด๊ธฐ ํ•ด์ง„๋‹ค. ๋„ˆ๋ฌด ๊ธ‰ํ•œ๊ฐ€? ๊ทธ๋Ÿผ์—๋„.. 2022. 7. 28.
AWS [Cloud] ๊ด€๋ จ ์šฉ์–ด ์ •๋ฆฌ ์ตœ๊ทผ์— AWS ๋ง๊ตฌ์„ฑ๋„๋ฅผ ๊ทธ๋ ธ๋‹ค. ์ธํ”„๋ผ ๊ด€๋ จํ•ด์„œ ๋ชจ๋ฅด๋Š” ์šฉ์–ด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•˜๋‹ค. ์ „๋ฐ˜์ ์ธ ์ธํ”„๋ผ ๊ตฌ์„ฑ์˜ ์ดํ•ด๋Š” CS ์ง€์‹์ด ํ•„์ˆ˜์ ์œผ๋กœ ์š”๊ตฌ ๋˜๊ธฐ๋„ ํ•˜๊ณ , ๋ฉด์ ‘ ์งˆ๋ฌธ์—๋„ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ œ๋ถ€ํ„ฐ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ค€๋น„๋ฅผ ํ•ด์•ผ๊ฒ ๋‹ค. ์šฉ์–ด ๊ด€๋ จํ•ด ๊ณต๋ถ€๊ฐ€ ํ•„์š”ํ•ด ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜๋‹ค. ๊ณ ๊ฐ€์šฉ์„ฑ (HA) High Avalablity ์‹œ์Šคํ…œ์ด ํ•ญ์ƒ ๋™์ž‘ํ•˜๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ž๋™์œผ๋กœ ๋ณต๊ตฌํ•˜์—ฌ ์‹œ์Šคํ…œ ์ค‘์ง€๋ฅผ ์ตœ์†Œํ™”ํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ฒƒ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋น ๋ฅธ ์‹œ๊ฐ„๋‚ด์— ๋ณต๊ตฌํ•œ๋‹ค. ์„œ๋ฒ„๋‚˜ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์˜ ์ „๋ฐ˜์ ์ธ ์‹œ์Šคํ…œ์ด ์˜ค๋žซ๋™์•ˆ ์ง€์†์ ์œผ๋กœ ์šด์˜์ด ๊ฐ€๋Šฅํ•œ ์„ฑ์งˆ. ๋‚ด๊ฒฐํ•จ์„ฑ, ์žฅ์• ๋‚ด๊ตฌ์„ฑ ํ•˜๋“œ์›จ์–ด์ ์ธ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ธฐ๋Šฅ. ์žฅ์•  ์ƒํ™ฉ์—๋„ ์„œ๋น„์Šค๋ฅผ ์ง€์†์ ์œผ๋กœ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ ํ™•์žฅ์„ฑ ์„œ๋ฒ„๋‚˜ ์‹œ์Šคํ…œ์˜ .. 2022. 7. 16.
๋ฐ˜์‘ํ˜•