๐ ์ธ์ ์ฒซ ์คํ์์ค ๊ธฐ์ฌ: ์ฐ์ฐํ ๋ฐ๊ฒฌํ ๋ฒ๊ทธ ํ ์ค ํด๊ฒฐํ๊ธฐ
moseoh ยท 2025๋ 07์ 01์ผ
์ฐ์ฐ์ ์ฐ์์ผ๋ก ์์๋ ์ฒซ ๊ธฐ์ฌ
์๋๋ AI ๋ถ์ ๋๊ตฌ๋ฅผ ํ์ฉํด์ ๊ธฐ์ฌํ ๋งํ ์ด์๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ฐพ์๋ณด๋ ค๊ณ ํ์๋๋ฐ์. ๊ทธ๋ฐ๋ฐ ๋ถ์๋ ํ๊ธฐ์ ์ OpenTelemetry Collector์ ๋ฉ๋ชจ๋ฆฌ ๋์ ์ด์(#40962)๋ผ๋ ํฅ๋ฏธ๋ก์ด ๊ธ์ ๋ฐ๊ฒฌํ์ฌ, ๋ถ์ํ๋ค๊ฐ ์ฐ์ฐํ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ๋์์ต๋๋ค!
์ ๋ง ๊ฐ๋จํ ํ์ดํ ์ค์์๋๋ฐ, ์ฒซ ๊ธฐ์ฌ ์ค๋น ์๊ฐ๊น์ง ํฌํจํด์ ๋ฑ 1์๊ฐ ๋ง์ ๊ธฐ์ฌ๋ฅผ ์๋ฃํ ์ ์์์ด์. (๋ฌผ๋ก 100๊ฐ๊ฐ ๋๋ GitHub Actions๊ฐ ๋์๊ฐ๋ ๋ฐ๋ง 20๋ถ์ ๋ ๊ฑธ๋ ธ์ง๋ง..)
๋ฌธ์ ๋ฐ๊ฒฌ: โ์ด? ์ด๊ฒ ๋ง๋?โ
๋ฉ๋ชจ๋ฆฌ ๋์ ์ด์๋ฅผ ํํค์น๋ ์ค, receivercreator ์ปดํฌ๋ํธ์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ค๊ฐ ๋ญ๊ฐ ์ด์ํ ๋ถ๋ถ์ ๋ฐ๊ฒฌํ์ต๋๋ค:
func filterConsumerSignals(consumer *enhancingConsumer, signals receiverSignals) { if !signals.metrics { consumer.metrics = nil } if !signals.logs { consumer.logs = nil } if !signals.metrics {// <-- ๋ ์ฉ์ค consumer.traces = nil }}๋ง์ง๋ง ์ค์ ๋ณด๋ ๋ถ๋ช
ํ !signals.traces์ฌ์ผ ํ ๊ฒ ๊ฐ์๋ฐ !signals.metrics๋ก ๋์ด ์๋๋ผ๊ณ ์. ์ฒ์์๋ โ์ค๋ง ์ด๋ฐ ๊ฐ๋จํ ์ค์๊ฐ 7๊ฐ์์ด๋ ๋ฐฉ์น๋์ด ์์๊น?โ ์ถ์ด์ ์ ๋ง ๊ณ ์ณ์ผ ํ ์ง ๋ง์์ผ ํ ์ง ๊ณ ๋ฏผ์ด ๋ง์์ต๋๋ค.
์์ธ๋ก ์ค๋๋ ๋ฒ๊ทธ์ ์ ์ฒด
๋ ์์ธํ ์ถ์ ํด๋ณด๋ ์ด ๋ฒ๊ทธ๋ ๋ฌด๋ ค 7๊ฐ์ ์ ์ ์๊ธด ๊ฒ์ด์์ด์! PR #35617์์ ๋ก๊ทธ ์ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ์ค์๋ก ๋ค์ด๊ฐ ๊ฒ ๊ฐ์๋ฐ, ๊ทธ๋์ ์๋ฌด๋ ๋ฐ๊ฒฌํ์ง ๋ชปํ๋ค๋ ๊ฒ ์ ๋ง ์ ๊ธฐํ์ต๋๋ค.
๋ ํท๊ฐ๋ ธ๋ ๊ฑด, ๊ด๋ จ ํ ์คํธ ์ผ์ด์ค๋ ํจ๊ป ๋๋ฝ๋์ด ์์๋ค๋ ์ ์ด์์:
TestOnRemoveForMetrics์กด์ฌTestOnRemoveForLogs์กด์ฌTestOnRemoveForTracesโ> โย ๋๋ฝ ์ฒ์์๋ โํน์ ์๋์ ์ผ๋ก ๋นผ๋ ๊ฑด๊ฐ?โ ํ๋ ์๊ฐ๋ ํ์ง๋ง, ์ฝ๋ ํจํด์ ๋ณด๋ ๊ทธ๋ฅ ๊ฐ์ด ๋น ๋จ๋ฆฐ ๊ฒ ๊ฐ๋๋ผ๊ณ ์.
๋จ ํ์ค์ ์์ ํ๋ฉด์ ์๊ฐํ๋ ๊ฒ๋ค
์ ์ด๋ ๊ฒ ๊ฐ๋จํ ๋ฒ๊ทธ๊ฐ ์ค๋ ๋ฐฉ์น๋์์๊น?
- ํฐ PR์ ๋ฌปํ์ ๊ฐ๋ฅ์ฑ: ๋น์ PR์ด 1000์ค์ด ๋๋ ๋๊ท๋ชจ ๊ธฐ๋ฅ ์ถ๊ฐ์๋๋ฐ, ์ด๋ฐ ์์ ํฌํผ ํจ์๋ ๊ผผ๊ผผํ ๋ฆฌ๋ทฐ๋์ง ์์์ ์ ์์ด์.
- ํ ์คํธ ๋๋ฝ์ ์ฐ์ ํจ๊ณผ: metrics์ logs์ ๋ํ ํ ์คํธ๋ ์์์ง๋ง, ๋ง์นจ traces ํ ์คํธ๋ ์์ด์ โ์ด๊ฒ ์๋๋ ๋์์ธ๊ฐ?โ ํ๋ ํผ๋์ด ์์์ต๋๋ค. ํ์ง๋ง ์ฝ๋๋ฅผ ์์ธํ ๋ถ์ํด๋ณด๋ ๋ช ๋ฐฑํ ๋ฒ๊ทธ๊ฐ ํ์คํด์, ๋๋ฝ๋ ํ ์คํธ๊น์ง ํจ๊ป ์ถ๊ฐํด์ PR์ ์ฌ๋ ธ์ต๋๋ค.
์๊ฐ๋ณด๋ค ์น์ ํ๋ ์คํ์์ค ๊ธฐ์ฌ ๊ณผ์
์ฒ์์ โ๋ด๊ฐ ๊ธฐ์ฌํด๋ ๋ ๊น? ๋ญ๊ฐ ๋ณต์กํ๊ณ ์ด๋ ค์ธ ๊ฒ ๊ฐ์๋ฐโฆโ ํ๋ ์ค๋๊ธฐ๊ฐ ์์ํ์ง ๋ชป ํ์์ต๋๋ค. ํ์ง๋ง ๋ง์ ํด๋ณด๋ ๊ณผ์ ์ด ์ ๋ง ์ฒด๊ณ์ ์ด๊ณ ์น์ ํ๋๋ผ๊ณ ์!
- ์๋ํ๋ ์ฒดํฌ๋ฆฌ์คํธ: CLA ์๋ช , changelog ์์ฑ, ํ ์คํธ ์ถ๊ฐ ๋ฑ ๋์น ์ ์๋ ๊ฒ๋ค์ CI์์ ์๋์ผ๋ก ์ฒดํฌํด์ค๋๋ค.
- ์น์ ํ ๋ฉ์ธํ ์ด๋: ๋น ๋จ๋ฆฐ ๋ถ๋ถ์ด ์์ผ๋ฉด ์น์ ํ๊ฒ ์๋ ค์ฃผ์ด์ ๋์น ์ผ์ด ์ ํ ์์์ด์.
- ๋น ๋ฅธ ํผ๋๋ฐฑ: ์๊ฐ๋ณด๋ค ๋น ๋ฅด๊ฒ LGTM์ ์ฃผ๋ฉด์ โGood catch!โ๋ผ๊ณ ๋ฆฌ๋ทฐ๋ ๋จ๊ฒจ์ฃผ์ด์ ์ ๋ง ๊ธฐ๋ถ์ด ์ข์์ต๋๋ค!
์ด๋ฒ ๊ฒฝํ์ ํตํด ๋ฐฐ์ด ๊ฒ๋ค
1. ์์ ๊ฒ๋ ์ถฉ๋ถํ ์๋ฏธ ์๋ ๊ธฐ์ฌ
ํ ์ค ์์ ์ด์ด๋ ๋๊ตฐ๊ฐ์๊ฒ๋ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค ์ ์๋ค๋ ๊ฑธ ๊นจ๋ฌ์์ด์. ํนํ OpenTelemetry์ฒ๋ผ ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ผ๋ฉด ๋์ฑ ๊ทธ๋ ๊ฒ ์ฃ .
2. ํ ์คํธ์ ์ค์์ฑ ์ฌํ์ธ
๋จ์ํ ์ฝ๋๋ง ๊ณ ์น๋ ๊ฒ ์๋๋ผ ํ๊ท ๋ฐฉ์ง๋ฅผ ์ํ ํ ์คํธ๊น์ง ํจ๊ป ์์ฑํด์ผ ์์ ํ ์์ ์ด๋ผ๋ ๊ฑธ ์ฒด๊ฐํ์ต๋๋ค.
3. ์คํ์์ค๋ ์๊ฐ๋ณด๋ค ์ ๊ทผํ๊ธฐ ์ฝ๋ค
๊ฑฐ์ฐฝํ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ด ์๋์ด๋ ์ถฉ๋ถํ ์๋ฏธ ์๋ ๊ธฐ์ฌ๋ฅผ ํ ์ ์์ด์. ์ค์ํ ๊ฑด ์์ ๊ฒ๋ถํฐ ์์ํ๋ ์ฉ๊ธฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์ ์ ํ ์ด์๋ฅผ ๋ฐ๊ฒฌํ๋ ๊ฑด, ์ด์ด ์ข ๋ฐ๋ผ์ผ ํ ๊ฒ ๊ฐ์์
์์ผ๋ก์ ๊ณํ
์ด๋ฒ ๊ฒฝํ์ผ๋ก ์์ ๊ฐ์ด ๋ง์ด ์๊ฒจ์, ๋ค๋ฅธ ์ด์๋ค๋ ์ ๊ทน์ ์ผ๋ก ์ฐพ์๋ณด๊ณ ์์ด์. ํนํ OpenTelemetry ์ํ๊ณ๊ฐ ์๋ ํฌ๋ค ๋ณด๋ ์ด๋ฐ ์์ ๋ฒ๊ทธ๋ค์ด ๋ ์จ์ด์์ ๊ฒ ๊ฐ๊ฑฐ๋ ์. ๋จ์ํ ๋ฒ๊ทธ ์์ ์ ๋์ด์ ์๋ก์ด ๊ธฐ๋ฅ ๊ฐ๋ฐ๋ ๋์ ํด๋ณด๊ณ ์ถ์ง๋ง, ์ผ๋จ์ ์ฝ๋๋ฒ ์ด์ค์ ๋ ์ต์ํด์ง๋ ๊ฒ ์ฐ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
PR ๋งํฌ: Fix incorrect signal check in filterConsumerSignals
