์ ์ฒด ๊ธ250 [์ํ์น ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ with ์๋ฐ] 4-2์ฅ ์นดํ์นด ํ๋ก๋์ ์นดํ์นด ํ๋ก๋์ ์นดํ์นด ํ๋ก๋์๋ ํ ํฝ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ฒซ ๋จ๊ณ! acks ์ต์ ํ๋ก๋์์ ์ต์ ์ผ๋ก acks ์ต์ ํ๋ก๋์๊ฐ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ํด๋ฌ์คํฐ์ ์ผ๋ง๋ ์ ๋ขฐ์ฑ ์๊ฒ ์ ์ฅํ ์ง ์ง์ ๊ฐ๋ฅ ์ต์ ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง ์ ์๋ค. acks = 0 ํ๋ก๋์๊ฐ ๋ฆฌ๋ ํํฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ ๋ ๋ฆฌ๋ ํํฐ์ ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์๋์ง ํ์ธ ํ์ง ์๋๋ค ๋ฆฌ๋ ํํฐ์ ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์ดํ, ๋ช ๋ฒ์งธ ์คํ์ ์ ์ ์ฅ๋์๋์ง return ์ด ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ์ฌ๋ถ์ ๋ฐ๋ฅธ ์๋ต์ ๋ฐ์ง ์์. ํ๋ก๋์๋ ๋ฐ์ดํฐ ์ ์ก ์คํจ์, ์ฌ์๋ํ ์ ์๊ฒ, retries ์ต์ ์ค์ ๊ฐ๋ฅ ํ์ง๋ง acks = 0 ์ผ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ ์ ์ก์ ๋ฌด์กฐ๊ฑด ์ฑ๊ณต์ผ๋ก ๊ฐ์ฃผ, ํด๋น ์ต์ ์ ๋ฌด์๋ฏธํ๋ค. ํ๋ก๋์์ ๋ธ๋ก์ปค ์ฌ์ด์ ๋คํธ์ํฌ ์ค๋ฅ.. 2023. 5. 7. [์ํ์น ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ with ์๋ฐ] 4-1์ฅ ํ ํฝ๊ณผ ํํฐ์ ํ ํฝ๊ณผ ํํฐ์ ํ ํฝ์ด ์ฌ๋ผ์ง๋ฉด ์นดํ์นด ํ์ดํ ๋ผ์ธ์ ๋์ํ์ง ์์. ์ ์ ํํฐ์ ๊ฐ์ ํ ํฝ์ ํํฐ์ ์ ๊ฐ์๋ ์นดํ์นด ์ฑ๋ฅ๊ณผ ๋ฐ์ ํ ๊ด๊ณ๊ฐ ์๋ค. ํํฐ์ ์ ๊ฐ์๋ฅผ ์ ์ ํ๊ฒ ์ค์ ํ๊ณ ์ด์ํ์. ํํฐ์ ๊ฐ์๋ฅผ ์ ํ ๋ ๊ณ ๋ คํ ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ๋ฉ์์ง ํค ์ฌ์ฉ ์ฌ๋ถ ๋ธ๋ก์ปค์ ์ปจ์๋จธ์ ์ํฅ๋ ํ์ผ ์์คํ ์ ์ฌ์ฉํ๋ ์นดํ์นด๋, ํํฐ์ ์ ์ ๋งํผ ํ์ผ์ ์ ๊ทผํ๋ค. ์ด์์ฒด์ ํน์ฑ ์ ํ๋ก์ธ์ค ๋น ์ ๊ทผ ๊ฐ๋ฅํ ํ์ผ ๊ฐ์๊ฐ ์ ํด์ ธ ์๋ค. ๋ธ๋ก์ปค๊ฐ ์ ๊ทผํ๋ ํ์ผ ๊ฐ์๋ฅผ ์์ ์ ์ผ๋ก ์ ์งํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋, ์นดํ์นด ๋ธ๋ก์ปค์ ์๋ฅผ ๋๋ฆฌ๋ฉด ๋๋ค. ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๋ฅผ ์ฌ๋ฆฌ์ ์ปจ์๋จธ์ ์ฒ๋ฆฌ๋ ๋๋ฆฌ๊ธฐ ์ปจ์๋จธ๊ฐ ์คํ๋๋ ์๋ฒ๋ฅผ ์ค์ผ์ผ์ GC ํ๋ ์ปจ์๋จธ๋ (S3, ํ๋ก, ์ค๋ผํด ๋ฑ๋ฑ) ์ ์์คํ ๊ณผ ์ฐ๋๋๋ฏ๋ก, ์ผ์ ์์ค ์ฒ๋ฆฌ๋์ ๋์ด๋๋ฐ,.. 2023. 5. 5. OutBox Pattern ์ ํ์ฉํ ๋ฉ์ผ ์ ์ก ์๋น์ค ๊ฐ๋ฐ [At Least Once] ์คํ๋ง์์ ๋ฉ์ผ ์ ์ก์ ์ ๋ง ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค. JavaMailSender ๋ก ๋ง์ด์ผ. ๋จ์ํ, ๋ฉ์ผ๋ง ์ ์กํ๋ ํจ์๋ง ๊ตฌํํ๋ฉด ๋์ผ๊น? ๋ฌผ๋ก ์ํฉ์ ๋ฐ๋ผ ๊ฐ๋จํ ๊ตฌํ์ด๋, ๋ณต์กํ ๊ตฌํ์ด ๋๋ ์ ธ์ผ ํ๋ค. ์ค ์๋น์ค์์๋? ๋ฉ์ผ๋ก ์ ์กํด์ผ ํ๋ ๋ฐ์ดํฐ ์ค์๋์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ง๋ง, ์๋ฌด๋๋ ๋ฉ์ผ์ ์์ ํ๋ ํด๋ผ์ด์ธํธ ์ ์ฅ์์๋ ์๋ฒ ์ฅ์ ๋๋ฌธ์, ๋ฉ์ผ ์์ ์ด ์ ๋ ๊ฒฝ์ฐ ๋งค์ฐ ๋นํฉ์ค๋ฌ์ธ ๊ฒ์ด๋ค. ์ฆ, ์ ์ด๋ ํ๋ฒ ์ ์ก (At least once) ๋ฅผ ๋ง์กฑํ๋ Eventually Consistency ๋ฅผ ๊ตฌํํด์ผ ํ๋ ๊ฒ์ ๋ฉ์ผ ์ ์ก ์๋น์ค์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค๋ค์ ธ์ผ ํ ์ฌํญ์ด๋ค. ์ผ๋ก๋ก, ๋ถ์ฐ ์๋ฒ ํ๊ฒฝ์์๋, ์๋ฆผ ์๋น์ค๋ง์ ๋ค๋ฃจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์กด์ฌํ๋๋ฐ, ์ด๋ outbox ํจํด์ด๋ผ๋ ๊ฒ์ ์ฌ์ฉํ์ฌ ๊ตฌ.. 2023. 4. 20. [์ํ์น ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ with ์๋ฐ] 3-6์ฅ ์นดํ์นด ์ปค๋ฅํธ ์นดํ์นด ์ปค๋ฅํธ๋? ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ ์์ฑ ์ ๋ฐ๋ณต ์์ ์ ์ค์ด๊ณ , ํจ์จ์ ์ธ ์ ์ก์ ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์๋ก, ํ์ดํ๋ผ์ธ ์์ฑ ์, ํ๋ก๋์ | ์ปจ์๋จธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ ๋ง๋ค ์ ์์ง๋ง, ๋ฐ๋ณต ์์ฑ ์์ ์ ๊ฒฝ์ฐ ๊ณ์์ ์ผ๋ก ๋ฐฐํฌ ๋ฐ ์ด์์ด ๋นํจ์จ์ ์ด๋ค. ์ด๋ ์ฌ์ฉํ๋ฉด ์์ฑ ๋ง์ถค Source Connector ํ๋ก๋์ ์ญํ ํ ํฝ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ Sink Connector ์ปจ์๋จธ ์ญํ ํ ํฝ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์ฅํ ๋ ์์๋ก, Mysql ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ์ ์ฅํ ๋ (JDBC ๋ ๋ง์ฐฌ๊ฐ์ง) ์ปค๋ฅํฐ๋ฅผ ์ด์ฉํ์ฌ ํ์ดํ๋ผ์ธ ์์ฑ ๊ฐ๋ฅ ํน์ง ์คํ ์์ค ์ปค๋ฅํฐ๋ ์ปค๋ฅํฐ jar ๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. gradle ์ Mysql connector ๋ฅผ ๋งํ๋๊ฑด๊ฐ? ์ปค๋ฅํฐ๋ฅผ ์ด์ฉํ์ฌ, ํ์ดํ๋ผ์ธ ์์ฑ ์.. 2023. 4. 20. [์ํ์น ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ with ์๋ฐ] 3-5์ฅ ์นดํ์นด ์คํธ๋ฆผ์ฆ ์นดํ์นด ์คํธ๋ฆผ์ฆ ํ ํฝ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ค๋ฅธ ํ ํฝ์ ์ ์ฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์นดํ์นด ํด๋ฌ์คํฐ์ ์๋ฒฝ ํธํ ๋ฐ ์คํธ๋ฆผ ์ฒ๋ฆฌ์ ํ์ํ ํธ๋ฆฌํ ๊ธฐ๋ฅ ์ ๊ณต ์ฅ์ ๋ฐ์ ์ Exactly Once ํ๋๋ก ์ฅ์ ํ์ฉ ์์คํ ์ฅ์ฐฉ => ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ ์ฑ Up. ๊ฐ์ ์คํธ๋ฆผ์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด๋ถ์ ์ผ๋ก 1๊ฐ ์ด์์ ์ค๋ ๋ ์์ฑ ๊ฐ๋ฅ ์ค๋ ๋๋ 1๊ฐ ์ด์์ ํ์คํฌ๋ฅผ ๊ฐ์ง๋ค. ์คํธ๋ฆผ์ฆ์ Task ๋ ์คํธ๋ฆผ์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ฉด ์๊ธฐ๋ ๋ฐ์ดํฐ์ ์ต์ ์ฒ๋ฆฌ ๋จ์ 3๊ฐ์ ํํฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ํ ํฝ์ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ, ์คํธ๋ฆผ์ฆ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ์, ๋ด๋ถ์ 3๊ฐ์ ํ์คํฌ๊ฐ ์๊น. ์นดํ์นด ์คํธ๋ฆผ์ฆ๋ ์คํธ๋ฆผ์ฆ DSL (Domain Specific Language) ๊ณผ ํ๋ก์ธ์ API 2๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ๋ฐ ๊ฐ๋ฅ ์คํธ๋ฆผ์ฆ DSL ์ .. 2023. 4. 13. [์ํ์น ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ with ์๋ฐ] 3.4 ์ฅ ์นดํ์นด ํด๋ผ์ด์ธํธ ์นดํ์นด ํด๋ผ์ด์ธํธ ์นดํ์นด ํด๋ฌ์คํฐ์ ๋ช ๋ น์ ๋ด๋ฆฌ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. ์นดํ์นด ํ๋ก๋์, ์ปจ์๋จธ, ์ด๋๋ฏผ ํด๋ผ์ด์ธํธ๋ฅผ ์ ๊ณตํจ. ์์ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฏ๋ก, ํ๋ ์์ํฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ตฌํ ํ ์คํ. ํ๋ก๋์ API ์นดํ์นด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ๊ณ ๋ธ๋ก์ปค์ ํน์ ํ ํฝ์ ํํฐ์ ์ ์ ์ก. ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ๋ฆฌ๋ ํํฐ์ ์์ ์ ์นดํ์นด ๋ธ๋ก์ปค์ ์ง์ ํต์ ํ๋ค. ์ฃผ์ ํน์ง ์นด๋ธ์นด ๋ธ๋ก์ปค๋ก ๋ฐ์ดํฐ ์ ์ก ์, ๋ด๋ถ์ ์ผ๋ก ํํฐ์ ๋ ๋ฐ ๋ฐฐ์น ์์ฑ ๋จ๊ณ๋ฅผ ๊ฑฐ์นจ. UniformStickyPartitioner ์ RoundRobinPartitioner ์ 2๊ฐ ํํฐ์ ์ ์ ๊ณตํจ. ๋ฉ์์ง ํค ์ ๋ฌด์์ ์ฐจ์ด์ ์ด ๋ฐ์ํ๋ค. ํ๋ก๋์ ๋์์ ํนํ๋ UniformStickyPartitioner๋ ๋์ ์ฒ๋ฆฌ๋ ๋ฐ ๋ฎ์ .. 2023. 4. 9. [์ํ์น ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ with ์๋ฐ] 3-2, 3์ฅ ํ ํฝ๊ณผ ํํฐ์ , ๋ ์ฝ๋ ํ ํฝ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋จ์ 1๊ฐ ์ด์์ ํํฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ Record ๋ผ ์นญํจ ํํฐ์ ๋ณ๋ ฌ์ฒ๋ฆฌ์ ํต์ฌ ์ปจ์๋จธ์ ๊ฐ์๋ฅผ ๋๋ฆฌ๋ ์ค์ผ์ผ ์์์ผ๋ก ํ์ ๋ ์ปจ์๋จธ์ ์ฒ๋ฆฌ๋์ ๋ณด์กฐ ๊ฐ๋ฅ. Queue์ ๊ฐ์ ๊ตฌ์กฐ ๋ ์ฝ๋ ํ์ ์คํฌํ, ๋ฉ์์ง ํค, ๋ฉ์์ง ๊ฐ, ์คํ์ , ํค๋ ๊ตฌ์ฑ ํ๋ฒ ์ ์ฌ๋ ๋ ์ฝ๋๋ ์์ ๋ถ๊ฐ ๋ฐ log retention or capacity์ ๋ฐ๋ผ ์ญ์ ํน์ง ์์ฑ๋ ์์ ์ Unix Time ์ค์ ๋จ, ๋ ์ฝ๋ ์์ฑ ์ ํ์ ์คํฌํ๋ฅผ ์ค์ ํ ์ ์๋ค๋ ๊ฒ์ ์ ์ ๋ฉ์์ง ํค๋ฅผ ์ด์ฉํ์ฌ ํด์ ๊ฐ์ ํ ๋๋ก ํํฐ์ ์ง์ ๊ฐ๋ฅ ํ์์ null ์ค์ ๋ฉ์์ง ๊ฐ์ ์ง๋ ฌํ, ์ญ์ง๋ ฌํ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ก ์ค์ => ๋์ผํ ํํ๋ก ์ํธ ๊ฐ ์ํ ์ปจ์๋จธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ ๋, ์คํ์ ์ ์ฌ์ฉ ์ปจ์๋จธ ๊ทธ๋ฃน์ด .. 2023. 3. 27. [์ํ์น ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ with ์๋ฐ] 3-1์ฅ ์นดํ์นด ๋ธ๋ก์ปค์ ํด๋ฌ์คํฐ ์ฃผํคํผ ์นดํ์นด ๋ธ๋ก์ปค ์นดํ์นด ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ฃผ์ฒด ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์์ ํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ์ ์ฅํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ณดํต 3๋ ์ด์์ ํด๋ฌ์คํฐ๋ก ์ด์ ๋ถ์ฐ ์ ์ฅ ๋ฐ ๋ณต์ ์นดํ์นด ๋ธ๋ก์ปค์ ํน์ง ์ ๋ฌ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํํฐ์ ์ ์ ์ฅ ๋ฐ ์ ๋ฌ ํ์ผ ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๊ฐ ์๋, ํ์ผ ์์คํ ์ ์ ์ฅ => ์๋ ์ด์๋ฅผ ์บ์ฑ์ผ๋ก ๊ฐ์ ๋ฐ์ดํฐ์ ๋ณต์ ๋ ํํฐ์ ๋จ์๋ก ์ด๋ฃจ์ด์ง => ๋ฆฌ๋ ํํฐ์ ์ผ๋ก๋ถํฐ ๋ฐ์ ์ปจํธ๋กค๋ฌ ๋ค๋ฅธ ๋ธ๋ก์ปค๋ค์ ์ํ ์ฒดํฌ ๋ฐ ํ๋์ ๋ธ๋ก์ปค๊ฐ ์ ์ธ๋ ๊ฒฝ์ฐ, ๋ฆฌ๋ ํํฐ์ ์ ์ฌ๋ถ๋ฐฐ ๋ฐ์ดํฐ ์ญ์ ์นดํ์นด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ ํฝ ๋ฐ์ดํฐ ์ญ์ ํ์ง ์์. ๋ธ๋ก์ปค๋ง์ด ๋ฐ์ดํฐ๋ฅผ ์ญ์ ๊ฐ๋ฅํจ. => ์ญ์ ์ฉ๋ ์ต์ ๊ฐ ์ค์ ๊ฐ๋ฅ ์ฝ๋๋ค์ดํฐ ์ปจ์๋จธ ๊ทธ๋ฃน ์ํ ์ฒดํฌ ๋ฐ .. 2023. 3. 27. [๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด] 11์ฅ ๋ด์ค ํผ๋ ์์คํ ์ค๊ณ ๋ด์ค ํผ๋ ํํ์ด์ง ์ค์์ ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ๋๋ ์คํ ๋ฆฌ๋ค ์ฌ์ฉ์ ์ํ ์ ๋ณด ์ ๋ฐ์ดํธ, ์ฌ์ง, ๋น๋์ค, ๋งํฌ, ์ฑ ํ๋ ๋ฑ๋ฑ 1๋จ๊ณ : ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ๋ชจ๋ฐ์ผ ์ฑ์ ์ํ ์์คํ ์ธ์ง, ์น์ ์ํ ์์คํ ์ธ์ง ๋ ๋ค ์ง์ํด์ผ ํจ ์ค์ํ ๊ธฐ๋ฅ์ผ๋ก ์ด๋ค ๊ฒ์ด ์๋์ง ์ฌ์ฉ์๋ ๋ด์ค ํผ๋์ ์๋ก์ด ์คํ ๋ฆฌ๋ฅผ ์ฌ๋ฆด ์ ์์ด์ผ ํจ ์น๊ตฌ๋ค์ด ์ฌ๋ฆฌ๋ ์คํ ๋ฆฌ๋ฅผ ๋ณผ ์๋ ์์ด์ผ ํจ ๋ด์ค ํผ๋์๋ ์ด๋ค ์์๋ก ์คํ ๋ฆฌ๊ฐ ํ์๋์ด์ผ ํ๋์ง? ๋จ์ํ ์๊ฐ ํ๋ฆ ์ญ์์ผ๋ก ํ์๋๋ค๊ณ ๊ฐ์ ํ ๋ช ์ ์ฌ์ฉ์๋ ์ต๋ ๋ช ๋ช ์ ์น๊ตฌ๋ฅผ ๊ฐ์ง ์ ์๋์ง? ์์ : 5000๋ช ํธ๋ํฝ ๊ท๋ชจ? ๋งค์ผ ์ฒ๋ง ๋ช ์ด ๋ฐฉ๋ฌธํ๋ค๊ณ ๊ฐ์ ํผ๋์ ์ด๋ฏธ์ง๋ ๋น๋์ค ์คํ ๋ฆฌ๋ ์ฌ๋ผ์ฌ ์ ์๋์ง? ์คํ ๋ฆฌ์๋ ์ด๋ฏธ์ง๋ ๋น๋์ค ๋ฑ์ ๋ฏธ๋์ด ํ์ผ ํฌํจ ๊ฐ๋ฅ 2๋จ๊ณ :.. 2023. 3. 19. [๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด] 10์ฅ ์๋ฆผ ์์คํ ์ค๊ณ ์๋ฆผ ์์คํ ์ ์ด๋ ์๋น์ค๋ ํญ์ ๊ณ ๋ฏผํ๊ฒ ๋๋ ๋ถ๋ถ์ด๋ผ ์๊ฐํ๋ค. ์ค์ ๋ก ์๋น์ค๋ฅผ ๊ตฌํํ ๋, ๋ค์ํ ๊ณ ๋ฏผ๋ค์ ํ๊ฒ ๋๋๋ฐ, ์ค๊ณ์ ๋ํ ์ด์ ์์ ๋ฐ๋ผ๋ณธ ๊ฑด ์๋ก์ ๋ค. ์๋ฆผ ์์คํ ๊ณ ๊ฐ์๊ฒ ์ค์ํ ๋งํ ์ ๋ณด๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์ ์ก ๋ชจ๋ฐ์ผ ํธ์ ์๋ฆผ, SMS ๋ฉ์์ง, ์ด๋ฉ์ผ ์ธ ๊ฐ์ง๋ก ๋ถ๋ฅ 1๋จ๊ณ : ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ ์์คํ ์ด ์ง์ํ๋ ์๋ฆผ ์ข ๋ฅ ํธ์ ์๋ฆผ, SMS ๋ฉ์์ง, ์ด๋ฉ์ผ ์ค์๊ฐ ์์คํ ์ฌ๋ถ ์ฐ์ฑ ์ค์๊ฐ ์์คํ ์ด๋ผ๊ณ ๊ฐ์ (์์คํ ๋ถํ ์ ์ฝ๊ฐ์ ์ง์ฐ ๋ฌด๋ฐฉ) ์ง์ํด์ผ ํ๋ ์ข ๋ฅ์ ๋จ๋ง iOS, ์๋๋ก์ด๋, ๋ฉํฑ/๋ฐ์คํฌํฑ ์๋ฆผ์ ๋ง๋ค ์ ์๋ ์ฃผ์ฒด ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ or ์๋ฒ ์ธก์ ์ค์ผ์ค๋ง ์๋ฆผ์ ๋ฐ์ง ์๋๋ก ์ค์ ๋ ๊ฐ๋ฅํด์ผ ํจ ํ๋ฃจ์ ๋ณด๋ผ ์ ์์ด์ผ ํ๋ ์ ์ฒ๋ง ๊ฑด์ ๋ชจ๋ฐ์ผ ํธ์.. 2023. 3. 18. [์ํ์น ์นดํ์นด ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ with ์๋ฐ] 1์ฅ ๋ค์ด๊ฐ๋ฉฐ ์ํ์น ์นดํ์นด ๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ํ๋ฉฐ ํ์๋ก MQ, MB ์ ๋๋ ํ๋ ๊ณต๋ถํด์ผ ๊ฒ ๋ค๋ ์๊ฐ์ ๊พธ์คํ ํด์๋ค. ๊ณต๋ถํ ๋งํ ์ค๋ ฅ์ด ๋๋๊ฒ ๋ฒ ์ด์ค๊ฐ ๋ ์๊ธฐ์, ์ค์ ๋ก ์ฌ์ฉํด์ผ ๋ ์๊ธฐ๊ฐ ๋ฑ ๋ง์ ๋จ์ด์ ธ ๋ฐ๋ก ๊ณต๋ถํ๊ธฐ๋ก ๋ง์ ๋จน์๋ค. ์นดํ์นด๋? ์นดํ์นด ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ํํฐ์ ๋์์ FIFO ๋ฐฉ์์ ํ ์๋ฃ๊ตฌ์กฐ์ ์ ์ฌํ๋ค. ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด ‘ํ๋ก๋์ ' ์ด๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ๋ ๊ฒ์ด ‘์ปจ์๋จธ'. ์นดํ์นด๋ฅผ ํตํด ์ ๋ฌํ ์ ์๋ ๋ฐ์ดํฐ ํฌ๋งท์ ๊ฑฐ์ ์ ํ์ด ์๋ค. ์ง๋ ฌํ, ์ญ์ง๋ ฌํ๋ฅผ ํตํด ByteArray ๋ก ํต์ ํ๋ฏ๋ก ์๋ฐ์์ ์ ์ธํ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ง์ํ๋ค. (์นดํ์นด ํด๋ผ์ด์ธํธ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ByteArray, ByteBuffer, Double, Long, String ํ์ ์ ๋์ํ ์ง๋ ฌํ.. 2023. 3. 13. [๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด] 9์ฅ ์น ํฌ๋กค๋ฌ ์ค๊ณ ์น ํฌ๋กค๋ฌ๋ ๊ฒ์ ์์ง์์ ๋๋ฆฌ ์ฐ๋ ๊ธฐ์ ๋ก, ์น์ ์๋ก ์ฌ๋ผ์ค๊ฑฐ๋ ๊ฐฑ์ ๋ ์ฝํ ์ธ ๋ฅผ ์ฐพ์๋ด๋ ๊ฒ์ด ์ฃผ๋ ๋ชฉ์ ์ด๋ค. ์น ํฌ๋กค๋ฌ๋ ๋ช ๊ฐ ์นํ์ด์ง์์ ์์ํ์ฌ ๊ทธ ๋งํฌ๋ฅผ ๋ฐ๋ผ ๋๊ฐ๋ฉด์ ์๋ก์ด ์ฝํ ์ธ ๋ฅผ ์์งํ๋ค. ๊ฒ์ ์์ง ์ธ๋ฑ์ฑ : ํฌ๋กค๋ฌ์ ๊ฐ์ฅ ๋ณดํธ์ ์ธ ์ฉ๋ก. ํฌ๋กค๋ฌ๋ ์น ํ์ด์ง๋ฅผ ๋ชจ์ ๊ฒ์ ์์ง์ ์ํ ๋ก์ปฌ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ ๋ค. ์ผ๋ก๋ก Googlebot์ ๊ตฌ๊ธ ๊ฒ์ ์์ง์ด ์ฌ์ฉํ๋ ์น ํฌ๋กค๋ฌ๋ค. ์น ์์นด์ด๋น : ๋์ค์ ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ์ฅ๊ธฐ๋ณด๊ดํ๊ธฐ ์ํด ์น์์ ์ ๋ณด๋ฅผ ๋ชจ์ผ๋ ์ ์ฐจ์ด๋ค. ์น ๋ง์ด๋ : ์น ๋ง์ด๋์ ํตํด ์ธํฐ๋ท์์ ์ ์ฉํ ์ง์์ ๋์ถํด ๋ผ ์ ์๋ค. ์น ๋ชจ๋ํฐ๋ง : ํฌ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ธํฐ๋ท์์ ์ ์๊ถ์ด๋ ์ํ๊ถ์ด ์นจํด๋๋ ์ฌ๋ก๋ฅผ ๋ชจ๋ํฐ๋ง ํ ์ ์๋ค. ์ด๋ก๋ก ๋์ง๋งํฌ์ฌ๋ ์นํฌ๋กค๋ฌ๋ฅผ ์ฌ์ฉํด ํด์ ํ .. 2023. 3. 12. [๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด] Chapter 8 URL ๋จ์ถ๊ธฐ ์ค๊ณ 1๋จ๊ณ : ๋ฌธ์ ์ดํด ๋ฐ ์ค๊ณ ๋ฒ์ ํ์ URL ๋จ์ถ๊ธฐ๊ฐ ์ด๋ป๊ฒ ๋์ํด์ผ ํ๋์ง? ๊ธด ์ฃผ์๊ฐ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ก์ ๋ ๋จ์ถ URL์ ๊ฒฐ๊ณผ๋ก ์ ๊ณตํด์ผ ํจ ๋จ์ถ URL์ ์ ์ํ๋ฉด ์๋ URL๋ก ๊ฐ ์๋ ์์ด์ผ ํจ ํธ๋ํฝ ๊ท๋ชจ๋? ๋งค์ผ 1์ต(100million) ๊ฐ์ ๋จ์ถ URL ๋จ์ถ URL์ ๊ธธ์ด๋? ์งง์ผ๋ฉด ์งง์์๋ก ์ข์ ๋จ์ถ URL์ ํฌํจ๋ ๋ฌธ์์ ์ ํ์? ์ซ์(0๋ถํฐ 9๊น์ง)์ ์๋ฌธ์(a๋ถํฐ z, A๋ถํฐ Z๊น์ง)๋ง ์ฌ์ฉ ๊ฐ๋ฅ ๋จ์ถ๋ URL์ ์์คํ ์์ ์ง์ฐ๊ฑฐ๋ ๊ฐฑ์ ํ ์ ์๋์ง? ์์คํ ์ ๋จ์ํํ๊ธฐ ์ํด ์ญ์ ๋ ๊ฐฑ์ ์ ํ ์ ์๋ค๊ณ ๊ฐ์ 2๋จ๊ณ : ๊ฐ๋ต์ ์ค๊ณ์ ์ ์ ๋ฐ ๋์ ๊ตฌํ๊ธฐ API ์๋ํฌ์ธํธ ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ์ ๊ณตํ๋ API ์๋ํฌ์ธํธ๋ฅผ ์ํด ์๋ฒ์ ํต์ URL ๋จ์ถ๊ธฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๊ฐ์ ์๋ํฌ.. 2023. 3. 7. [๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด] Chapter 7. ๋ถ์ฐ ์์คํ ์ ์ํ ์ ์ผํ ID ์์ฑ๊ธฐ ๋ถ์ฐ ์์คํ ์์ ์ ์ผ์ฑ์ด ๋ณด์ฅ๋๋ ID๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง์ด๋ค. ๋ค์ค ๋ง์คํฐ ๋ณต์ (multi-master replication) UUID (Universally Unique Identifier) ํฐ์ผ ์๋ฒ (Ticket Server) ํธ์ํฐ ์ค๋ ธํ๋ ์ดํฌ (Twitter Snowflake) ์ ๊ทผ๋ฒ ๋ค์ค ๋ง์คํฐ ๋ณต์ ์ด ์ ๊ทผ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ auto_increment ๊ธฐ๋ฅ์ ํ์ฉํ๋ ๊ฒ์ด๋ค. ๋ค๋ง ๋ค์ ID์ ๊ฐ์ ๊ตฌํ ๋ 1์ด ์๋๋ผ k๋งํผ ์ฆ๊ฐ์ํจ๋ค. ์ฌ๊ธฐ์ k๋ ํ์ฌ ์ฌ์ฉ์ค์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ฒ์ ์๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฅผ ๋๋ฆฌ๋ฉด ์ด๋น ์์ฐ ๊ฐ๋ฅ ID์๋ ๋๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ๊ท๋ชจ ํ์ฅ์ฑ ๋ฌธ์ ๋ฅผ ์ด๋์ ๋ ํด๊ฒฐ ๊ฐ๋ฅํ๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ์ผํฐ์ ๊ฑธ์ณ ๊ท๋ชจ๋ฅผ ๋๋ฆฌ๊ธฐ ์ด๋ ต๋ค. ID์ ์ ์ผ์ฑ์ ๋ณด์ฅ๋์ง๋ง ๊ทธ.. 2023. 3. 2. [Spring data JPA] N+1 ๋ฌธ์ ํด๊ฒฐ ์ด๋ ๊ฒ ์ด๋ฃจ์ด์ง ERD ๋ชจ๋ธ์ด ์๋ค. (์์) ์กฐ๊ฑด์ ๋ง์ถฐ ๋ถ๋ฌ์ค๊ณ ์ ํ๋ Data๋ ์ธ ํ ์ด๋ธ์ ์ ๋ณด๋ฅผ ๋ชจ๋ ํ์๋ก ํ๋ค. ์ด๋ Fetch join์ ๊ณ ๋ คํด๋ณผ ์ ์๋ค. Permission ์ ์ฅ์์ user์ document๋ฅผ ๋๋ฒ ๋ค fetch join ํ ์ ์์ง๋ง, ์ด๋ฅ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ฑ๋ฅ ์ ์์ฒญ๋ ๋ฌธ์ ๊ฐ ์๋ค. ๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ, ์ฐ๊ด๋ ์ํฐํฐ์ ์๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ๋๋ ์ ๋ฐ์์ํค๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ผ ๊ฒ์ด๋ค. ํด๋น ์ํฐํฐ๋ค์ ๋ชจ๋ FetchType.LAZY ๋ก ์ค์ ๋์ด ์๋ค. ๊ธฐ์กด ์ฟผ๋ฆฌ : val documents = documentQueryService.findDocumentsByIdFetchJoinPermissions(projectId) return Response.UserPe.. 2023. 2. 28. ์ด์ 1 2 3 4 5 6 7 ยทยทยท 17 ๋ค์ ๋ฐ์ํ