redis12 [๋น ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๋ถ์์ ์ํ NoSQL & Redis] Chapter 6 - Redis Cluster ์์คํ & ๋ก๊ทธ ๋ชจ๋ํฐ๋ง 6.1 ๋ณต์ & ๋ถ์ฐ ์์คํ ๊ฐ์ ์์ ๊ณต์ ์๋ฒ ์์ ์ ํ์ , ๊ณผ๋ถํ ์ ๋ค๋ฅธ ์๋ฒ ์์ ํ์ฉ์ผ๋ก ํจ์จ์ฑ ์ฆ๊ฐ ์ฑ๋ฅ ํฅ์ ๊ณผ๋ถํ ๋ฐ์ ์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ํตํด ์์ ๋ถ๋ฐฐ ๊ฐ๋ฅ ์์ ์ฑ ๋ณต์ ์๋ฒ๋ก ์ฅ์ ๋์ฒดํ์ฌ ์๋ ๋ฐ์ดํฐ ์ฐธ์กฐ ๊ฐ๋ฅํด ์ํ ๋ถ์ฐ ๊ฐ๋ฅ Redis: ๋ง์คํฐ-์ฌ๋ ์ด๋ธ, ๋ง์คํฐ-์ฌ๋ ์ด๋ธ-์ผํฐ๋, ํํฐ์ ํด๋ฌ์คํฐ๋ก ๋ณต์ , ๋ถ์ฐ์ฒ๋ฆฌ ๊ฐ๋ฅ Partition ์ ํ ๋ฒ์ ํํฐ์ (Range Partition) Key-Value๋ฅผ ์๋ฒ์ ๋ถ์ฐ ์ ์ฅ ์๋ฒ ๋์ ๊ฒฐ์ ์ ๋ฐ๋ผ ์ ์ฅ ์์น ๊ฒฐ์ ์๋ฒ์ ์ ์ฅํ ๋ฐ์ดํฐ ์ ๋ถ๊ท ํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ ํด์ ํํฐ์ (Hash Partition) Hash ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฐ์ดํฐ ๋ถ์ฐ ์ ์ฅ Partition ๊ตฌํ ๋ฐฉ๋ฒ Client Side Partitioning ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ ๋ถ.. 2023. 8. 20. [๋น ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๋ถ์์ ์ํ NoSQL & Redis] Chapter 5 - Redis ์ํคํ ์ฒ 5.1 Redis ์ํคํ ์ฒ 1. ๋ฉ๋ชจ๋ฆฌ ์์ญ Resident Area ์ฌ์ฉ์์ ์์ ์ด ๋จผ์ ์ ์ฅ๋๋ ์์ญ ์ค์ ์์ ์ํ ๊ณต๊ฐ "WorkingSet" ์์ญ์ผ๋ก๋ ํํ Data Structure ์ํ ์ ๋ณด ์ ์ฅ์ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ Redis Server ์ด์ ๋ฐ ๋ชจ๋ํฐ๋ง์ ํ์ 2. ํ์ผ ์์ญ AOF ํ์ผ ์ค์ํ ๋ฐ์ดํฐ ์ง์ ์ ์ฅ ์ค๋ ์ท ๋ฐ์ดํฐ DUMP ํ์ผ ์๋ ๋ฐ์ดํฐ ์ผ์์ ์ ์ฅ 3. ํ๋ก์ธ์ค ์์ญ Server Process Redis ์ธ์คํด์ค ๊ด๋ฆฌ ๋ฐ ์ฌ์ฉ์ ์์ ์ํ 4๊ฐ์ ๋ฉํฐ ์ฐ๋ ๋๋ก ๊ตฌ์ฑ Main thread, Sub thread 1(BIO-Close-File), Sub thread 2(BIO-AOF-Resync), Sub thread 3(BIO-Lazy-Free) Client Process .. 2023. 8. 20. [๋น ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๋ถ์์ ์ํ NoSQL & Redis] Chapter 4 - Redis Data Modeling 4.1 ํค-๋ฐธ๋ฅ(Key-Value) ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๊ฐ๋ 4.1.1 ์ฉ์ด ์ค๋ช ํ ์ด๋ธ(Table): ๊ด๊ณํ DB์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ํ ์ด๋ธ(table)์ด๋ผ๊ณ ํํํ๋ ๊ฒ์ฒ๋ผ Key-Value DB์์๋ ํ ์ด๋ธ(Table)์ด๋ผ๊ณ ํจ. ํ๋(Field) ๋๋ ์๋ฆฌ๋จผํธ(Element): ํ๋์ ํ ์ด๋ธ์ ๊ตฌ์ฑํ๊ณ ์๋ ์์๋ค์ ๊ด๊ณํ DB์์๋ ์ปฌ๋ผ(column)์ด๋ผ๊ณ ํ๋๋ฐ Key-Value DB์์๋ ํ๋(Field) ๋๋ ์๋ฆฌ๋จผํธ(Element)๋ผ๊ณ ๋งํจ. Key-Value DB์์๋ ํ๋์ Key์ ํ๋ ์ด์์ ํ๋ ๋๋ ์๋ฆฌ๋จผํธ๋ก ๊ตฌ์ฑ๋จ. Key-Value DB์์๋ ์ ์ฝ ์กฐ๊ฑด ๊ธฐ๋ฅ์ด ์ ๊ณต๋์ง ์์ง๋ง, HyperLogLogs ๋ฐ์ดํฐ ์์ฑ์ ํตํด ์ํ๋ ์กฐ๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ๊ด๋ฆฌํ ์ ์.. 2023. 8. 20. [๋น ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๋ถ์์ ์ํ NoSQL & Redis] Chapter 3 - ํธ๋์ญ์ ์ ์ด & ์ฌ์ฉ์ ๊ด๋ฆฌ 3.1 Isolation & Lock ๋ชจ๋ NoSQL ์ ํ์ด ํธ๋์ญ์ ์ ์ ์ดํ์ง๋ ์์ง๋ง, Redis๋ ํธ๋์ญ์ ์ ์ด ๊ฐ๋ฅ. Redis๋ Read Commited ํ์ ์ ํธ๋์ญ์ ์ ์ด๋ ๊ฐ๋ฅํจ. Redis 4.0 ๋ฒ์ ์์ Data Sets ๋ฝ ๋งค์ปค๋์ฆ ์ ๊ณต. 3.2 CAS (Check and Set) CAS๋ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๊ณต์ ๋ฅผ ์ํ ๊ธฐ์ ๋ก ๋์ ์ฒ๋ฆฌ ์ ์ถฉ๋์ ํผํจ. Watch ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ถฉ๋ ๊ฐ์ง ๊ฐ๋ฅ. 3.3 commit & rollback EXEC: ๋ณ๊ฒฝํ ๋ฐ์ดํฐ ์ต์ข ์ ์ฅ์ ์ฌ์ฉ. DISCARD: ๋ณ๊ฒฝํ ๋ฐ์ดํฐ ์ต์ข ์ ์ฅํ์ง ์๊ณ ์ทจ์. 3.4 Index ์ ํ ๋ฐ ์์ฑ Redis๋ Primary Key Index์ Secondary Key Index๋ฅผ ์ ๊ณต. Exact Match์ Ra.. 2023. 8. 20. [๋น ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๋ถ์์ ์ํ NoSQL & Redis] Chapter 2 - Redis ์ค์น ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ Redis์ ์ฃผ์ ํน์ง Redis๋ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ถ๋ฅ๋๋ฉฐ Key-Value ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. Key-Value DB์ธ ๋์์ In-Memory ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ ์ฅ ๊ธฐ์ ์ ์ ๊ณตํ๋ฏ๋ก ๋น ๋ฅธ Read/Write ์ฑ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ค์ํ ๋ฐ์ดํฐ ์ ํ์ ์ง์ํ๋ฉฐ String, Set, Sorted Set, Hash, List, HyperLogLogs ๋ฑ์ ์ ์ฅํ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฐ์ดํฐ๋ฅผ Dump ํ์ผ๊ณผ AOF(Append Of File) ๋ฐฉ์์ผ๋ก ๋์คํฌ์ ์ ์ฅํ ์ ์์ต๋๋ค. Master/Slave Replication์ ํตํด ๋ฐ์ดํฐ์ ๋ถ์ฐ ๋ณต์ ๋ฅผ ์ง์ํ๋ฉฐ Query Off Loading์ ํตํด Master๋ Read/Write ์์ , Slave๋ Read ์์ ์ ์ํํ .. 2023. 8. 20. [๋น ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๋ถ์์ ์ํ NoSQL & Redis] Chapter 1 - NOSQL ๊ฐ๋ Chapter1 - NOSQL ๊ฐ๋ NOSQL Not Only SQL ๊ธฐ์กด SQL ๋ฟ๋ง ์๋๋ผ, SQL ์ด ํ ์ ์๋ ์์ญ์ ๊ธฐ์ ๋ ์ ๊ณตํ๋ ๋์ฒด, ๋ณด์ ๊ธฐ์ ์ฅ์ ํด๋ผ์ฐ๋ ์ปดํจํ ํ๊ฒฝ์ ์ ํฉํ๋ค. RDBMS ์ ๋นํด ๋น์ฉ ๋ฐ ์ฑ๋ฅ ์ง์ฐ ๋ฌธ์ ์ ์ ํฉ ๊ตฌ์ถ ๋จ๊ณ์ ๋น์ฉ ๋ฐ์์ด ๋ํ๋ค. ์ ์ฐํ ๋ฐ์ดํฐ ๋ชจ๋ธ RDBMS ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ค๊ณํ๊ธฐ ์ํด ํ์ํ ์ ์ ๊ฐ๋ ๋ค์ด ๋ง๋ค. ๋น์ ํ ๊ตฌ์กฐ์ธ ์ปฌ๋ ์ , ํ ์ด๋ธ, ๋ ธ๋๋ ๊ตฌ์ฒด์ ์ด๊ณ ๊น๋ค๋กญ์ง ์๊ธฐ ๋๋ฌธ์, ์ค๊ณํ๊ธฐ ์ฝ๋ค. ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํจ๊ณผ์ RDBMS ๋ณด๋ค ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํจ๊ณผ์ ์ด๋ค. ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ๋์ํ๊ธฐ ์ํด ๋์จ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๊ธฐ ๋๋ฌธ. NOSQL ์ข ๋ฅ์ ์ ์ ๊ธฐ์ค ์์ฐจ์ ์ผ๋ก ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉฐ ์ ์ ๊ธฐ์ค์ ์ธ๋ถํํ๋ค. 1. ์ด๋น 5๋ง๊ฑด ์ด์์ ๋ฐ์ดํฐ๊ฐ ๋ฐ.. 2023. 7. 23. [๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด] 6์ฅ ํค-๊ฐ ์ ์ฅ์ ์ค๊ณ ํค-๊ฐ ์ ์ฅ์ ์ค๊ณ ํค-๊ฐ ์ ์ฅ์๋ ํค-๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ๋น ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค. ์ด ์ ์ฅ์์ ์ ์ฅ๋๋ ๊ฐ์ ๊ณ ์ ์๋ณ์๋ฅผ ํค๋ก ๊ฐ์ ธ์ผํ๋ค. ํค์ ๊ฐ ์ฌ์ด์ ์ด๋ฐ ์ฐ๊ฒฐ๊ด๊ณ๋ฅผ “ํค-๊ฐ” ์์ด๋ผ๊ณ ์ง์นญํ๋ค. ํค-๊ฐ ์์์์ ํค๋ ์ ์ผํด์ผ ํ๋ฉฐ ํด๋น ํค์ ๋งค๋ฌ๋ฆฐ ๊ฐ์ ํค๋ฅผ ํตํด์๋ง ์ ๊ทผํ ์ ์๋ค. ํค๋ ์ผ๋ฐ ํ ์คํธ์ผ ์๋ ์๊ณ ํด์๊ฐ์ผ์๋ ์๋ค. ์ฑ๋ฅ์์ ์ด์ ๋ก ํค๋ ์งง์์๋ก ์ข๋ค. ํค-๊ฐ ์์์์ ๊ฐ์ ๋ฌธ์์ด์ผ ์ ๋ ์๊ณ ๋ฆฌ์คํธ์ผ ์๋ ์๊ณ ๊ฐ์ฒด์ผ ์๋ ์๋ค. ํค-๊ฐ ์ ์ฅ์๋ ๋ณดํต ๊ฐ์ผ๋ก ๋ฌด์์ด ์ค๋ ์๊ดํ์ง ์๋๋ค. ํค-๊ฐ ์ ์ฅ์๋ก ๋๋ฆฌ ์๋ ค์ง ๊ฒ์ผ๋ก๋ ์๋ง์กด ๋ค์ด๋๋ชจ, memcached, ๋ ๋์ค ๊ฐ์ ๊ฒ๋ค์ด ์๋ค. ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ์๋ฒฝํ ์ค๊ณ๋ ์๋ค. ์ฝ๊ธฐ, ์ฐ๊ธฐ ๊ทธ๋ฆฌ๊ณ .. 2023. 2. 28. [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. 2022.05.26 ใํธ๋ํฝ์ด ๋ชฐ๋ ธ์ ๊ฒฝ์ฐใ ์ด๋ฉ์ผ์ ํตํด ์ธ์ฆ ๋ฒํธ๋ฅผ ์ ์กํ๋ ๋ฐฉ์์ ๋งค์ฐ ๋๋ฆฌ๋ค. ์๋ฒ ์ฌ์ฉ์๊ฐ ๋์ด๋ ์๋ก ํธ๋ํฝ์ด ๋ง์ด ๋ชฐ๋ ค ์ธ์ฆ ๋ฒํธ๋ฅผ ์ ์กํ๋ ์๊ฐ์ด ๋ฌด์ง์ฅ ๋์ด๋ ๊ฒ์ด๋ค. ์ด๋ฌ๋ฉด ์ ๋๋ค. ๊ทธ๋์ ์ฐพ์๋ณด์๋ค. ํธ๋ํฝ์ด ๋ชฐ๋ ธ์ ๊ฒฝ์ฐ์๋ ์ด๋ค ์์ผ๋ก ํด๊ฒฐ์ ํ๋์ง? ๋๊ธฐ์ ๋น๋๊ธฐ ๋ฐฉ์์ด ์๋ค. ๋๊ธฐ๋ ์ฒซ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋์ด์ผ ๋ค์ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ๋ ๋ฐฉ์์ด๊ณ , ์๋ฃ ์ฌ๋ถ์ ์๊ด์์ด ๋ค์ ํ๋ก์ธ์ค๋ฅผ ์์ฒญํ๊ฑฐ๋ ์คํํ๋ ๊ฒ์ด ๋น๋๊ธฐ ๋ฐฉ์์ด๋ค. ์ด๋ฉ์ผ ์ ์ก์ ์ด ๋น๋๊ธฐ ๋ฐฉ์์ ์ ์ฉํด ๋ณด๊ณ ์ ํ๋ค. Async Config ์คํ๋ง์์๋ @Async๋ฅผ ํตํด ๋น๋๊ธฐ ๋ฐฉ์์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค. configuration์ ํตํด ์ค๋ ๋์ ๊ฐ์๋ฅผ ์ปค์คํฐ ๋ง์ด์ง ์์ผฐ๋ค. Async ์ ์ฉ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋์ํ๊ธธ ๋ฐ๋ผ๋ ๋ฉ์๋์ ์ ๋ ธํ ์ด์ ์ ์ .. 2022. 5. 26. 2022.05.25 ใEmail ์ธ์ฆใ ์ด์ฌํ ํ๋ก์ ํธ๋ฅผ ํ๋ค๊ฐ ์ด๊ธฐ ๊ตฌ์ํ wiki๋ฅผ ๋ค์ ๋ณด๊ฒ ๋์๋ค. ํ์๊ฐ์ ์ ์ด๋ฉ์ผ api๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ๋๋ฐ ๊ทธ๊ฑธ ๊น๋จน์๋ค.. ๊ทธ๋์ ํ์๊ฐ์ ์ ๋ค์ ๊ฑด๋๋ฆฌ๊ฒ ๋์๋ค. Java์ MailSender ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ SMTP ๊ตฌ๊ธ ์ด๋ฉ์ผ๋ก ์ด๋ฉ์ผ ์ธ์ฆ ๋ฒํธ๋ฅผ ํด๋ผ์ด์ธํธ ์์ฒญ ์ด๋ฉ์ผ๋ก ๋ณด๋ด์ฃผ๋๋ก ์ค๊ณํ๊ณ ์ธ์ฆ ๋ฒํธ๋ฅผ redis DB์ ์ ์ฅํ์ฌ ๋น๊ตํ๊ณ ํ์๊ฐ์ ์ ์ด๋ฃจ๊ฒ ํ ๊ฒ์ด๋ค. Mail Sender // Mail implementation 'org.springframework.boot:spring-boot-starter-mail' ๋จผ์ ์์กด์ฑ์ ์ถ๊ฐํ๋ค. Application.yml ์ง๊ธ๊น์ง Properties ํ์ผ์ ์ฌ์ฉํ๊ณ ์์๋๋ฐ, ์ด๋ฒ ๊ธฐํ์ yaml์ ์ฌ์ฉํด๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. ์ด์ ๋ ์ธ.. 2022. 5. 25. ์ด์ 1 ๋ค์ ๋ฐ์ํ