๋ฐ์ํ IT Blog403 System Design: Message Deduplication System https://medium.com/@aditimishra_541/system-design-message-deduplication-system-afb4679c3c00 System Design: Message Deduplication System1. Overviewmedium.com 1. Overview์ด ์ํฐํด์ ์์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ณ 10์ด ์ด๋ด์ ๋์ฐฉํ ๋ฐ๋ณต๋๋ ๋ฉ์์ง๋ฅผ ํํฐ๋งํ๋ ์์คํ ๋์์ธ์ ๋ํด ์ค๋ช ํฉ๋๋ค.์ฃผ์ ๋ชฉํ๋ ์ง๋ 10์ด๊ฐ ๊ณ ์ ๋ฉ์์ง๊ฐ ์ฒ๋ฆฌ๋์ง ์์ ๊ฒฝ์ฐ์๋ง ์ฒ๋ฆฌ๋๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ด ๋์์ธ์ ์ค๋ณต ์ฒ๋ฆฌ๋ ๋ก๊ทธ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฉ์์ง ์ค๋ณต ์ ๊ฑฐ๊ฐ ์ค์ํ ์ค์๊ฐ ์์คํ ์ ์ ํฉํฉ๋๋ค. 2. Requirements๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ์์คํ ์ ๋์ฐฉํ ์์๋๋ก ์์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.๋ฉ.. 2024. 10. 27. ์ธํ์ฝ 2024 ์ ๋ฆฌ ์ฌํด ์งํ๋์๋ ์ธํ์ฝ 2024 ์ค ์ผ๋ถ ์ธ์ ์ ๋ํด ๊ฐ๋ตํ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค. https://www.inflearn.com/course/%EC%9D%B8%ED%94%84%EC%BD%982024-%EB%8B%A4%EC%8B%9C%EB%B3%B4%EA%B8%B0 [์ง๊ธ ๋ฌด๋ฃ] ์ธํ์ฝ 2024 ๋ค์๋ณด๊ธฐ ๊ฐ์ | ์ธํ๋ฐ - ์ธํ๋ฐ์ธํ๋ฐ | ์ฑ์ฅํ๋ IT์ธ๋ค์ ์ถ์ , ์ธํ์ฝ 2024์์ ์งํ๋ ์คํ๋ ๋ฐ ๋ฐํ ์ธ์ ์ ์์์ผ๋ก ๋ค์ ๋ณด์ค ์ ์์ต๋๋ค., โ ํ์ธํด์ฃผ์ธ์์ด ์ฝํ ์ธ ๋ 2024๋ 8์ 2์ผ ๊ธ์์ผ ์งํ๋ ์ธํ์ฝ 2024 ๋ฐํ ๋ นwww.inflearn.com ํธ๋ 1์ค๋ฆฌ์ฝ๋ฐธ๋ฆฌ ๊ฐ๋ฐ ๋ฌธํ ๋ฐ ์๋ฐ์ด๋ฒ ์ ๋ต - ์ด์น์คํต์ฌ 5๊ฐ์ง์๊ธฐ PR, ์๋ก์ด ๊ธฐ์ ํธ๋ ๋ ์ต๋, ๋คํธ์ํน, ํ์ ๋ฅ๋ ฅ, ์ฐฝ์์ฑ๊ณผ ๋ฌธ์ ํด๊ฒฐ.. 2024. 10. 25. DB Function to Java Application ์ด๊ด (feat. ํ๋ก์์ ) ์ด๋ฒ ํฌ์คํ ์์๋ ์ ์ง์ฅ์์ ์งํํ๋ DB Function ๋ก์ง์ Java Application์ผ๋ก ์ด๊ดํ๋ ์์ ์ ๋ํด ์ ๋ฆฌํ๊ณ ์ ํฉ๋๋ค. ์๊ฐ์ด ๋ค์ ํ๋ ์ง๋ง, ์ด ์์ ๊ณผ์ ์ ๋๋์๋ณด๊ณ ์ ํ๋ ๋ชฉ์ ๋ ์๊ณ , ์ ์ฌํ ์์ ์ ์งํํ ๋ ์ฐธ๊ณ ํ ์ ์๋๋ก ํธ๋ฌ๋ธ์ํ ๋ฐ ๊ณ ๋ ค ์ฌํญ ๋ฑ์ ์ ๋ฆฌํด ๋ณด๋ ค ํฉ๋๋ค. ํฌ์คํ ์ ๊ฐ์ - ๊ณผ์ - ๊ฒฐ๊ณผ(์ฑ๊ณผ) - ํ๊ณ ์์ผ๋ก ๊ตฌ์ฑํ์์ต๋๋ค. ๊ฐ์๊ธฐ์กด์ DB Function์ ์ฟ ํฐ ๋ฐ๊ธ API๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ก, ์ธ๋ถ ์ ํด์ฌ๊ฐ ๋ฐ๊ธ ์์ฒญ์ ํ๋ฉด ๋ด๋ถ์ ์ผ๋ก ์ฌ๋ฌ ํ๋ก์์ ๋ค์ ์์ฐจ์ ์ผ๋ก ํธ์ถํ์ฌ ๊ฒ์ฆ, ๋ก๊น , INSERT, UPDATE ๋ฑ ์ฟ ํฐ ๋ฐ๊ธ์ ์ฒ๋ฆฌํ๋ ๋ก์ง์ด์์ต๋๋ค. ํ์ง๋ง ์ด ๋ก์ง์๋ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์์๊ณ , ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์ด๋ฒ ์์ ์ ์งํํ๊ฒ ๋์์ต๋๋ค. D.. 2024. 10. 14. ์ ๋ฌด์ ๋ฐ๋ก ์ฐ๋ SQL ํ๋ 2 - SQL ํ๋ ์ค์ต (1) ์ง๋ ํฌ์คํ ์์ SQL ํ๋ ์ด๋ก ์ ๋ํด ์ดํด๋ณด์๋๋ฐ์, ์ด๋ฒ ํฌ์คํ ์์๋ ์ค์ ์ฌ๋ฌ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฟผ๋ฆฌ์ ๋ฌธ์ ์ ์ ํ์ ํ๊ณ , ํ๋ํ์ฌ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.(์ค์ ํ๋ ์ SQL ๋ฌธ์ ํ์ธํ์ฌ ๋ฌด์์ด ๋ฌธ์ ์ธ์ง ํ์ ํด๋ณด๊ณ , ์ง์ ๊ฐ์ ํด๋ณด๊ณ ํ๋ ํ SQL ๋ฌธ์ ํ์ธํ๋ ๋ฐฉ์๋ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.) ์ ์ฑ SQL ํ๋์ผ๋ก ์ด๋ณด์ ํ์ถํ๊ธฐ์ค๋ฌด์ ์ธ SQL ํ๋ ์ ์ฐจ ์ดํดํ๊ธฐ1. SQL ๋ฌธ ์คํ ๊ฒฐ๊ณผ & ํํฉ ํ์ ๊ฒฐ๊ณผ ๋ฐ ์์์๊ฐ ํ์ธ์กฐ์ธ / ์๋ธ์ฟผ๋ฆฌ ๊ตฌ์กฐ๋๋ฑ / ๋ฒ์ ์กฐ๊ฑด2. ๊ฐ์์ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๊ฑด์SELECT ์ ์ปฌ๋ผ ๋ถ์์กฐ๊ฑด์ ์ปฌ๋ผ ๋ถ์๊ทธ๋ฃจํ / ์ ๋ ฌ ์ปฌ๋ผ3. ๋น๊ฐ์์ ์คํ๊ณํ์ธ๋ฑ์ค ํํฉ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ถ์ด์ ๋ฌด์ ํน์ง4. ํ๋ ๋ฐฉํฅ ํ๋จ & ๊ฐ์ / ์ ์ฉ (ํ ์คํธ) SQL ๋ฌธ ๋จ์ ์์ ์ผ๋ก ์ฐฉํ ์ฟผ๋ฆฌ .. 2024. 10. 8. ์ ๋ฌด์ ๋ฐ๋ก ์ฐ๋ SQL ํ๋ 1 - SQL ํ๋ ์ด๋ก ํด๋น ํฌ์คํ ์ ์ ๋ฌด์ ๋ฐ๋ก ์ฐ๋ SQL ํ๋ ๋์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ์์ต๋๋ค. ์ด์ ์ง์ฅ์์๋ ์ฃผ๋ก ์ค๋ผํด์ ์ฌ์ฉํ์๊ณ , ์์ผ๋ก๋ MySQL(MariaDB, Postgresql...) ์ ์ฌ์ฉํ ์์ ์ด๊ธฐ์ ๊ด๋ จํ์ฌ ์คํ ๊ณํ ๋ฐ ์ฌ๋ฌ SQL ํ๋ ๊ธฐ๋ฒ๋ค์ ๋ํด ์ ๋ฆฌํด ๋ณด๊ณ ์ ํฉ๋๋ค. ์์ ์ Real MySQL ๋์๋ฅผ ํตํด ์ด๋ก ์ ์ผ๋ก ํ์ตํ์์ง๋ง, ์ค๋ผํด์ ์ฃผ๋ก ์ฌ์ฉํ๋ค๋ณด๋ MySQL์ ์ฃผ์ ์คํ ๊ณํ์ ๋ํด์๋ ์ ๋ฆฌ ์ฐจ์์์ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฑ ์ ์์ ๋ค์ ํตํด ํ์์ ์ด๋ก ์ผ๋ก๋ง ์๊ณ ์์๋ ๋ด์ฉ๋ค์ด๋ ๊ฒฝํ์ด ์์๋ ํ๋๋ค ๋ฑ ๋ค์ํ๊ฒ ๊ฒฝํํด๋ณผ ์ ์์ด ์ข์์ต๋๋ค.์ฑ ์ ์์ ๋ค์ ํตํด ์ ํ ์๋ก์ด ์ ๊ทผ์ด๋, ํ์์ ์ด๋ก ์ผ๋ก๋ง ์๊ณ ์์๋ ๋ด์ฉ๋ค, ์กฐ๊ธ์ด๋๋ง ๊ฒฝํ์ด ์์๋ ์ฟผ๋ฆฌ ๋ฑ ์ ํด์ง ๋ฐ์ดํฐ ํ์์ด๊ธด .. 2024. 10. 7. Modern Java: An In-Depth Guide from Java 8 to Java 21 Modern Java์ ๋ํด, Java 8 ~ Java 21๊น์ง์ ๋ณ๊ฒฝ์ง์ ์ ์ ๋ฆฌํด๋ณด๋ ํฌ์คํ ์ ๋๋ค. ํด๋น ํฌ์คํ ์ ์๋ ๋ธ๋ก๊ทธ๋ฅผ ๋ฒ์ญํ ํฌ์คํ ์ ๋๋ค.https://medium.com/@akineralkan/modern-java-an-in-depth-guide-from-version-8-to-21-by-akiner-alkan-f89b50e13c72 Modern Java: An In-Depth Guide from Version 8 to 21 | by Akiner AlkanDiscover Java’s evolution from 8 to 21, unveiling features like lambdas to sealed classes and records.medium.com ์๋ฐ 8์ ์์์ผ๋ก ํฅ๋ฏธ๋ก์ด ๊ธฐ๋ฅ๋ค์.. 2024. 9. 8. "์ค๋ฌด๋ก ํตํ๋ ํด๋ฆฐ ์ฝ๋" ๋์ ๋ฆฌ๋ทฐ ํ๋น๋ฏธ๋์ด์ ๋๋๋ฆฌ๋ทฐ์ด๋ค 2024๋ฅผ ํตํด 8์, ์ค๋ฌด๋ก ํตํ๋ ํด๋ฆฐ ์ฝ๋ (Clean Code Cookbook) ๋์๋ฅผ ์ ๊ณต ๋ฐ์ ์ฝ์ด๋ณด๊ฒ ๋์์ต๋๋ค. ์ฑ ์ ์ฝ 500p ์ ๋์ ๋ถ๋์ผ๋ก ์์ ํธ์ ์๋๊ณ ์, ํด๋ฆฐ ์ฝ๋์ ๋ํด ๊ด์ฌ์ด ๋ง๊ธฐ๋ ํ๊ณ , ์์ ์ ์ฝ์๋ ํด๋ฆฐ ์ฝ๋ ์๊ฐ๋ ๋์ ์ฝ์ด๋ณด๊ฒ ๋์๋ค์. ์ ๋ถ ์ฝ์ง๋ ๋ชปํ๊ณ , 60%์ ๋๋ง ์ฝ์ ์ํ์์ ๋ ์ฝ์ผ๋ฉด์ ๋ด์ฉ์ด ์ถ๊ฐ๋ ์ ์์ต๋๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด ํด๋ฆฐ ์ฝ๋ (Clean Code) ๋์์ ๋น์ทํ ๋ด์ฉ๋ค์ด ๋ง์์ด์ ํด๋ฆฐ ์ฝ๋๋ฅผ ์ฝ์๋ค๋ฉด, ๊ตณ์ด ์ด ์ฑ ์ ๋ณด์ง๋ ์์๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค..(?) 2์ฅ ๊ณต๋ฆฌ ์ค์ 38p, ์ํํธ์จ์ด๋ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ๊ณผ ๊ฐ์ผ๋ฉฐ MAPPER (๋งคํผ) ๋ผ๋ ์ฝ์ด๋ก ํํํฉ๋๋ค.MAPPER (Model: Abstrac.. 2024. 8. 26. ์ผํธ ๋ฐฑ์ Tidy First? ๋์ ๋ฆฌ๋ทฐ ํ๋น๋ฏธ๋์ด์ ๋๋๋ฆฌ๋ทฐ์ด๋ค2024๋ฅผ ํตํด 5์, ์ผํธ ๋ฐฑ์ Tidy First? ๋์๋ฅผ ๋ฐ์ ์ฝ๊ฒ ๋์์ต๋๋ค. ์ฑ ์ ๊ต์ฅํ ์๊ณ , ์ ๊ธฐํ๊ฒ 2๊ถ์ผ๋ก ๋์ด์๋๋ฐ ๊ฐ๊ฒฉ์ ๊ฝค๋ ๋น์ธ๋ค์.๊ทธ๋์ ์ฝ๋ ์ ๋ฆฌํ๋ ์์ ์ ๋ง์ด ํ๋ค๋ณด๋, ์ฑ ์์ ๊ณต๊ฐ ๊ฐ๋ ๋ถ๋ถ์ด ๊ฝค ์กด์ฌํ๊ณ , ๊ถ๊ธ์ฆ์ ๋ํด์๋ ์ด๋์ ๋ ํด์ํ ์ ์์์ต๋๋ค. ๋ง์ง๋ง ์ฅ์ ์ด๋ก ๋ถ๋ถ์์๋ ๊ธ์ต, ์ต์ ๋ฑ์ ๊ฐ๋ ์ด ๋์ค๋๋ฐ, ๊ฐ์ธ์ ์ผ๋ก ๊ณต๊ฐ๊ฐ๋ ๋ถ๋ถ์ด ๋ง์ง๋ ์์์ ๋น ๋ฅด๊ฒ ๋๊ฒผ๋ ๊ฒ ๊ฐ๋ค์.. ์๋๋ ๋์์์ ๊ด์ฐฎ์๋, ์ ๋ฆฌํด๋์ ๋ฌธ์ฅ๋ค์ ๋๋ค. Part 01, ์ฝ๋ ์ ๋ฆฌ๋ฒ18p, ์์ ํ์ง ์์ ํ๋์ ํ๋ฉด์ ๋ถ์ํดํ๋ ๊ฒ์ ๊ฒฝ์ํ๊ฒ ์์ ์ ํ์ ํ๋ฉฐ ์ฐ๋ํ๊ฒ ์๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค. ์์ฆ ํนํ๋ ๋ง์ด ๋๋ผ๋ ๊ฐ์ ์ด๋ผ ๋์ฑ ๊ณต๊ฐ์ด ๊ฐ๋ ๋ฌธ์ฅ์ธ ๊ฒ ๊ฐ๋ค.. 2024. 5. 25. Spring @RequestBody ํ๋ ๋ฐ์ธ๋ฉ์ด ๋์ง ์๋ ์ด์ (feat. Lombok, Jackson์ ๋ค์ด๋ฐ ์ฐจ์ด) ๊ฐ์ Spring์์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ JSON ํ์์ผ๋ก ๋ฐ๊ณ , @RequestBody๋ฅผ ์ฌ์ฉํ์ฌ JSON body์ ๋ฐ์ดํฐ๋ฅผ Java Object์ ํ๋์ ์ญ์ง๋ ฌํ(Deserialize)๋ฅผ ํตํด ๊ฐ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก ๋ฐ์ธ๋ฉ์ด ์ด๋ฃจ์ด์ง๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง, ํ๋์ ํน์ ๋ค์ด๋ฐ + Lombok์ @Getter๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ธ๋ฉ์ด ์ ์์ ์ผ๋ก ๋์ง ์๋ ์ด์๊ฐ ์กด์ฌํ๋๋ฐ์, ์ด์ ๊ด๋ จํ์ฌ ๊ฐ๋ตํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ### Send POST request with json body POST http://localhost:8080/api/v1/test Content-Type: application/json { "pId": "pId", "poId": "poId" } ์๋ฅผ ๋ค์ด, ์์ ๊ฐ์ ์๋ฒ ์ฝ๋๊ฐ ์กด์ฌํ๊ณ ํด๋ผ.. 2024. 3. 20. Spring Swagger(springdoc-openapi) Unable to render this definition ์ค๋ฅ Spring ์์ ๋ฌธ์ํ๋ฅผ ์ถ๊ฐํ๊ณ ์ Swagger(Springdoc-openapi)๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋๋ฐ, ์๋์ ๊ฐ์ ๋ฌธ๊ตฌ๊ฐ ๋์ต๋๋ค. Unable to render this definition ... ์ค์ api-docs URL๋ก ์ ๊ทผํด๋ณด๋ฉด, ์๋์ ๊ฐ์ด ๋ฉ์์ง๊ฐ ์ ์์ ์ผ๋ก ์ปจ๋ฒํฐ๊ฐ ์๋์ด ๋์ค๋ ๋ฏ ํ ํ์์ด ๋ฐ์ํฉ๋๋ค. ํ์ฌ ํ๋ก์ ํธ์์๋ MessageConverter ๋ฅผ Customํ์ฌ ์ฌ์ฉํ๊ณ ์๊ณ , ๋๋ต์ ์ผ๋ก ์๋์ ๊ฐ์ด ์ฌ์ฉ์ค์ ๋๋ค. @Override public void configureMessageConverters(List 2024. 3. 4. ์ด์ 1 2 3 4 ยทยทยท 41 ๋ค์ ๋ฐ์ํ