๐Ÿคจ ๋ฌธ์ œ์ƒํ™ฉ  

  1. Spring Boot 3.x ์™€ MSK t3.small ์‚ฌ์šฉ์ค‘
  2. ๊ฐœ๋ฐœํ•˜๋˜ ๋ชจ๋“ˆ์—์„œ ์ผ๊ด„ ๋“ฑ๋ก ๊ธฐ๋Šฅ์ด ์žˆ์—ˆ๊ณ , ์ตœ๋Œ€ ๋ช‡ ๊ฑด๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋ƒ๋Š” ๊ธฐํš์ž๋ถ„์ด ๋ฌธ์˜ ์ฃผ์…จ๋‹ค
  3. 1๋งŒ๊ฑด, 2๋งŒ๊ฑด ์”ฉ ๋Œ€๋Ÿ‰ ์ƒ์„ฑ ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด์„œ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๋ฌผ๋ก  ๊ฐœ๋ฐœ์„œ๋ฒ„์—์„œ!
  4. 1๊ฑด๋‹น ์ตœ์†Œ 10๊ฐœ์˜ kafka ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœ์†กํ•˜๋Š” ์„œ๋น„์Šค์˜€๋‹ค. (entity ๋ณ€๊ฒฝ ๋‚ด์—ญ๋„ ์Œ“๊ณ , ๋กœ๊ทธ๋„ ์Œ“๊ณ  ํ•˜๋А๋ผ ์ด๊ฒƒ์ €๊ฒƒ ๋งŽ์ด ๋‚ ๋ฆผ),
    ํ•œ๋ฒˆ์— ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœ์†กํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ๋ช‡ ์ดˆ์—์„œ ๋ช‡ ๋ถ„ ์•ˆ์— ์ด 10๊ฐœ ์ด์ƒ์˜ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐœ์†กํ•จ
  5. ์š”์ฒญ ์งํ›„๋Š” ํฐ ๋ฌธ์ œ๋Š” ์—†์—ˆ์ง€๋งŒ, 30๋ถ„์—์„œ 1์‹œ๊ฐ„ ๋’ค ๋ถ€ํ„ฐ TopicAuthorizationException ์ด ๋ฐœ์ƒํ–ˆ๋‹ค
  6. kafka-ui ๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ kafka ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„ ๋ถ€ํ„ฐ๋Š” ๋ธŒ๋กœ์ปค์— ์ƒํƒœ๋ฅผ ๋ณด๊ธฐ ์–ด๋ ค์› ๋‹ค.

    ์‹ค์ œ ์ƒํ™ฉ์—์„œ๋Š” ๋ธŒ๋กœ์ปค ์ •๋ณด๋„ ๋ณด์ด์ง€ ์•Š์•˜๊ณ , Topic์„ ๋น„๋กฏํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ๋ณด์ด์ง€ ์•Š์•˜๋‹ค. ๊ฐ„ํ—์ ์œผ๋กœ ๋ช‡ ๊ฐœ์˜ ๋ธŒ๋กœ์ปค์˜ ์ •๋ณด๊ฐ€ ๋ณด์˜€๋‹ค๊ฐ€ ๋‹ค์‹œ ์•ˆ๋ณด์ด๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ–ˆ๋‹ค.

    kafka-ui ์—์„œ ํ™•์ธํ•œ ์žฅ์•  ์ƒํ™ฉ
  7. ๊ฐ€๋” ์—ฐ๊ฒฐ๋˜๋Š” ๋ธŒ๋กœ์ปค ์ •๋ณด๋ฅผ ํ™•์ธํ–ˆ์„ ๋•Œ, Disk usage ๊ฐ€ 51GB ๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค. msk ์„ค์ •์—์„œ ๋ธŒ๋กœ์ปค๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 100GB๋กœ ์žก์•„๋†จ๋Š”๋ฐ... ๊ฐ€๊นŒ์›Œ์ง€๋Š” ๊ฒŒ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณด์˜€๋‹ค... 

โ›๏ธ ์‚ฝ์งˆ ์‹œ์ž‘…  

1. ์ธ์ฆ ๋ฌธ์ œ์ธ๊ฐ€?

TopicAuthorization ์ด๋ผ๋Š” exception ์ด๋ฆ„์œผ๋กœ ์œ ์ถ”ํ•ด ๋ดค์„ ๋•Œ, IAM Role์— ๊ถŒํ•œ์ด ๋น ์ง„๊ฑด ์•„๋‹Œ๊ฐ€ ์ƒ๊ฐํ•ด๋ดค๋‹ค.
→ ๋ณด์•ˆํŒ€์—๊ฒŒ ๋ฌธ์˜ ๊ฒฐ๊ณผ ๋ณ€๊ฒฝ์  ์—†๋‹ค๊ณ  ๋‹ต๋ณ€ ๋ฐ›์•˜๋‹ค.


2. ๋ชจ๋ฅผ๋• ์žฌ๋ถ€ํŒ…์ด์ง€!

 

AWS MSK ์ฝ˜์†”์— ๋“ค์–ด๊ฐ€๋ฉด ๋ธŒ๋กœ์ปค ์žฌ๋ถ€ํŒ… ๋ฒ„ํŠผ์ด ์žˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ธŒ๋กœ์ปค๋ฅผ ์žฌ๋ถ€ํŒ… ํ•ด๋ดค๋‹ค.

→ ์žฌ๋ถ€ํŒ… ์งํ›„์—๋Š” kafka-ui ์—ฐ๊ฒฐ๋„ ์ž˜ ๋˜๋Š”๋“ฏ ์‹ถ๋‹ค๊ฐ€ ๋ช‡ ๋ถ„ ์ง€๋‚˜๋ฉด ๋™์ผํ•œ ์ฆ์ƒ์„ ๋ณด์ธ๋‹ค.

 

3. ๋ธŒ๋กœ์ปค ๋กœ๊ทธ๋ฅผ ์ผœ๋ณด์ž

kafka-ui์—์„œ ๋ธŒ๋กœ์ปค ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์—†๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„, ๋ธŒ๋กœ์ปค์— ์ด์Šˆ๊ฐ€ ์žˆ์–ด์„œ ์—ฐ๊ฒฐ์ด ์•ˆ๋˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ connection ์ด์Šˆ ๋ฐ broker endpoint๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ์–ด๋ ค์› ๋‹ค.

๊ทธ๋ž˜์„œ ๋ธŒ๋กœ์ปค ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก S3์— ๋ธŒ๋กœ์ปค ๋กœ๊ทธ๋ฅผ ์Œ“๋Š” ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.

AWS ์ฝ˜์†”์—์„œ MSK ์„ค์ •์„ ํ™•์ธํ•ด๋ณด๋ฉด, ๋กœ๊ทธ์ „์†ก ์„ค์ •์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์›ํ•˜๋Š” S3 ๋ฒ„ํ‚ท์„ ๊ณจ๋ผ ๋กœ๊ทธ์ „์†ก ์„ค์ •์„ ONํ•˜๋ฉด ์„ค์ • ๋์ด๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด S3์—์„œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

4. ๋ฉ”์„ธ์ง€ ์ ๋ฆผ ํ˜„์ƒ์ธ๊ฐ€?

๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ์ ์ด ๋Œ€๋Ÿ‰ bulk ๋“ฑ๋ก์œผ๋กœ ์ธํ•ด ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ฐœํ–‰๋˜๊ณ  ๋‚œ ํ›„์ด๋‹ค. ๊ทธ๋Ÿผ ๋Œ€๋Ÿ‰ ๋ฉ”์„ธ์ง€๋ฅผ ์˜์‹ฌํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

๋ธŒ๋กœ์ปค๊ฐ€ ํ˜„์žฌ 2๊ฐœ์ธ๋ฐ, ๋„ˆ๋ฌด ์ ์€ ๋ธŒ๋กœ์ปค์— ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๋ชฐ๋ ค์„œ ์ฃฝ๋Š”๊ฒƒ์ธ๊ฐ€?

 

์˜ˆ์ƒ ์ด์œ 

  1. ๋ธŒ๋กœ์ปค ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๊พธ์ค€ํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์—ˆ๊ณ , CPU ์‚ฌ์šฉ๋ฅ ๊ณผ ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์ˆ˜๊ฐ€ ํ•˜๋‚˜์˜ ๋ธŒ๋กœ์ปค๋งŒ ํŠ€๊ณ  ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๊ฐ์†Œํ•˜๋Š” ๋ชจ์Šต์„ ๋ณด์ธ๋‹ค. ํ•˜๋‚˜์˜ ๋ธŒ๋กœ์ปค์— ์š”์ฒญ์ด ๋ชฐ๋ ค์„œ ์ฃฝ๋Š”๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.
  2. Pod์—์„œ BufferExhaustedException ์ด ๋ฐœ์ƒํ–ˆ๋‹ค

์ฃผํ™ฉ์ƒ‰ ๋ธŒ๋กœ์ปค๋งŒ ์ง€ํ‘œ๊ฐ€ ํŠ„ ๋‹ค์Œ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๊ฐ์†Œํ•˜๋Š” ๋ชจ์Šต์„ ๋ณด์ธ๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋กœ์ปค์˜ ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ณ , ๊ฐ€์žฅ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋Š” topic์„ ์ œ๊ฑฐํ•˜์˜€๋‹ค.

๋ธŒ๋กœ์ปค ๊ฐœ์ˆ˜๋Š” ๊ฐ€์šฉ์˜์—ญ๋‹น ๋ธŒ๋กœ์ปค 1๊ฐœ๋กœ ์ด 2๊ฐœ -> ๊ฐ€์šฉ์˜์—ญ๋‹น ๋ธŒ๋กœ์ปค 2๊ฐœ๋กœ ์ด 4๊ฐœ๋กœ 2๋ฐฐ ์ฆ๊ฐ€ํ•˜์˜€๋‹ค.

์œ„ ์ง€ํ‘œ์ฒ˜๋Ÿผ ๋„คํŠธ์›Œํฌ์™€ CPU ์‚ฌ์šฉ๋ฅ ์€ ์ค„์–ด๋“ค์—ˆ์ง€๋งŒ, ๋ธŒ๋กœ์ปค๊ฐ€ ์—ฐ๊ฒฐ์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ๋Š” ๋™์ผํ–ˆ๋‹ค.

 

5. SASL ์„ค์ • ๋ฌธ์ œ์ธ๊ฐ€?

์ •์ƒ ๋™์ž‘ํ•˜๋Š” ํŒ€์˜ MSK ์ธ์ฆ๋ฐฉ์‹์€ SASL/SCRAM, IAM ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

์šฐ๋ฆฌํŒ€์˜ ์ธ์ฆ๋ฐฉ์‹์€ IAM ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ์— ์ธ์ฆ ๋ฐฉ์‹์„ SASL๋กœ ๋ณ€๊ฒฝํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜์‹ฌํ•˜๋˜ ์™€์ค‘์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ๊ทธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋ณด์•ˆ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด๋ณด์•˜๋‹ค

AWS MSK ๋ณด์•ˆ์„ค์ • ํŽธ์ง‘์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฐฉ๋ฒ•๋„ ์‹คํŒจํ•˜์˜€๋‹ค.

 

๐Ÿ’ช๐Ÿป ๋“œ๋””์–ด ํ•ด๊ฒฐ!  

AWS MSK ๊ณต์‹ ํŽ˜์ด์ง€์— ๊ฒŒ์‹œ๋œ ๋ฌธ์˜ ๋‚ด์šฉ ์ค‘, SaslAuthenticationException ๊ด€๋ จ ๋‚ด์šฉ์ด ์žˆ์—ˆ๋‹ค. [๋ฐ”๋กœ๊ฐ€๊ธฐ] 

 

๋ณ„ ์ƒ๊ฐ ์—†์ด ๋ฌธ์„œ๋ฅผ ๋ณด๋‹ค๊ฐ€ ํ•ด๋‹น ๋‚ด์šฉ์ด ๋ˆˆ์— ๋“ค์–ด์™”๋‹ค. ์Œ? ์ดˆ๋‹น ํ•˜๋‚˜์˜ TCP ์—ฐ๊ฒฐ? ๋ƒ„์ƒˆ๊ฐ€ ๋‚ฌ๋‹ค. ๊ด€๋ จํ•ด์„œ ๋” ์ฐพ์•„๋ณด๋‹ˆ ๋‹ค๋ฅธ ๋ฌธ์˜๊ธ€๋„ ์žˆ์—ˆ๋‹ค. [๋ฐ”๋กœ๊ฐ€๊ธฐ]

์ด ๊ธ€์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ์žˆ์—ˆ๋‹ค.

MSK Connect์—์„œ IAM ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜์—ฌ t3 ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ˜„์žฌ t3 ์ธ์Šคํ„ด์Šค์— ์ ์šฉ๋œ ์—ฐ๊ฒฐ ์ œํ•œ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

์šฐ๋ฆฌ๋Š” MSK Connect๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , IAM๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์ง€๋งŒ t3๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋‹ˆ connection ๋ฌธ์ œ๋Š” ๋™์ผํ•  ๊ฒƒ์œผ๋กœ ์‰ฝ๊ฒŒ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ MSK broker์˜ ์ŠคํŽ™์„ t3.small -> m5.large ๋กœ ๋ณ€๊ฒฝํ•ด๋ณด์•˜๋‹ค. (15๋ถ„ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ 1์‹œ๊ฐ„์ด๋‚˜ ๊ฑธ๋ ธ๋‹ค... ๐Ÿ˜ก)

 

๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ, CPU ์‚ฌ์šฉ๋ฅ ์ด ๊ธ‰๊ฒฉํ•˜๊ฒŒ ์ค„์–ด๋“ค์—ˆ๋‹ค. connection ์ด์Šˆ๋กœ ์ธํ•œ CPU ๋ถ€ํ•˜๊ฐ€ ์ค„์–ด๋“  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ฐ™์€ ์—๋Ÿฌ๋Š” ๋”์ด์ƒ ๋ฐœ์ƒํ•˜์ง€ ์•Š์•˜๋‹ค!

๐Ÿ‘ผ๐Ÿป ๋ฌด์—‡์ด ๋ฌธ์ œ์ธ๊ฐ€  

1. consumer/producer ๋Š” ์™œ broker์— ๋ชป ๋ถ™์—ˆ์„๊นŒ?

์š”์ฒญํ•˜๋ ค๋Š” broker์— connection์„ ์–ป์ง€ ๋ชปํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ด์Šˆ์ด๋‹ค. t3.small์€ ์ดˆ๋‹น 1๊ฐœ์˜ connection๋งŒ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์— ๋งŽ์€ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ๊ฐ€ connection์„ ์–ป์ง€ ๋ชปํ•œ๋‹ค.

์‹ค์ œ pod์˜ ์—๋Ÿฌ ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด, DisconnectException ์ด ๋ฐœ์ƒํ•œ๋‹ค.

์ดˆ๋‹น 1๊ฐœ๋Š” ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„ํ—์ ์œผ๋กœ ๋ฉ”์„ธ์ง€ produce๋Š” ์„ฑ๊ณตํ–ˆ๋˜ ๊ฒƒ์ด๋‹ค.

 

2. kafka-ui ์—์„œ๋Š” ์™œ broker ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์—†์—ˆ์„๊นŒ?

kafka-ui๋Š” AdminClient ์— ์š”์ฒญํ•ด์„œ kafka ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ, ์ด ๋•Œ ๋ธŒ๋กœ์ปค๊ฐ€ connection ๋ฌธ์ œ๋กœ ์‘๋‹ต์„ ๋Šฆ๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. ๊ทธ๋ž˜์„œ kafka-ui pod์˜ ์—๋Ÿฌ๋กœ๊ทธ์—๋Š” TimeOutException์ด ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ๋„์ฐฉ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ๋ณด๋ฉด, timeout ์‹œ๊ฐ„์ธ 30000ms ๋ณด๋‹ค ๋Šฆ์€ 30903ms ๊ฐ€ ์†Œ์š”๋œ๋‹ค. ์•„์Šฌ์•„์Šฌํ•œ timeout์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„ํ—์ ์œผ๋กœ kafka-ui๊ฐ€ ์ •์ƒ๋™์ž‘ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์˜€๋˜ ๊ฒƒ์ด๋‹ค.

 

3. ์นดํ”„์นด๋Š” ๋Œ€์šฉ๋Ÿ‰ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์„œ๋น„์Šค๋ผ๋ฉด์„œ ์ด์ •๋„๋กœ ๋ป—์–ด๋„ ๋˜๋‚˜?

์ด ์ด์Šˆ์˜ ์›์ธ์€ ์นดํ”„์นด๋ผ๊ธฐ ๋ณด๋‹ค๋Š” AWS MSK์˜ ์ด์Šˆ์ด๋‹ค.

AWS MSK์—์„œ๋Š” TCP Connection ์ œํ•œ์ด ์กด์žฌํ•˜๊ณ , ํด๋Ÿฌ์Šคํ„ฐ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

AWS MSK serverless์˜ connection quota๋Š” [์—ฌ๊ธฐ์„œ] ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฐธ๊ณ ๋กœ t3.small ์€ ๋ธŒ๋กœ์ปค๋งˆ๋‹ค ์ดˆ๋‹น 1๊ฐœ์˜ TCP ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๊ณ , burst enable์‹œ 4๊ฐœ๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

4. ๊ทธ๋Ÿผ ์™œ ์—ฌํƒœ๊นŒ์ง€ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์„๊นŒ?

์ง€๊ธˆ๊นŒ์ง€๋Š” ๋Œ€๋Ÿ‰์˜ ์š”์ฒญ์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ธŒ๋กœ์ปค๊ฐ€ ์ดˆ๋‹น 1๊ฐœ์˜ TCP Connection์œผ๋กœ๋„ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋‹ค. ๋งŽ์€ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ฐœํ–‰๋˜์ง€๋„ ์•Š์•˜๊ณ , ์ž ๊น ์š”์ฒญ์ด ๋ชฐ๋ฆฌ๋”๋ผ๋„ connection ํš๋“์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ํ•ด๊ฒฐ๋๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๋‹ค.

๋ธŒ๋กœ์ปค ๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด, disconnected ํ˜น์€ closing connection ๊ณผ ๊ฐ™์€ connection ์ด์Šˆ๋“ค๋งŒ ๋ฐœ์ƒํ•œ๋‹ค.

 

๐Ÿ˜ฑ ๋˜๋‹ค๋ฅธ ๋ฌธ์ œ...  

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ MSK์˜ broker ์ŠคํŽ™์„ t3.small๋กœ ๋‚ฎ์ถ”์—ˆ๋‹ค. ๊ฐœ๋ฐœ์„œ๋ฒ„ ๋น„์šฉ์„ ์•„๋ผ์ž๋Š” ์˜๊ฒฌ์ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— m5.large๋Š” ํ•„์š”ํ•  ๋•Œ ๋‹ค์‹œ ์˜ฌ๋ฆฌ๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

๊ทธ๋ž˜์„œ ๋Œ€์šฉ๋Ÿ‰ ์š”์ฒญ์€ ์ตœ๋Œ€ํ•œ ์ง€์–‘ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

์‹ค์ œ๋กœ ์š”์ฒญํ•œ ๋ฉ”์„ธ์ง€ ๊ฑด์ˆ˜๋Š” ๋ช‡์ฒœ๊ฑด(๋Œ€๋žต 2000๊ฑด)์— ๋ถˆ๊ณผํ–ˆ์ง€๋งŒ, ์ƒˆ๋กœ๋งŒ๋“  msk์—์„œ 1์ฃผ์ผ๋งŒ์— offset์ด 227,148,710 ๊ฑด๊นŒ์ง€ ๋Š˜์–ด๋‚ฌ๋‹ค. 2000๊ฑด์˜ ๋ฉ”์„ธ์ง€๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค๋ฅธ ๋ฉ”์„ธ์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋”๋ผ๋„ ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๊ณ  ์žˆ์—ˆ๋‹ค.

๋ธŒ๋กœ์ปค ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•ด๋ณด๋‹ˆ linearํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ์ค‘๊ฐ„์— ํŠ€๋Š” ๊ฒƒ ์—†์ด ๊พธ์ค€ํ•˜๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ด์ƒํ–ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ๋ฉ”์„ธ์ง€๊ฐ€ ์žฌ๋ฐœํ–‰๋˜๊ณ  ์žˆ๋‹ค๊ณ  ํŒ๋‹จํ•˜์˜€๊ณ , ๊ทธ์— ๋”ฐ๋ฅธ ๋ฌธ์ œ์ƒํ™ฉ์„ ์‚ดํŽด๋ณด์•˜๋‹ค.

 

๐Ÿ”Ž ๋ฌธ์ œ ํŒŒ์•…  

producer์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์žฌ๋ฐœํ–‰ ์ด์Šˆ๋ฉด, pod์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ kafka๋กœ์˜ ์š”์ฒญ ๊ฑด์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ pod๋Š” ๋ชจ๋‘ ์ •์ƒ์ƒํƒœ์˜€๋‹ค.

msk ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ, ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์ˆ˜์—๋Š” ์ฆ๊ฐ€๊ฐ€ ์—†์—ˆ๋‹ค. ํŒจํ‚ท ์ˆ˜๊ฐ€ ํ”ผํฌ์น  ๋•Œ๋Š” 2000๊ฑด์˜ ์š”์ฒญ์„ ๋ณด๋‚ธ ๊ฒƒ์ด๊ณ , ๊ทธ ์ดํ›„์—๋Š” ์•ˆ์ •๋œ ๋ชจ์Šต์„ ๋ณด์ธ๋‹ค.

 

์ง€ํ‘œ๋ฅผ ํ™•์ธํ•˜๋˜ ์ค‘ ๋ธŒ๋กœ์ปค๋ณ„ CPU ํฌ๋ ˆ๋”ง ์ž”์•ก ์ด๋ผ๋Š” ์ง€ํ‘œ ๋ˆˆ์— ๋„์—ˆ๋‹ค. ๋ญ”๊ฐ€ ๋ƒ„์ƒˆ๊ฐ€ ๋‚œ๋‹ค.

 

CPU ํฌ๋ ˆ๋”ง ์ž”์•ก์€ 1๋ฒˆ ๋ธŒ๋กœ์ปค(ํŒŒ๋ž€์ƒ‰) ๋งŒ ๋‚จ์•„์žˆ๋Š”๋ฐ, ํŒจํ‚ท์ˆ˜์™€ ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•ด๋ณด๋ฉด 1๋ฒˆ ๋ธŒ๋กœ์ปค๊ฐ€ ์ œ์ผ ๋‚ฎ๋‹ค. 1๋ฒˆ ๋ธŒ๋กœ์ปค๊ฐ€ ์ œ์ผ ์ผ์„ ์•ˆํ•ด์„œ ์ž”์•ก์ด ๋‚จ๋Š”๊ฑด๊ฐ€? ๊ทธ๋Ÿผ ์ž”์•ก์ด ์—†์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฑฐ์ง€?

 

๊ด€๋ จํ•ด์„œ ์ฐพ์•„๋ณด๋‹ˆ T2/T3์—์„œ๋Š” ํฌ๋ ˆ๋”ง ์ž”์•ก์ด 0์— ๊ฐ€๊นŒ์šฐ๋ฉด CPU ์‚ฌ์šฉ์ด ์ œํ•œ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. [๊ด€๋ จ AWS ๋ฌธ์˜]

ํฌ๋ ˆ๋”ง์ด ์—†์–ด์„œ CPU์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๊ฑฐ์˜€๊ตฌ๋‚˜! ๊ด€๋ จํ•ด์„œ ๊ณต์‹๋ฌธ์„œ๋ฅผ ๋” ์ฐพ์•„๋ณด์•˜๋‹ค.

T ์œ ํ˜• ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ ๋กœ T ์œ ํ˜• ์ธ์Šคํ„ด์Šค์—๋Š” ๊ธฐ์ค€ ์„ฑ๋Šฅ๊ณผ ํ•จ๊ป˜ ๋ฒ„์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ธ์Šคํ„ด์Šค๋Š” ๊ธฐ์ค€ ์„ฑ๋Šฅ์œผ๋กœ CPU ์‚ฌ์šฉ๋ฅ  20%๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด ์ธ์Šคํ„ด์Šค ์œ ํ˜•์ด CPU ํฌ๋ ˆ๋”ง์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฅ ์ด 20% ๋ฏธ๋งŒ์ด๋ฉด CPU ํฌ๋ ˆ๋”ง์ด ๋ˆ„์ ๋ฉ๋‹ˆ๋‹ค.

CPUCreditBalance ์ง€ํ‘œ ์— ํ‘œ์‹œ๋œ CPU ํฌ๋ ˆ๋”ง์€ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ธฐ์ค€ CPU ์‚ฌ์šฉ๋ฅ ์„ ์ดˆ๊ณผํ•˜์—ฌ ๋ฒ„์ŠคํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

T ์œ ํ˜• ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ธฐ์ค€ CPU ์‚ฌ์šฉ๋Ÿ‰๊ณผ ํฌ๋ ˆ๋”ง ์ž”์•ก์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. CPU ์‚ฌ์šฉ๋Ÿ‰์ด ๊ธฐ์ค€๋ณด๋‹ค ๋งŽ๊ณ  ๋”๋Š” ์‚ฌ์šฉํ•  ํฌ๋ ˆ๋”ง์ด ์—†์œผ๋ฉด ํด๋Ÿฌ์Šคํ„ฐ์— ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
[AWS ๊ณต์‹๋ฌธ์„œ]

 

ํ•œ๋ฒˆ์— ๋งŽ์€ ์š”์ฒญ์œผ๋กœ CPU๊ฐ€ ๋ถ€ํ•˜๋ฅผ ๋ฐ›๊ฒŒ ๋˜์—ˆ๊ณ , ์ด๋กœ ์ธํ•ด ๋ฉ”์„ธ์ง€ ๋ฐœ์†ก ๋ฐ ์ฒ˜๋ฆฌ๊ฐ€ ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•„์„œ, ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๊ฐ€ ๊ณ„์† ์Œ“์ด๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

 

๐Ÿ˜ข ์šด์˜์€ ๊ดœ์ฐฎ๋‚˜...?  

๋ฉ€์ฉกํ•˜๋‹ค. ์™œ์ผ๊นŒ?

์šด์˜์€ T ์œ ํ˜•์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐœ๋ฐœ์€ t3.small์ด๊ณ  ์šด์˜์€ m5.large ๋ผ์„œ ํฌ๋ ˆ๋”ง ์ž”์•ก์— ๋”ฐ๋ฅธ ์ด์Šˆ๋Š” ์—†๋‹ค.

์šด์˜ msk ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ ํฌ๋ ˆ๋”ง ๊ด€๋ จ ์ง€ํ‘œ๋Š” ์กด์žฌํ•˜์ง€๋„ ์•Š๋Š”๋‹ค!

 

๐Ÿ‘Š ์•ž์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ  

1. ํ…Œ์ŠคํŠธ ์„œ๋ฒ„ MSK์— IAM Role ์ ์šฉ ์—ฌ๋ถ€

๋ฌผ๋ก  ์šฐ๋ฆฌํŒ€์€ SASL๋กœ ์ธ์ฆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋Š” ์—†์ง€๋งŒ, IAM Role๋กœ ์ธ์ฆํ•˜๋Š” ํŒ€์—์„œ๋Š” ๋…ผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. IAM Role๋กœ ์ธํ•ด TCP Connection์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— msk์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ๊ต‰์žฅํžˆ ๋†’์•„์ง„๋‹ค.

AWS์—์„œ๋„ t3 MSk์—์„œ๋Š” IAM Role์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ๊ถŒ์žฅํ•œ๋‹ค.

2. ์ŠคํŽ™ ๋…ผ์˜ (t3.small VS m5.large)

t3.small ๊ณผ m5.large ์˜ ์š”๊ธˆ์ฐจ์ด๋Š” ์•ฝ 5๋ฐฐ ์ •๋„ ๋‚œ๋‹ค.

๊ทธ๋ž˜์„œ ๊ณผ๊ธˆ ๊ด€๋ จํ•˜์—ฌ devops ํŒ€๊ณผ ๋…ผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค!

3. ๋ธŒ๋กœ์ปค ๊ฐœ์ˆ˜ ๋…ผ์˜

AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒ์—์„œ๋Š”, t3.small ์— ์ถ”์ฒœํ•˜๋Š” ๋ธŒ๋กœ์ปค ๊ฐœ์ˆ˜๋Š” 30๊ฐœ์ด๋‹ค.

๋”ฐ๋ผ์„œ ๋ธŒ๋กœ์ปค ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์–ด ๋ณด์ธ๋‹ค. (๋ธŒ๋กœ์ปค ๊ฐœ์ˆ˜ 30๊ฐœ ํ• ๊ฑฐ๋ฉด... m5.large ๊ฐ€ ๋‚ซ์ง€ ์•Š๋‚˜?)

 

MSK ์„ค์ • ํ•˜๋‚˜๋กœ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—... ๋‹ค๋ฅธ ๋ถ„๋“ค์€ ์ด ๊ธ€์„ ํ†ตํ•ด ์†Œ์ค‘ํ•œ ์‹œ๊ฐ„์„ ์•„๋ผ๊ธธ ๋ฐ”๋ผ๋ฉฐ... ๋...!

 

๐Ÿ“š ์ฐธ๊ณ ์ž๋ฃŒ  

[Amazon MSK Quota]

[can AWS remove the connection limit?]

[Troubleshoot connect to MSK cluster]

[MSK pricing]

[BestPractice - Broker per cluster]

[MSK Sizing Pricing]

[Troubleshoot high CPU usage in MSK]

'AWS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

AWS S3์— soft delete๋ฅผ ์ ์šฉํ•ด๋ณด์ž  (1) 2024.06.25

+ Recent posts