K6 ํƒ์ƒ‰์  ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ, CloudWatch/SNS ์‹ค์Šต

K6 ํƒ์ƒ‰์  ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ, CloudWatch/SNS ์‹ค์Šต

2025-07-17ยท
TechAWSK6DevOpsACC

์ž๋ฃŒ์‹ค

๐Ÿ™‹โ€โ™‚๏ธ ๋ฐœํ‘œ์ž: ๊น€์ฐฌ๋นˆ
๐Ÿ“† ๋ฐœํ‘œ์ผ: 2025๋…„ 7์›” 17์ผ
๐ŸŽค ์ฃผ์ œ: K6 ํƒ์ƒ‰์  ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ: SLI ์ธก์ •๊ณผ SNS/Gmail ์•Œ๋žŒ ์—ฐ๋™ ์‹ค์Šต
๋ฐœํ‘œ์ž๋ฃŒ ๋‹ค์šด๋กœ๋“œ (PDF)

๋“ค์–ด๊ฐ€๋ฉฐ

์•ˆ๋…•ํ•˜์„ธ์š”.
ํ˜„์žฌ ๋Œ€ํ•™์ƒ AWS ์ปค๋ฎค๋‹ˆํ‹ฐ AWS Cloud Clubs์—์„œ DevRel(Core)๋กœ ํ™œ๋™ํ•˜๊ณ  ์žˆ๋Š” ๊น€์ฐฌ๋นˆ์ž…๋‹ˆ๋‹ค.
๊ธˆ์ผ ์„ธ๋ฏธ๋‚˜ ์„ธ์…˜์—์„œ ์ง„ํ–‰ ํ•œ "K6 ํƒ์ƒ‰์  ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ: SLI ์ธก์ •๊ณผ SNS/Gmail ์•Œ๋žŒ ์—ฐ๋™ ์‹ค์Šต" ๋ฐœํ‘œ ๋‚ด์šฉ์„
๋ธ”๋กœ๊ทธ ๊ธ€ ํ˜•ํƒœ๋กœ ํ•œ๋ฒˆ ๋” ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์Šต์‹œ์ž‘์ด๋ฏธ์ง€

์‹ค์Šต์€ ๋‹จ์ˆœํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋„˜์–ด์„œ, SLI ์ง€ํ‘œ ์„ค๊ณ„์™€
์‹ค์‹œ๊ฐ„ ์žฅ์•  ๊ฐ์ง€ ์•Œ๋ฆผ ์‹œ์Šคํ…œ ๊ตฌ์ถ•๊นŒ์ง€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒ˜์Œ AWS๋ฅผ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ, ๋…ธ๋ฒ ์ด์Šค ๋ถ„๋“ค๋„ ๋งŽ์•„ ์ตœ๋Œ€ํ•œ ํฅ๋ฏธ๋ฅผ ์ด๋Œ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์„ธ๋ฏธ๋‚˜ ์‹ค์Šต์„ ์‰ฝ๊ฒŒ ๋”ฐ๋ผ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๋ฆฌ ์„ค์ •๋œ AMI๋ฅผ ์ œ๊ณตํ–ˆ์œผ๋ฉฐ, ์„ธ์…˜ ์ข…๋ฃŒ ์ดํ›„ ๋” ์ด์ƒ ๊ณต์œ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์™œ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์™€ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ์ค‘์š”ํ•œ๊ฐ€?

"๋ธ”๋ž™ํ”„๋ผ์ด๋ฐ์ด, ์„œ๋ฒ„ ๋‹ค์šด์œผ๋กœ ์ˆ˜์–ต ์› ์†์‹ค!"
๋ธ”๋ž™ํ”„๋ผ์ด๋ฐ์ด_๊ทธ๋ž˜ํ”„
2018 ํ—๊ฐ€๋ฆฌ ๋ธ”๋ž™ํ”„๋ผ์ด๋ฐ์ด ์ฃผ๋ฌธ ํŠธ๋ž˜ํ”ฝ ํ† ํ”ฝ

ํ—๊ฐ€๋ฆฌ์—์„œ ๋‚˜์˜จ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.
๋ธ”๋ž™ํ”„๋ผ์ด๋ฐ์ด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ž€ ์ด๋ฆ„์˜ ์ž๋ฃŒ์ด๋ฉฐ, ๋ณธ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

"๋ธ”๋ž™ ํ”„๋ผ์ด๋ฐ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ํ—๊ฐ€๋ฆฌ ๊ณ ๊ฐ๋“ค์ด ๊ฒฝํ—˜ํ•œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ์›น์‚ฌ์ดํŠธ ๊ณ ์žฅ, ์ œ๊ณต๋œ ์ƒํ’ˆ์˜ ์‚ฌ์šฉ ๋ถˆ๊ฐ€/๋ถ€์กฑ, ๊ฒฐ์ œ ์‹œ์Šคํ…œ ์˜ค์ž‘๋™..."

์ด์ฒ˜๋Ÿผ, ์„œ๋น„์Šค ์žฅ์• ๋Š” ๊ณง ์„œ๋น„์Šค์˜ ์‹ ๋ขฐ๋„ ๋ฟ ๋งŒ ์•„๋‹ˆ๋ผ,
์ง์ ‘์ ์ธ ๋งค์ถœ ๋“ฑ์—๋„ ํฐ ์˜ํ–ฅ์„ ๋ผ์นฉ๋‹ˆ๋‹ค.

๋ถ€ํ•˜ํ…Œ์ŠคํŠธ,๋ชจ๋‹ˆํ„ฐ๋ง ํˆด

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์— ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋Š” ํ˜„ํ–‰ ์‹œ์Šคํ…œ์˜ ํ•œ๊ณ„๋ฅผ ๋ฏธ๋ฆฌ ํŒŒ์•…ํ•˜๊ณ ,
์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์žฅ์• ๋ฅผ ์˜ˆ๋ฐฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ํ•จ๊ป˜ ๋˜์–ด์•ผ
์กฐ๊ธฐ์— ๊ฐ์ง€ํ•˜๊ณ , ๋น ๋ฅธ ๋Œ€์‘์œผ๋กœ ํ”ผํ•ด๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ํˆด์ด ์žˆ์ง€๋งŒ, ๊ทธ ์ค‘์—์„œ๋„ K6์™€ CloudWatch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ์…˜์„ ์ง„ํ–‰ํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.


์‹ค์Šต ์ธํ”„๋ผ ๊ตฌ์„ฑ

์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๊ตฌ์„ฑ ๋‹ค์ด์–ด๊ทธ๋žจ

  • EC2 ์ธ์Šคํ„ด์Šค 2๋Œ€: Node.js API ์„œ๋ฒ„, K6 ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„
  • Amazon CloudWatch: ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค
  • Amazon SNS: ์•Œ๋ฆผ ์ „์†ก ์„œ๋น„์Šค
  • Gmail: ์ตœ์ข… ์ด๋ฉ”์ผ ์ˆ˜์‹ 

Node.js ์„œ๋ฒ„

์‹ค์ œ ์„ธ๋ฏธ๋‚˜์—์„  "์ฝ”๋“œ๋ฅผ ๋งŒ๋“ ๋‹ค"๋ผ๋Š” ๊ฐœ๋…์„ ์ตœ์†Œํ™”ํ•˜๊ณ ,
AWS์— ๋Œ€ํ•œ ํฅ๋ฏธ๋ฅผ ์ตœ๋Œ€ํ™” ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„๊ฐ€ ์ž๋™ ์ˆ˜ํ–‰๋˜๋Š” AMI๋ฅผ ์ œ๊ณตํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ง€๊ธˆ์€ ์„ธ๋ฏธ๋‚˜๊ฐ€ ์ข…๋ฃŒ๋˜์–ด, ์ฝ”๋“œ๋งŒ ์•„๋ž˜์— ๊ธฐ๋กํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

const express = require('express');
const app = express();
const port = 3000;

app.get('/ping', (req, res) => {
    res.send('PONG!');
});

app.get('/stress', (req, res) => {
    const loop = parseInt(req.query.loop) || 100000;
    let sum = 0;

    for (let i = 0; i < loop; i++) {
        sum += i;
    }

    res.send(`stress test. Init: ${loop}, Sum: ${sum}`);
});

app.listen(port, () => {
    console.log(`port: ...`);
})

Node API ์„œ๋ฒ„๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.
/ping : "PONG!"์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์—”๋“œํฌ์ธํŠธ
/stress?loop=x : "x"๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆ˜๋ฅผ ๋ง์…ˆํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” API์ž…๋‹ˆ๋‹ค.

K6 ์„œ๋ฒ„

Node API ์„œ๋ฒ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, AMI๋กœ ์ œ๊ณต๋˜์—ˆ์—ˆ์œผ๋‚˜ ๋ณธ ๊ธ€์—์„  ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

import http from 'k6/http';  
import { sleep, check } from 'k6';

export const options = {  
    vus: 1,  
    duration: '5s',  
};

export default function () {  
    http.get('http://<์„œ๋ฒ„IP>:3000/ping');  
    check(res, {
        'status is 200': (r) => r.status === 200,
    });
    sleep(1);  
}  

K6 ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ์‹ค์Šต

์™œ K6๋ฅผ ๊ณจ๋ž์ง€?

  • ์˜คํ”ˆ์†Œ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ˆ„๊ตฌ๋“  ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • JavaScript๋กœ ์ž‘์„ฑ๋˜์–ด ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ์ ๋‹ค.
  • GUI ์—†์ด CLI๋กœ ๋น ๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ œํ•œ๋œ meet-up ์‹œ๊ฐ„ ๋‚ด ์ˆ˜ํ–‰ํ•˜๊ธฐ์— ์ ํ•ฉํ•˜๋‹ค ํŒ๋‹จํ–ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์˜ˆ์‹œ ์ฝ”๋“œ

import http from 'k6/http';  
import { sleep } from 'k6';

export const options = {  
    vus: 10,  
    duration: '10s',  
};

export default function () {  
    http.get('http://<์„œ๋ฒ„IP>:3000/stress?loop=10');  
    sleep(1);  
}  

ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๋Š” 10๋ช…์˜ ๊ฐ€์ƒ ์œ ์ €๊ฐ€ 10์ดˆ ๋™์•ˆ /stress API๋ฅผ 1์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์ž…๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ์‘๋‹ต ์‹œ๊ฐ„, ์‹คํŒจ์œจ, ๋ฐฑ๋ถ„์œ„ ์ˆ˜ ๋“ฑ์˜ ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•˜๋ฉด,

k6 run hands-on.js

์—ฌ๋Ÿฌ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. k6 ์‹คํ–‰ ๊ฒฐ๊ณผ

  • ์š”์ฒญ ์„ฑ๊ณต์—ฌ๋ถ€์— ๋Œ€ํ•œ ์ •๋ณด
  • HTTP ํ˜ธ์ถœ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ
  • ์‹คํ–‰ ํ†ต๊ณ„
  • ๋„คํŠธ์›Œํฌ ํ†ต๊ณ„

์ด ๋„ค๊ฐ€์ง€ ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ์—์„  ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค ๋ณด์ผ ์ˆ˜ ์žˆ์–ด๋„,
๋ถ€ํ•˜๋ฅผ ๋” ์ฃผ๋ฉด ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ํ•œ๊ณ„ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํƒ์ƒ‰์  ๋ถ„์„ ์˜ˆ ์ด์ฒ˜๋Ÿผ, ์ง€์†์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•œ๊ณ„์น˜๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๊ณผ์ •์„
ํƒ์ƒ‰์  ๋ฐ์ดํ„ฐ ๋ถ„์„์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.


SLI๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

SLI (Service Level Indicator) ๋Š”
์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ ์ง์ ‘ ์ฒด๊ฐ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค ํ’ˆ์งˆ ์ง€ํ‘œ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

๋„ˆ๋ฌด ์–ด๋ ต๊ฒŒ ์ƒ๊ฐํ•  ๊ฒƒ ์—†์ด,
์•„๋ž˜ ํ‘œ์™€ ๊ฐ™๋‹ค๊ณ  ๋ณด๋ฉด ๋  ๊ฒƒ ๊ฐ™์•„์š”.

์šฉ์–ด ์„ค๋ช… ๋” ์‰ฝ๊ฒŒ
SLI ํ˜„์žฌ ์ธก์ •๋œ ์„ฑ๋Šฅ ์ง€ํ‘œ ํ˜„์žฌ ์ƒํƒœ
SLO ์„œ๋น„์Šค ์ œ๊ณต์ž๊ฐ€ ์„ค์ •ํ•œ ๋ชฉํ‘œ ์ˆ˜์ค€ ๋ชฉํ‘œ ์ƒํƒœ
SLA ์œ„๋ฐ˜ ์‹œ ๊ณ ๊ฐ๊ณผ ๋งบ์€ ๊ณ„์•ฝ ๋ฐ ๋ณด์ƒ ์กฐ๊ฑด ๊ณ„์•ฝ

์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๋ฉด,

  • SLI: ํ‰๊ท  ์‘๋‹ต์‹œ๊ฐ„ 7.19ms
  • SLO: 20ms ์ดํ•˜
  • SLA: ์ดˆ๊ณผ ์‹œ SLA ์œ„๋ฐ˜, ๋ณด์ƒ ์กฐ๊ฑด ์ˆ˜ํ–‰

์ด๋Ÿฐ ์‹์œผ๋กœ, ๋˜๊ฒ ๋„ค์š”!

SRE ์š”์†Œ


CloudWatch, SNS, Gmail ์•Œ๋ฆผ ๊ตฌ์ถ•

์•ž์„œ ์„ค์ •ํ•œ ์ง€ํ‘œ์™€ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ
์•Œ๋ฆผ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ SNS ์ฃผ์ œ ์ƒ์„ฑ

SNS๋Š” "AWS Simple Notification Service"๋กœ,
MQ(Message Queue) ์™€ ๊ฐ™์ด โ€œ๊ตฌ๋…์žโ€๋“ค์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ MQTT์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ "์ €์žฅ"ํ•˜์—ฌ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋Š” ์•Š์•„์š”!

์ด๋ฉ”์ผ ๋ฟ ์•„๋‹ˆ๋ผ, AWS์— ์žˆ๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค๊ณผ๋„
๋„“์€ ๋ฒ”์œ„๋กœ์จ ์—ฐ๋™์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. XML์ด๋‚˜ JSON์œผ๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ๋„์š”!

  • AWS Console โ†’ SNS โ†’ ์ƒˆ ์ฃผ์ œ ์ƒ์„ฑ
  • ์œ ํ˜•์€ ํ‘œ์ค€(Standard)
  • ๊ตฌ๋…์ž ์ถ”๊ฐ€ โ†’ ์ด๋ฉ”์ผ ์ฃผ์†Œ ์ž…๋ ฅ
  • ์ˆ˜์‹ ๋œ ๋ฉ”์ผ์„ ํ†ตํ•ด ์ธ์ฆ ์™„๋ฃŒ

๐Ÿ“ฉ ์ธ์ฆ ํ›„, โ€œํ™•์ธ๋จโ€ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ CloudWatch ์•Œ๋žŒ ์ƒ์„ฑ

CloudWatch๋Š” AWS ๋ฆฌ์†Œ์Šค(CPU ์‚ฌ์šฉ๋ฅ , ๋„คํŠธ์›Œํฌ ๋“ฑ) ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์•Œ๋žŒ์„ค์ • ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
AWS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ๊ทธ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค!

  • AWS Console โ†’ CloudWatch โ†’ ์•Œ๋žŒ ์ƒ์„ฑ
  • ์ง€ํ‘œ: EC2 ์ธ์Šคํ„ด์Šค์˜ CPU ์‚ฌ์šฉ๋ฅ 
  • ์กฐ๊ฑด ์˜ˆ์‹œ: 5๋ถ„ ํ‰๊ท  10% ์ดˆ๊ณผ ์‹œ
  • ์•Œ๋žŒ ์ˆ˜์‹ ์ž: ์œ„์—์„œ ์ƒ์„ฑํ•œ SNS ์ฃผ์ œ ์—ฐ๊ฒฐ

3๏ธโƒฃ ๋ถ€ํ•˜ ๋ฐœ์ƒ ํ…Œ์ŠคํŠธ

์ด์ œ, ์•ž์—์„œ ๋งŒ๋“  ๋ชจ๋“  ์ƒํ™ฉ์„ ์ด์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
k6 run ...์„ ํ†ตํ•ด API์„œ๋ฒ„์— ๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ณ ,
ํ•ด๋‹น ์ธ์Šคํ„ด์Šค์˜ CPU ์‚ฌ์šฉ๋Ÿ‰์„ CloudWatch๊ฐ€ ์ธ์‹ํ•˜์—ฌ
5๋ถ„ ํ‰๊ท  10%๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์ด๋ฉ”์ผ์ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ


๋งˆ๋ฌด๋ฆฌ

์ด๋ฒˆ ์„ธ๋ฏธ๋‚˜ ์‹ค์Šต์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฐ€์žฅ ํฐ ๊ตํ›ˆ์€,
์‚ฌ์ „์— ๋Œ€๋น„ํ•˜๋Š” ์‹œ์Šคํ…œ ๊ตฌ์กฐ๊ฐ€ ์„œ๋น„์Šค์˜ ์ƒ์กด์„ ์ขŒ์šฐํ•œ๋‹ค๋Š” ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋งŒ ํ•˜๊ณ  ๋๋‚˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,

  • ์‹ค์‹œ๊ฐ„์œผ๋กœ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ ,
  • ๋ฌธ์ œ๊ฐ€ ๊ฐ์ง€๋˜์—ˆ์„ ๋•Œ ๋น ๋ฅด๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก,
  • ์ž๋™ํ™”๋œ ๊ฒฝ๋ณด ์‹œ์Šคํ…œ๊นŒ์ง€ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด

๋ฏธ๋ž˜์˜ ์ •์‹ DevOps๋ฅผ ๊ฟˆ๊พธ๋Š” ์‚ฌ๋žŒ์œผ๋กœ์จ ์ค‘์š”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“œ๋„ค์š”.

๋ฐœํ‘œ๋ฅผ ๋งˆ์น˜๋ฉฐ

์ด๋ฒˆ ์„ธ์…˜์€ ์ œ๊ฐ€ AWS Cloud Clubs์˜ DevRel(Core Member)๋กœ ํ™œ๋™ํ•˜๋ฉด์„œ,
์ฒ˜์Œ์œผ๋กœ ์ฃผ์ œ๋ถ€ํ„ฐ ์ง์ ‘ ๊ธฐํšํ•˜๊ณ , ๋ฐœํ‘œํ•œ ๊ณต์‹ ์„ธ๋ฏธ๋‚˜ ์„ธ์…˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.
์–ด๋–ค ์ฃผ์ œ๋กœ ํ•ด์•ผํ• ์ง€ ์ •๋ง ๊ณ ๋ฏผ์ด ๋งŽ์•˜๋Š”๋ฐ,
๋ฌด์—‡์ด๋“  "์ฒซ ์‹œ์ž‘"์€ ํฅ๋ฏธ์™€ ์žฌ๋ฏธ๋ฅผ ๋ถ™์ด๋Š” ๊ฒŒ ์šฐ์„ ์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์ธ ์ง€์‹์„ ๋งŽ์ด ์Œ“๋Š”๋‹ค๋ณด๋‹ค- AWS๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ์ง„๋กœ๋ฅผ ์ฐพ๊ณ  ์žˆ๋Š” ํ•™์šฐ๋“ค์ด
์‹ค์Šต์„ ํ†ตํ•ด AWS์— ํฅ๋ฏธ๋ฅผ ๋А๋‚„ ์ˆ˜ ์žˆ๋„๋ก, ์–ด๋ ค์›Œํ•˜์ง€ ์•Š๋„๋ก
๊ตฌ์„ฑํ•˜๋ ค ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ, ๊ด€์‹ฌ ๊ฐ€์ ธ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!๐Ÿ˜

์ผ๋ถ€ ์ฃผ์š” QNA

QNA

  • CloudWatch ๋ง๊ณ ๋„ ๋‹ค๋ฅธ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋น„์Šค๋“ค๋„ ์†Œ๊ฐœํ•ด์ฃผ์„ธ์š”!

    • CloudTrail์€ Watch์™€ ๋‹ค๋ฅด๊ฒŒ ๋ณด์•ˆ ๋ฐ ๊ฐ์‚ฌ์— ๊ฐ€๊นŒ์šด ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. API ํ˜ธ์ถœ ๊ธฐ๋ก์ด๋‚˜ ์ˆ˜์ • ์ด๋ ฅ๋“ค์ด ์–ด๋–ค IMA์—์„œ ๋ฐœ์ƒํ•˜๊ณ , ์–ธ์ œ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋˜์—ˆ๋Š”์ง€๋ฅผ ๋กœ๊น…ํ•˜์ฃ .
    • X-Ray๋Š” ์„œ๋น„์Šค์™€ ์„œ๋น„์Šค ๊ฐ„ ๋ฐœ์ƒํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ํŠธ๋žœ์ ์…˜ ๋‹จ์œ„๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜, ECS๋‚˜ EKS ๋“ฑ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ๊ตฌ๋™ํ•˜์˜€์„ ๋•Œ ์–ด๋””์„œ ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•˜๊ณ  ์ง€์—ฐ์ด ๋‚˜ํƒ€๋‚˜๋Š”์ง€๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ฒ ์ฃ !
  • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๊ฐ™์€ ์ด์Šˆ ์™ธ์—๋„ ๋ฐฐํฌ ์ดํ›„ ์—…๋ฐ์ดํŠธ์™€ ๊ฐ™์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

    • CloudWatch ๋“ฑ์€ ์„œ๋ฒ„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฒƒ ์ด๊ธฐ ๋•Œ๋ฌธ์—,
      ๊ทธ๋Ÿฐ ๋ฐฐํฌ ๊ด€๋ จํ•œ ๋ถ€๋ถ„์€ Jenkins๋‚˜ ArgoCD์™€ ๊ฐ™์€ CI/CD ํˆด์—์„œ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋” ์ผ๋ฐ˜์ ์ธ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์„ธ๋ฏธ๋‚˜ ํ‰๊ฐ€

๋ชจ๋ฒ”์ ์ธ ํ•ธ์ฆˆ์˜จ ์‚ฌ๋ก€๋กœ ๋‚จ์„ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค๐Ÿ™Œ๐Ÿป  
๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋„˜์–ด, SLI ์ธก์ • โ†’ CloudWatch ๊ฒฝ๋ณด โ†’ SNS ์ด๋ฉ”์ผ ์•Œ๋ฆผ โ†’ Gmail ์ˆ˜์‹ ๊นŒ์ง€ ์—”๋“œํˆฌ์—”๋“œ ์ž๋™ํ™”๋œ ๊ด€์ธก ํ๋ฆ„์„  
๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋„ˆ๋ฌด ์œ ์ตํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์‹ค๋ฌด๊ฒฝํ—˜๋“ค๊นŒ์ง€ ์ค‘๊ฐ„์ค‘๊ฐ„ ์•Œ๋ ค์ฃผ์…”์„œ ์‹ค๋ฌด์—์„œ์˜ ์šฉ๋„์— ๋Œ€ํ•ด ๋” ์™€๋‹ฟ์•˜์–ด์š”. ์งฑ!!
์‹ค์Šต๊ณผ ์‹ค์ œ๋กœ ์„œ๋น„์Šค๋ฅผ ์ฒดํ—˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ๊ด€๋ จ ๊ธฐ์ˆ ์„ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.  
์ฝ”๋“œ๊ฐ€ ์ตœ์†Œํ™”๋œ ์‹ค์Šต์„ ์ค€๋น„ํ•ด์ฃผ์…”์„œ nodejs์— ๋Œ€ํ•ด์„œ ํ•˜๋‚˜๋„ ๋ชฐ๋ž์ง€๋งŒ ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€ ์—†์ด ์ž˜ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.  
์œ ์ตํ•œ ์„ธ์…˜์ด์—ˆ์Šต๋‹ˆ๋‹ค!
์‹ค์ œ๋กœ ํ•ด๋ณด๋‹ˆ๊นŒ ๋” ์žฌ๋ฐŒ์—ˆ๊ณ , ์˜ˆ์ „์— cloudwatch ์ง€ํ‘œ ์„ค์ •์—์„œ ๋ญ๊ฐ€ ๋ญ”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ํ•ด๋ณด๋ ค๋‹ค๊ฐ€ ํฌ๊ธฐํ–ˆ์—ˆ๋Š”๋ฐ ์‹ค์Šต์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.  
์„ค๋ช… ์ž˜ ํ•ด์ฃผ์…”์„œ ์ดํ•ดํ•˜๊ณ  ๋”ฐ๋ผ๊ฐ€๊ธฐ ์‰ฌ์› ์–ด์š”. ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ผ๋Š” ๊ฒŒ ์ƒ์†Œํ•˜๊ณ  k6์— ๋Œ€ํ•ด์„œ๋„ ํ‰์†Œ์— ์ฐพ์•„๋ณธ ์ ์ด ์—†์—ˆ๋Š”๋ฐ ์„ธ๋ฏธ๋‚˜ ๋“ฃ๊ณ   
์‹ค์Šต ์ง„ํ–‰ํ•ด๋ณด๋ฉด์„œ ๊ด€๋ จํ•ด์„œ ๋” ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋” ํฅ๋ฏธ๊ฐ€ ์ƒ๊ฒผ์–ด์š”~!  
ACC์—์„œ ํ•˜๊ฒŒ ๋œ ์ฒซ ์‹ค์Šต์ด๋ผ ์˜๋ฏธ๊ฐ€ ๊นŠ์€ ๊ฒƒ ๊ฐ™์•„์š”! ์„ธ์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์…”์„œ ๋”ฐ๋ผ๊ฐ€๋Š” ๋ฐ ์–ด๋ ค์›€ ์—†์—ˆ์–ด์š”.  
์‹ค์ œ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๋•Œ๋„ ์ด๋Ÿฐ ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ๋ฅผ ๋„์ž…ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ์œ ์ตํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ™‚ 

Etc... :D