์๋ฃ์ค
๐โโ๏ธ ๋ฐํ์: ๊น์ฐฌ๋น
๐ ๋ฐํ์ผ: 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
์ฌ๋ฌ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
- ์์ฒญ ์ฑ๊ณต์ฌ๋ถ์ ๋ํ ์ ๋ณด
- HTTP ํธ์ถ์ ๋ํ ์ฑ๋ฅ
- ์คํ ํต๊ณ
- ๋คํธ์ํฌ ํต๊ณ
์ด ๋ค๊ฐ์ง ์งํ๋ฅผ ํ์ธํ ์ ์์์ต๋๋ค.
ํ
์คํธ์์ ๋ฌธ์ ๊ฐ ์๋ค ๋ณด์ผ ์ ์์ด๋,
๋ถํ๋ฅผ ๋ ์ฃผ๋ฉด ์๋ฌ๊ฐ ์๊ธธ ์๋ ์๊ณ , ์ด๋ฅผ ํตํด ์์คํ
์ ํ๊ณ ํ์์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด์ฒ๋ผ, ์ง์์ ์ผ๋ก ํ
์คํธ๋ฅผ ์ํํ์ฌ ํ๊ณ์น๋ฅผ ์ฐพ์๊ฐ๋ ๊ณผ์ ์
ํ์์ ๋ฐ์ดํฐ ๋ถ์์ด๋ผ ํฉ๋๋ค.
SLI๋ ๋ฌด์์ธ๊ฐ?
SLI (Service Level Indicator) ๋
์ฌ์ฉ์์ ์
์ฅ์์ ์ง์ ์ฒด๊ฐ ๊ฐ๋ฅํ ์๋น์ค ํ์ง ์งํ๋ฅผ ๋งํฉ๋๋ค.
๋๋ฌด ์ด๋ ต๊ฒ ์๊ฐํ ๊ฒ ์์ด,
์๋ ํ์ ๊ฐ๋ค๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ์์.
์ฉ์ด | ์ค๋ช | ๋ ์ฝ๊ฒ |
---|---|---|
SLI | ํ์ฌ ์ธก์ ๋ ์ฑ๋ฅ ์งํ | ํ์ฌ ์ํ |
SLO | ์๋น์ค ์ ๊ณต์๊ฐ ์ค์ ํ ๋ชฉํ ์์ค | ๋ชฉํ ์ํ |
SLA | ์๋ฐ ์ ๊ณ ๊ฐ๊ณผ ๋งบ์ ๊ณ์ฝ ๋ฐ ๋ณด์ ์กฐ๊ฑด | ๊ณ์ฝ |
์๋ฅผ ๋ค์ด๋ณด๋ฉด,
- SLI: ํ๊ท ์๋ต์๊ฐ 7.19ms
- SLO: 20ms ์ดํ
- SLA: ์ด๊ณผ ์ SLA ์๋ฐ, ๋ณด์ ์กฐ๊ฑด ์ํ
์ด๋ฐ ์์ผ๋ก, ๋๊ฒ ๋ค์!
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
-
CloudWatch ๋ง๊ณ ๋ ๋ค๋ฅธ ๋ชจ๋ํฐ๋ง ์๋น์ค๋ค๋ ์๊ฐํด์ฃผ์ธ์!
- CloudTrail์ Watch์ ๋ค๋ฅด๊ฒ ๋ณด์ ๋ฐ ๊ฐ์ฌ์ ๊ฐ๊น์ด ์๋น์ค์ ๋๋ค. API ํธ์ถ ๊ธฐ๋ก์ด๋ ์์ ์ด๋ ฅ๋ค์ด ์ด๋ค IMA์์ ๋ฐ์ํ๊ณ , ์ธ์ ์ด๋ป๊ฒ ์ํ๋์๋์ง๋ฅผ ๋ก๊น ํ์ฃ .
- X-Ray๋ ์๋น์ค์ ์๋น์ค ๊ฐ ๋ฐ์ํ๋ ๋ฆฌ์์ค๋ฅผ ํธ๋์ ์ ๋จ์๋ก ๋ชจ๋ํฐ๋งํฉ๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌ์ถํ๊ฑฐ๋, ECS๋ EKS ๋ฑ ์ฌ๋ฌ ์๋น์ค๋ฅผ ๊ตฌ๋ํ์์ ๋ ์ด๋์ ๋ณ๋ชฉ์ด ๋ฐ์ํ๊ณ ์ง์ฐ์ด ๋ํ๋๋์ง๋ฅผ ํ์ ํ ์ ์๊ฒ ์ฃ !
-
๋ถํ ํ ์คํธ๊ฐ์ ์ด์ ์ธ์๋ ๋ฐฐํฌ ์ดํ ์ ๋ฐ์ดํธ์ ๊ฐ์ ๋ณ๊ฒฝ์ฌํญ์ ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ ๋ณด๋ผ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
- CloudWatch ๋ฑ์ ์๋ฒ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ ์ด๊ธฐ ๋๋ฌธ์,
๊ทธ๋ฐ ๋ฐฐํฌ ๊ด๋ จํ ๋ถ๋ถ์ Jenkins๋ ArgoCD์ ๊ฐ์ CI/CD ํด์์ ์๋ํ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ์ด์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ ์ผ๋ฐ์ ์ธ๊ฒ์ผ๋ก ์๊ณ ์์ต๋๋ค.
- CloudWatch ๋ฑ์ ์๋ฒ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ ์ด๊ธฐ ๋๋ฌธ์,
์ธ๋ฏธ๋ ํ๊ฐ
๋ชจ๋ฒ์ ์ธ ํธ์ฆ์จ ์ฌ๋ก๋ก ๋จ์ ๊ฑฐ ๊ฐ์ต๋๋ค๐๐ป
๋ถํ ํ
์คํธ๋ฅผ ๋์ด, SLI ์ธก์ โ CloudWatch ๊ฒฝ๋ณด โ SNS ์ด๋ฉ์ผ ์๋ฆผ โ Gmail ์์ ๊น์ง ์๋ํฌ์๋ ์๋ํ๋ ๊ด์ธก ํ๋ฆ์
๊ฒฝํํ ์ ์์ด์ ๋๋ฌด ์ ์ตํ์ต๋๋ค. ์ค์ ์ค๋ฌด๊ฒฝํ๋ค๊น์ง ์ค๊ฐ์ค๊ฐ ์๋ ค์ฃผ์
์ ์ค๋ฌด์์์ ์ฉ๋์ ๋ํด ๋ ์๋ฟ์์ด์. ์งฑ!!
์ค์ต๊ณผ ์ค์ ๋ก ์๋น์ค๋ฅผ ์ฒดํํด ๋ณผ ์ ์์ด์ ๊ด๋ จ ๊ธฐ์ ์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์์๋ณผ ์ ์์ด์ ์ข์์ต๋๋ค.
์ฝ๋๊ฐ ์ต์ํ๋ ์ค์ต์ ์ค๋นํด์ฃผ์
์ nodejs์ ๋ํด์ ํ๋๋ ๋ชฐ๋์ง๋ง ์ค์ต์ ์งํํ๋๋ฐ ์ด๋ ค์ ์์ด ์ ์งํํ์ต๋๋ค.
์ ์ตํ ์ธ์
์ด์์ต๋๋ค!
์ค์ ๋ก ํด๋ณด๋๊น ๋ ์ฌ๋ฐ์๊ณ , ์์ ์ cloudwatch ์งํ ์ค์ ์์ ๋ญ๊ฐ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ์ด์ ํด๋ณด๋ ค๋ค๊ฐ ํฌ๊ธฐํ์๋๋ฐ ์ค์ต์ผ๋ก ํ ์ ์์ด์ ์ข์์ต๋๋ค.
์ค๋ช
์ ํด์ฃผ์
์ ์ดํดํ๊ณ ๋ฐ๋ผ๊ฐ๊ธฐ ์ฌ์ ์ด์. ๋ถํ ํ
์คํธ๋ผ๋ ๊ฒ ์์ํ๊ณ k6์ ๋ํด์๋ ํ์์ ์ฐพ์๋ณธ ์ ์ด ์์๋๋ฐ ์ธ๋ฏธ๋ ๋ฃ๊ณ
์ค์ต ์งํํด๋ณด๋ฉด์ ๊ด๋ จํด์ ๋ ๊ณต๋ถํด๋ณด๊ณ ์ถ๋ค๋ ์๊ฐ์ด ์๊ฒผ์ต๋๋ค. ๋ ํฅ๋ฏธ๊ฐ ์๊ฒผ์ด์~!
ACC์์ ํ๊ฒ ๋ ์ฒซ ์ค์ต์ด๋ผ ์๋ฏธ๊ฐ ๊น์ ๊ฒ ๊ฐ์์! ์ธ์ธํ๊ฒ ์ค๋ช
ํด ์ฃผ์
์ ๋ฐ๋ผ๊ฐ๋ ๋ฐ ์ด๋ ค์ ์์์ด์.
์ค์ ์๋น์ค๋ฅผ ๋ง๋ค๋๋ ์ด๋ฐ ๋ถํํ
์คํธ๋ฅผ ๋์
ํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์ ์ตํ์ต๋๋ค ๐
Etc... :D