๐ Spring Framework/Spring Project45 OutBox Pattern ์ ํ์ฉํ ๋ฉ์ผ ์ ์ก ์๋น์ค ๊ฐ๋ฐ [At Least Once] ์คํ๋ง์์ ๋ฉ์ผ ์ ์ก์ ์ ๋ง ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค. JavaMailSender ๋ก ๋ง์ด์ผ. ๋จ์ํ, ๋ฉ์ผ๋ง ์ ์กํ๋ ํจ์๋ง ๊ตฌํํ๋ฉด ๋์ผ๊น? ๋ฌผ๋ก ์ํฉ์ ๋ฐ๋ผ ๊ฐ๋จํ ๊ตฌํ์ด๋, ๋ณต์กํ ๊ตฌํ์ด ๋๋ ์ ธ์ผ ํ๋ค. ์ค ์๋น์ค์์๋? ๋ฉ์ผ๋ก ์ ์กํด์ผ ํ๋ ๋ฐ์ดํฐ ์ค์๋์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ง๋ง, ์๋ฌด๋๋ ๋ฉ์ผ์ ์์ ํ๋ ํด๋ผ์ด์ธํธ ์ ์ฅ์์๋ ์๋ฒ ์ฅ์ ๋๋ฌธ์, ๋ฉ์ผ ์์ ์ด ์ ๋ ๊ฒฝ์ฐ ๋งค์ฐ ๋นํฉ์ค๋ฌ์ธ ๊ฒ์ด๋ค. ์ฆ, ์ ์ด๋ ํ๋ฒ ์ ์ก (At least once) ๋ฅผ ๋ง์กฑํ๋ Eventually Consistency ๋ฅผ ๊ตฌํํด์ผ ํ๋ ๊ฒ์ ๋ฉ์ผ ์ ์ก ์๋น์ค์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ค์ ธ์ผ ํ ์ฌํญ์ด๋ค. ์ผ๋ก๋ก, ๋ถ์ฐ ์๋ฒ ํ๊ฒฝ์์๋, ์๋ฆผ ์๋น์ค๋ง์ ๋ค๋ฃจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์กด์ฌํ๋๋ฐ, ์ด๋ outbox ํจํด์ด๋ผ๋ ๊ฒ์ ์ฌ์ฉํ์ฌ ๊ตฌ.. 2023. 4. 20. [๋ฆฌํฉํ ๋ง] ๋๋ฉ์ธ ๋ชจ๋ธ ์ค์ฌ Clean Architecture ๋ก์ ๋ฆฌํฉํ ๋ง ํ๋ก์ ํธ๋ฅผ ์๋ ์์ด ๋ฆฌํฉํ ๋งํ๋ค. ๋ณด๋ค ๋ ๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ, ์ ์ง ๋ณด์๊ฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ, ๋ ์์ ๊ฐ์ฒด๋ฅผ ์ํ ์ฝ๋๋ฅผ ๊ณ์ํด์ ๊ณ ๋ฏผํ๊ณ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๋ค. ์ง๋ ๋ฌ๋ถํฐ ํด์ ์ํํธ ์จ์ด ์ํคํ ์ฒ์ ๊ดํด์ ๊ด์ฌ์ด ์๊ฒผ๋ค. ํด๋ฆฐ ์ฝ๋๋ฅผ ์ถ๊ตฌํ๋ค ๋ณด๋ ์์ฐ์ค๋ฝ๊ฒ ์ค๊ณ์ ๊ณ ๋ฏผ์ผ๋ก ๊ท๊ฒฐ๋์๋ค. ์ํฐ๋ ๋ฐฑ์๋ ์ฑ๋ฆฐ์ง๋ฅผ ํ๋ฉฐ ์๊ฒ๋ ํด๋ฆฐ ์ํคํ ์ฒ, ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ ์ฒ ์ ์ ๋ฌธ, ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ก ์์ํ๋ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ์ฝ์ด๊ฐ๋ฉฐ, ๋ด๊ฐ ๊ตฌ์ฑํด์ค๋ ์ํํธ์จ์ด ์ค๊ณ์ ํฐ ์ ํ์ ์ ๋ง์ดํ๊ฒ ๋์๋ค. ๋จ์ํ ์์ ํ๋ก์ ํธ๋ง์ ๋ง๋๋๊ฒ ์๋ ๋ณธ ํ๋ก์ ํธ์ ์ด๋ฅผ ์ ์ฉ์์ผ๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. MSA ๋ ์ค๋ฒ ์์ง๋์ด๋ง์ด๋ผ ํ๋จํ๊ณ , ๋ชจ๋ ธ๋ฆฌ์ค ๊ตฌ์กฐ์ด์ง๋ง ์ต๋ํ ๋๋ฉ์ธ ๋ณ ๋ถ๋ฆฌ๊ฐ ๋ ์์ ๋ฐ์ด๋๋ ์ปจํ .. 2022. 12. 12. [์ด์] Pageable test ๊ด๋ จ ์๋ฌ ๐ก๋ฌธ์ API Controller๋ฅผ ํ ์คํธ ํ๋๋ฐ ์ ์ฑ๊ณตํ๋ ํ ์คํธ๊ฐ ๊ณ์ ์คํจํ๋ค. org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No primary or single unique constructor found for interface org.springframework.data.domain.Pageable ํ ์คํธ ์ฝ๋ mockMvc.perform(get("/api/v2/users") .param("page", String.valueOf(page))) .andExpect(status().isOk()) .andE.. 2022. 11. 23. [Refactor] ํจํค์ง ๊ตฌ์กฐ์ ์์กด์ฑ ๋ ๋ฒ์งธ ํ๋ก์ ํธ์ ์ฝ๋ ์์ฑ์ด ๊ฑฐ์ ๋๋ฌ๊ณ , ํ ์คํธ ์ฝ๋ ์์ฑ์ ์๋๋ฉฐ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์๋ค. ๊ฐ์ฅ ํฐ ๊ณจ์๋ ์๋ฌด๋๋ ์ฐธ์กฐ ๊ด๊ณ์ด๋ค. ํจํค์ง ๊ตฌ์กฐ๋ฅผ Layered์์ ์ฝ๊ฐ์ DDD(์ ๋งคํ์ง๋ง ใ ใ ) ๋ฅผ ๊ณ๋ค์ธ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝํ๋ค. ๊ทธ ๊ณผ์ ์์ ํจํค์ง ๊ฐ ์์กด์ฑ์ ๋ํด์ ๊ณ ๋ฏผํด๋ณด๊ณ ์๋ช ํ๋ ๊ฒ๊ณผ ์ค๊ณํ๋ ์๊ฐ์ด ์ ๋ง ์ค๋ ๊ฑธ๋ ธ๋ค. ์ฝ๋ฉ์ ๊ณต๋ถํ๋ฉด ํ ์๋ก ์์ ๊ฒ์ ์๊ฐ์ ์ค๋ ๋ค์ด๊ฒ ๋๋ ๊ฑธ ๋๋๋ค. ์ด์ ๋ ํจํค์ง ์ด๋ฆ์ ์ง๋๋ฐ ๋ฐ๋์ ์ด ๊ฑธ๋ ธ๋ค. ํ์ฌ์์๋ ๋ณ์๋ช ์ง๋ ๊ฑธ๋ก๋ ํ์๋ฅผ ํ๋ค๊ณ ํ๋ ์ฝ๊ฐ ์ค๊ฐ์ด ๋๊ธฐ๋ ํ๋ค. ์ด๋ ๊ฒ ๋ํ ์ผํ๊ฒ ์ฑ์๋๊ฐ๋ฉด ๊ทธ ๋งํผ ๋ด ์ค๋ ฅ์ด ๋๋ค๊ณ ๋ฏฟ์ต๋๋ค. ์ต์์ ๊ตฌ์กฐ auth : ์ธ์ฆ, ์ธ๊ฐ ์ฒ๋ฆฌ ์คํ๋ง ์ํ๋ฆฌํฐ ์ด์ฉ ์คํ๋ง ์ปจํ ์ด๋๊น์ง ๋๋ฌํ์ง ์๋ ํํฐ ์์ฃผ์ด๊ธฐ ๋๋ฌธ์ .. 2022. 10. 14. [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. ๊ฐ์ฒด ๊ฐ ๋งคํ์ ์ํ 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. 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. ๋ฆฌํฉํฐ๋ง ใAuthentication(์ธ์ฆ)ใ ํ์ด๋์ ์ฒ์ ํ์ฌ์ ์ง์ํ๋ค. ์๋ฅ๋ฅผ ์ฌ๋ฌ ๊ตฐ๋ฐ ๋ฃ์๋ค. ๋ฒ์จ ์๋ฅ ํ๋ฝ๋ง 3๋ฒ์งธ์ด๋ค. ์๋ฅ ํ๋ฝ์ด ์ด๋ฐ ๊ธฐ๋ถ์ด๊ตฌ๋...ใ ใ ํ์ฌ ๊ธฐ์ค์ ๋ถํฉํ์ง ์๋ ๋ด ์ค๋ ฅ๊ณผ ๊ฒฐ๊ณผ๋ฌผ ํ์ด์ง ๋ญ. ๋ ์ด์ฌํ ๋ค๋ฌ์ด์ผ๊ฒ ๋ค. ์๋ฅ๋ฅผ ๋ค๋ฌ๋ค๊ฐ ์ธ์ฆ๊ณผ ์ธ๊ฐ ๊ตฌํ ์ค ์ด์๋ฅผ ์์ฑํ๋ ๋ถ๋ถ์ด ๋์ ๋์๋ค. ์ธ์ฆ๊ณผ ์ธ๊ฐ... ์... ์ธ๊ฐ๋ ์ ๋ ธํ ์ด์ ์ ์ด์ฉํด ์ธํฐ์ ํฐ๋ก ๊ตฌํํ ๋ช ํํ ๊ทผ๊ฑฐ๊ฐ ์์๋ค. ์ธ์ฆ์ ์ข ์ ๋งคํ๋ค. JWT ํ ํฐ์ ์ธ์ฆํ๋ ๋ถ๋ถ์ ๊ตณ์ด ์ธํฐ์ ํฐ๊น์ง ๋๋ฌํ ํ์๊ฐ ์๋ค. ๊ทธ๋์ ์ธ์ฆ ์์ ์ ์ธํฐ์ ํฐ์์ ํํฐ๋ก ๋ฆฌํฉํ ๋ง์ ์งํํ๋ค. ํํฐ(Filter)๋? HTTP ์์ฒญ๊ณผ ์๋ต์ ๊ฑฐ๋ฅธ ๋ค ์ ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. Servlet Container ๋จ์์ ๋์ํ๋ค. ์คํ๋ง ๋ฒ์ ๋ฐ์์ ์ฒ๋ฆฌ๋๋ค. Dispathcer.. 2022. 7. 11. ์คํ๋ง ๋ถํธ ์๋ํ๋ธ(SonarQube) ์ ์ฉ + PostgreSql ๊ฐ์๋ก ์ฝ์ง ์๋ค. ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด ๊ฐ๋ ๊ณผ์ ์์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ถ๋ถ์ ๊ทนํ ์ผ๋ถ ๊ณผ์ ์์ ๊นจ๋ฌ์๋ค. ์คํ๋ ค ์ฝ๋๋ฅผ ์์ฑํ๋ ์๊ฐ์ด ๋ ๊ทธ๋ฆฝ๋ค. ๋ฆฌํฉํฐ๋ง๊ณผ ๊ธฐ์ ์ ์ฉ ๋ฐ ๋ฒ์ ๋ง์ถค ์์ ์ ์๊ฐ์ ๋ ์๋ ์์ฆ์ด๋ค. ํด๋ฆฐ ํ ์ฝ๋๋ฅผ ์ํด ์์ ๋ฆฌํฉํฐ๋ง์ ํ ์ ์์ง๋ง, ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ ๊ฒ์ด ์๋ค๊ณ ํ๋ค. ๋ํ์ ์ผ๋ก SonarQube๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค๊ณ ํ๋๋ฐ ์ด๋ฅผ ์ ์ฉํด ๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค. ์ ๋ง ์ค๋ ๊ฑธ๋ ธ๊ณ , ์ ํํ์ง ์์ ์ ์์ง๋ง ๋๋ฆ๋๋ก ์ ์ฉํ๋ ๊ณผ์ ์ ์ ๋ฆฌํด๋ณด๊ฒ ๋ค. (ํ๋ฆฐ ๋ถ๋ถ์ด ์์ผ๋ฉด ๋ฌดํํ ๋๊ธ ๊ฐ์ฌํ ๋ฐ๊ฒ ์ต๋๋ค!) ์ด๊ฒ์ด ์๋ฃ๋ ํ AWS lightsales, ec2 ์ ์ฉ ์ฌ๋ถ๋ฅผ ํ๋จํด๋ณด์์ผ๊ฒ ๋ค. ์ ์ ๋ถ์ ๋๊ตฌ ์ฝ๋์ ํ์ง์ ๋ํด ๊ณ ๋ คํ ๋ ํ์์ ์ผ๋ก ์ฌ์ฉํ๋ ๋๊ตฌ์ด๋ค. ์ง์์ ์ธ .. 2022. 7. 5. ์ด์ 1 2 3 ๋ค์ ๋ฐ์ํ