IT19 Kafka Streams์ ์คํ๋ง ๋ถํธ ํตํฉ: ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถํ๊ธฐ Apache Kafka Streams ๋ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ ์ฒ๋ฆฌํ๋ ๊ฐ๋ ฅํ API๋ก, Kafka์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๋ณํํ ์ ์์ต๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ Kafka Streams API ์ ์คํ๋ง ๋ถํธ ๋ฅผ ํตํฉํ์ฌ ์ค์๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ๋ํ ์ํ ์ ์ฅ ๋ณํ ๊ณผ ์ธํฐ๋ํฐ๋ธ ์ฟผ๋ฆฌ ๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ํ ์ ์ฅ์ ๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๋์ง๋ ์ดํด๋ด ๋๋ค. 1. Kafka Streams API ์๊ฐ Kafka Streams ๋ Apache Kafka ์์์ ๋์ํ๋ ์คํธ๋ฆผ ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ก, ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณํ, ํํฐ๋ง, ์ง๊ณ ํ ์ ์์ต๋๋ค. ํนํ ๋ถ์ฐ ํ๊ฒฝ ์์ ๋์ํ ์ ์์ด ๋๊ท๋ชจ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ .. IT/Kafka, ๋น๋๊ธฐ ์ฒ๋ฆฌ 2024. 10. 23. ๋๋ณด๊ธฐ โบโบ Kafka ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธํ๊ธฐ: ๋จ์ ํ ์คํธ๋ถํฐ ํตํฉ ํ ์คํธ๊น์ง Apache Kafka ๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธ ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ํ๋ก๋์์ ์ปจ์๋จธ์ ๋จ์ ํ ์คํธ , Embedded Kafka๋ฅผ ํ์ฉํ ํตํฉ ํ ์คํธ , Kafka ๋ชจ์ ๊ฐ์ฒด(Mock) ๋ฅผ ์ฌ์ฉํ ํ ์คํธ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ๋น๋๊ธฐ ์ฝ๋ ํ ์คํธ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํด ๋ค๋ฃน๋๋ค. 1. ํ๋ก๋์์ ์ปจ์๋จธ์ ๋จ์ ํ ์คํธKafka ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ๋ก๋์ ์ ์ปจ์๋จธ ์ ๋์์ ๋จ์ ํ ์คํธ ๋ก ํ์ธํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. Mockito ์ ๊ฐ์ ๋ชจ์ ๊ฐ์ฒด(Mock)๋ฅผ ํ์ฉํ์ฌ Kafka ๋ธ๋ก์ปค์์ ์ค์ ์ฐ๊ฒฐ ์์ด๋ ๋จ์ ํ ์คํธ๋ฅผ ์ํํ ์ ์์ต๋๋ค.ํ๋ก๋์ ๋จ์ ํ ์คํธ ์์@RunWith(Spr.. IT/Kafka, ๋น๋๊ธฐ ์ฒ๋ฆฌ 2024. 10. 23. ๋๋ณด๊ธฐ โบโบ Kafka ์ ํ๋ฆฌ์ผ์ด์ ์ค์ผ์ผ๋ง: ํ๋ก๋์์ ์ปจ์๋จธ์ ํ์ฅ ๋ฐ ๊ณ ๊ฐ์ฉ์ฑ ์ ๋ต Apache Kafka ๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํ๋ ๊ฐ๋ ฅํ ํ๋ซํผ์ ๋๋ค. Kafka ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๊ณต์ ์ผ๋ก ์ค์ผ์ผ๋งํ๋ ค๋ฉด ํ๋ก๋์์ ์ปจ์๋จธ์ ์ํ ํ์ฅ , ํ ํฝ์ ํํฐ์ ๋ ์ ๋ต , ์ปจ์๋จธ ๊ทธ๋ฃน ๊ด๋ฆฌ , ๊ทธ๋ฆฌ๊ณ ๊ณ ๊ฐ์ฉ์ฑ ์ ์ํ ์ฅ์ ๋์ ์ ๋ต ์ด ํ์์ ์ ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ์ด๋ฌํ ์์๋ค์ ์ดํด๋ณด๊ณ , ํจ๊ณผ์ ์ธ Kafka ์ ํ๋ฆฌ์ผ์ด์ ์ค์ผ์ผ๋ง ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. 1. ํ๋ก๋์์ ์ปจ์๋จธ์ ์ํ ํ์ฅKafka ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ํ์ฅ (Horizontal Scaling)ํ๋ ค๋ฉด ํ๋ก๋์ ์ ์ปจ์๋จธ ์ธ์คํด์ค๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค. ์ํ ํ์ฅ์ ํธ๋ํฝ์ด ์ฆ๊ฐํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํ์ฅํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.ํ๋ก๋์ ํ์ฅ ํ๋ก๋์ ๋.. IT/Kafka, ๋น๋๊ธฐ ์ฒ๋ฆฌ 2024. 10. 23. ๋๋ณด๊ธฐ โบโบ Kafka ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ํฐ๋ง๊ณผ ๋ก๊น : ์ค์๊ฐ ์ด์ ํจ์จ์ฑ ๊ทน๋ํํ๊ธฐ Apache Kafka ๋ ๋๊ท๋ชจ ์คํธ๋ฆฌ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์คํ ์ ํต์ฌ์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ ์ ์ผ๋ก ์ด์๋๋ ค๋ฉด ๋ชจ๋ํฐ๋ง ๊ณผ ๋ก๊น ์ด ์ค์ํฉ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ Logback ์ด๋ Log4j ๊ฐ์ ๋ก๊น ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ Kafka ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ก๊น ์ ๊ด๋ฆฌํ๊ณ , JMX ๋ Prometheus ๋ฅผ ํตํด Kafka ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ๋ํ, Grafana ๋ฅผ ํตํด ์ค์๊ฐ์ผ๋ก ๋ฉํธ๋ฆญ ์๊ฐํ ํ๋ ๋ฐฉ๋ฒ๋ ์๊ฐํฉ๋๋ค. 1. Logback์ด๋ Log4j ๊ฐ์ ๋ก๊น ํ๋ ์์ํฌ ์ฌ์ฉKafka ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ก๊น ์ ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ํ์ ํ๋ ๋ฐ ์ค์ํ ๋๊ตฌ์ ๋๋ค. Logback ๊ณผ Log4j ๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์์ .. IT/Kafka, ๋น๋๊ธฐ ์ฒ๋ฆฌ 2024. 10. 23. ๋๋ณด๊ธฐ โบโบ ๋น๋๊ธฐ ๋ฉ์์ง ์ฒ๋ฆฌ ํจํด: ํจ์จ์ ์ธ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๋ฉ์์ง ์์ ๋ณด์ฅํ๊ธฐ ๋น๋๊ธฐ ๋ฉ์์ง ์ฒ๋ฆฌ ๋ ๋๊ท๋ชจ ์์คํ ์์ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ๊ทน๋ํํ๋ ์ค์ํ ํจํด์ ๋๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ๋๊ธฐ์ ์ฒ๋ฆฌ ์ ๋น๋๊ธฐ์ ์ฒ๋ฆฌ ์ ์ฐจ์ด๋ฅผ ์ดํด๋ณด๊ณ , CompletableFuture ์ ๊ฐ์ ๋น๋๊ธฐ API ํ์ฉ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ๋ํ, ๋ฉ์์ง ์๊ด๊ด๊ณ ๋ฐ ์ถ์ ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ๊ณผ ๋ฉ์์ง ์์ ๋ณด์ฅ ์ ์ํ ๊ธฐ๋ฒ๋ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. 1. ๋๊ธฐ์ vs ๋น๋๊ธฐ์ ์ฒ๋ฆฌ ์ดํดํ๊ธฐ ๋๊ธฐ์ ์ฒ๋ฆฌ ๋๊ธฐ์ ์ฒ๋ฆฌ ๋ ํ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋ค์ ์์ ์ด ์์๋์ง ์๋ ๋ฐฉ์์ ๋๋ค. ์ด ๋ฐฉ์์ ๋จ์ํ์ง๋ง, ์์ ์ด ์ฐจ๋ก๋๋ก ์งํ๋๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค .public String processSync() { // ๋๊ธฐ์ ์ฒ๋ฆฌ: ๋ค์ ์์ ์ ์ด์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง .. IT/Kafka, ๋น๋๊ธฐ ์ฒ๋ฆฌ 2024. 10. 23. ๋๋ณด๊ธฐ โบโบ ์ด์ 1 2 3 4 ๋ค์