[Zipkin] ๋ถ„์‚ฐ ์ถ”์ ์„ ์œ„ํ•œ Zipkin,  Kafka ํ†ต์‹  ์‹œ TraceId ์•ˆ ์ฐํžˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

[Zipkin] ๋ถ„์‚ฐ ์ถ”์ ์„ ์œ„ํ•œ Zipkin, Kafka ํ†ต์‹  ์‹œ TraceId ์•ˆ ์ฐํžˆ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ

1. Zipkin ์ด๋ž€?Zipkin์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ์˜ ์š”์ฒญ ์ถ”์ ์„ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ์ด๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์–ด๋–ค ์š”์ฒญ์ด ์–ด๋””์„œ ์ง€์—ฐ๋˜์—ˆ๋Š”์ง€, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค. Zipkin์œผ๋กœ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์€ ๋Œ€ํ‘œ์ ์œผ๋กœ HTTP, gRPC๊ฐ€ ์žˆ๋‹ค. ๋‚˜์ค‘์— ๋‹ค๋ฃฐ ๋‚ด์šฉ์ด์ง€๋งŒ, Kafka๋ฅผ ์‚ฌ์šฉํ•œ ํ†ต์‹  ์‹œ Zipkin์—์„œ๋Š” ํ๋ฆ„์„ ์ถ”์ ํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด์šฉ๋„ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ˆ ์ฐธ๊ณ ๋ฐ”๋ž€๋‹ค.             2. Zipkin ๊ด€๋ จ ์ปดํฌ๋„ŒํŠธ ์šฉ์–ด ์ •๋ฆฌZipkin Client Library์„œ๋น„์Šค์—์„œ ํŠธ๋ž˜์ด์Šค ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ Zipkin ์„œ๋ฒ„์˜ Collector๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. Colle..

  • textsms
Blue/Green ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์‹œ ๊ตฌ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์–ธ์ œ ์ข…๋ฃŒํ•ด์•ผ ํ• ๊นŒ? (graceful shutdown)

Blue/Green ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์‹œ ๊ตฌ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์–ธ์ œ ์ข…๋ฃŒํ•ด์•ผ ํ• ๊นŒ? (graceful shutdown)

1. ๊ฐœ์š”์ง„ํ–‰ ์ค‘์ธ Jikgong ์„œ๋น„์Šค์—์„œ Nginx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Blue/Green  ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ์ „๋žต์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ ์‹œ ๋‹ค์šด ํƒ€์ž„์„ ์ตœ์†Œํ™” ์‹œ์ผฐ๋‹ค.  ๊ทธ ๊ณผ์ •์—์„œ ์ž‘์„ฑํ•œ deploy.sh ํŒŒ์ผ์—” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜์–ด์žˆ๋‹ค. # ๊ธฐ์กด์— ์‹คํ–‰ ์ค‘์ด์—ˆ๋˜ docker-compose๋Š” ์ข…๋ฃŒ์‹œ์ผœ์ค๋‹ˆ๋‹ค.echo "jikgong-${TERMINATE_CONTAINER} down"sudo docker-compose -f docker-compose.${TERMINATE_CONTAINER}.yml down --rmi all ์ด ๋ถ€๋ถ„์ด ๋ฌธ์ œ์˜€๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ Blue/Green ๋ฐฉ์‹์˜ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด 1. ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™2. ์ง€์†์ ์ธ ํ—ฌ์Šค์ฒดํฌ๋กœ ๊ตฌ๋™ ์™„๋ฃŒ ํ™•์ธ3. ๊ตฌ๋™ ..

  • textsms
AWS RDS์— ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•ด๋ณด์ž (EC2 ํ„ฐ๋„๋ง)

AWS RDS์— ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•ด๋ณด์ž (EC2 ํ„ฐ๋„๋ง)

1. ๊ฐœ์š”์ตœ๊ทผ ์•„๋ฌด์ƒ๊ฐ์—†์ด RDS๋ฅผ ํผ๋ธ”๋ฆญ์œผ๋กœ ์—ด์–ด๋’€๋‹ค๊ฐ€ ์š•(?)์„ ๋จน๊ณ  ์ˆ˜์ •ํ•œ ๊ณผ์ •์— ๋Œ€ํ•ด ๊ณต์œ ํ•˜๊ณ ์ž ํ•œ๋‹ค.     2. ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ํ—ˆ์šฉ ์—ฌ๋ถ€๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด RDS๋ฅผ ๋งŒ๋“œ์‹  ๋ถ„๋“ค์€ ๋Œ€๋ถ€๋ถ„ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ–ˆ์„ ๊ฑฐ๋ผ ์ƒ๊ฐ์ด ๋“ ๋‹ค. "RDS ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค" ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ๊ตฌ๊ธ€๋ง ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๋ธ”๋กœ๊ทธ๋“ค์ด ๋งŽ์ด ๋ณด์ธ๋‹ค.   ์˜ˆ์ „์— ๋‚˜๋„ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ RDS์— ์ ‘๊ทผํ•˜๋ ค ํ•˜๋Š”๋ฐ ์ ‘๊ทผ์ด ๋ง‰ํ˜”๊ณ  ๊ตฌ๊ธ€๋งํ•ด์„œ ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค๋ฅผ ์—ด์–ด์คฌ๋˜ ๊ธฐ์–ต์ด ๋‚œ๋‹ค.  ํ•˜์ง€๋งŒ ์™ธ๋ถ€์—์„œ DB์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š”๊ฑด ์œ„ํ—˜ํ•˜๋‹ค. EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ RDS ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๋ฉด ์™ธ๋ถ€์—์„œ ์ ‘์†ํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋”์šฑ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค๋ฅผ ๋ง‰์„ ๊ฒฝ์šฐ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ๋ฐฉ๋ฒ•์ด ์—†์ง€ ์•Š๋Š๋ƒ? ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Š” ๊ฐ™์€ VPC..

  • textsms
์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ, ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ์ฐจ์ด

์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ, ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ์ฐจ์ด

1. ๊ฐœ์š”์—ฌ๋Ÿฌ ๋ฆฌํŽ™ํ† ๋ง์„ ๊ฑฐ์น˜๋ฉด์„œ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ํ•ด๋‚˜๊ฐ€๋˜ ์ค‘, ์„ฑ๋Šฅ์„ ์ˆ˜์น˜ํ™”ํ•  ํ•„์š”์„ฑ์„ ๋Š๊ผˆ๋‹ค. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ, ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ํ‰๊ฐ€ํ•˜๋Š” ์ค‘์š”ํ•œ ๋„๊ตฌ๋“ค์ด๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ์˜ ์ •์˜์™€ ๋ชฉ์ , ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค.    2. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ (Performance Test)์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ํŠน์ • ์ƒํ™ฉ์—์„œ ์‹œ์Šคํ…œ์˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ์ž์›์˜ ์‚ฌ์šฉ๋Ÿ‰, ํ™•์žฅ์„ฑ, ์‹ ๋ขฐ์„ฑ ๋“ฑ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋‹ค.  ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์™€ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ๋“ฑ์˜ ํ‚ค์›Œ๋“œ๋ฅผ ๋งŽ์ด ์ ‘ํ•ด๋ดค์„ ๊ฒƒ์ด๋‹ค. ์•„๋ž˜์˜ ์‚ฌ์ง„์„ ๋ณด๋ฉด ํ•ด๋‹น ํ…Œ์ŠคํŠธ๋“ค์€ ๋ชจ๋‘ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ํ•˜์œ„์— ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋งŒ..

  • textsms
PromTail, Loki, Grafana๋กœ ๋กœ๊ทธ ์ˆ˜์ง‘ ํ™˜๊ฒฝ ๊ตฌ์ถ•

PromTail, Loki, Grafana๋กœ ๋กœ๊ทธ ์ˆ˜์ง‘ ํ™˜๊ฒฝ ๊ตฌ์ถ•

1. ๊ฐœ์š”๋กœ๊ทธ ์ˆ˜์ง‘์„ ํ•˜๊ธฐ ์œ„ํ•œ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ํ•˜๋ฉด ๋‹น์—ฐํžˆ ELK(Elasticsearch, Logstash, Kibana)๋ฅผ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌด๊ฑฐ์šด ELK๋ฅผ ๊ฐ๋‹นํ•˜๊ธฐ์—” ์„œ๋ฒ„ ์ŠคํŽ™์ด ๋‚ฎ์•˜๊ณ , ๋น„๊ต์  ๊ฐ€๋ณ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” PromTail, Loki, Grafana๋ฅผ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.  ๋˜ํ•œ ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘์€ Prometheus, Grafana๋กœ ์ด๋ฏธ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„์ž…์˜ ๊ทผ๊ฑฐ๋Š” ๋”์šฑ ๋ช…ํ™•ํ–ˆ๋‹ค.   ์–ด์ฉŒ๋‹ค๋ณด๋‹ˆ ๋กœ๊ทธ ์ˆ˜์ง‘ ํ™˜๊ฒฝ ๊ตฌ์ถ•๋งŒ 3๋ฒˆ์งธ์ด๋‹ค. Cloud Watch, ELK, Loki..       2. Grafana & Promtail & Loki ์„ค์น˜ Grafana๋Š” ์˜คํ”ˆ ์†Œ์Šค๋กœ ์ œ๊ณต๋˜๋Š” ๋Œ€์‹œ๋ณด๋“œ ๋ฐ ์‹œ๊ฐํ™” ํ”Œ๋žซํผ์ด๋‹ค. ๊ทธ๋ผํŒŒ๋‚˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋Œ€์‹œ๋ณด๋“œ์™€ ๊ทธ๋ž˜ํ”„ ..

  • textsms
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ž„๊ณ„์น˜ ๋„๋‹ฌ ์‹œ Slack์œผ๋กœ ์•Œ๋ฆผ ๋ฐ›์•„๋ณด๊ธฐ (Grafana Alert)

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ž„๊ณ„์น˜ ๋„๋‹ฌ ์‹œ Slack์œผ๋กœ ์•Œ๋ฆผ ๋ฐ›์•„๋ณด๊ธฐ (Grafana Alert)

1. ๊ฐœ์š”์˜ˆ์ „์— ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค, ๊ทธ๋ผํŒŒ๋‚˜๋ฅผ ๋„์ปค๋กœ ๋„์›Œ ์Šคํ”„๋ง ๋ถ€ํŠธ ๋ชจ๋‹ˆํ„ฐ๋ง ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๋งค๋ฒˆ ๋ˆˆ์œผ๋กœ๋งŒ ํ•˜๊ธฐ๋Š” ํž˜๋“ค๋‹ค. ๊ทธ๋ผํŒŒ๋‚˜์—์„  ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด slack, email ๋“ฑ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด์ค„ ์ˆ˜ ์žˆ๋‹ค.  ์‚ฌ์‹ค ์ฒ˜์Œ ๋ชจ๋‹ˆํ„ฐ๋ง ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ์„ ๋•Œ๋„ slack์œผ๋กœ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋„๋ก ํ•˜๊ณ ์‹ถ์—ˆ๋Š”๋ฐ, PromQL ๋‹ค๋ฃจ๋Š”๋ฐ ๋ฏธ์ˆ™ํ•ด์„œ ์‹คํŒจํ–ˆ์—ˆ๋‹ค.  ์ด๋ฒˆ์— ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด์„œ ๊ธฐ๋กํ•ด๋‘๋ ค ํ•œ๋‹ค.       2. Slack ์„ค์ •๋จผ์ € ์•Œ๋žŒ ๋ฉ”์‹œ์ง€๋ฅผ Slack์œผ๋กœ ์ „๋‹ฌ๋ฐ›๊ธฐ ์œ„ํ•ด Slack์˜ Web Hook ์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.   Slack App ์ƒ์„ฑํ•˜๊ธฐ Slack API ํ™ˆํŽ˜์ด์ง€์— ์ ‘์†ํ•œ ํ›„ ๋กœ๊ทธ์ธ ํ•ด์ค€๋‹ค. ๋กœ๊ทธ์ธ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, Create New App ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด Slack App์„ ์ƒ์„ฑํ•ด..

  • textsms