
Weasel ํ๋ก์ ํธ๋ AWS Bedrock Claude Sonnet 3.5 ๋ชจ๋ธ์ ํ์ฉํ ๋ฌธ์ ํ์ด ์๋น์ค์
๋๋ค.
์ฌ์ฉ์๊ฐ ๋ฌธ์ ์ด๋ฏธ์ง๋ฅผ ์
๋ก๋ํ๋ฉด AI๊ฐ ์ ๋ต๊ณผ ํด์ค์ ์ ๊ณตํฉ๋๋ค.
์ด 6๋ช
(Frontend 2๋ช
, Backend 2๋ช
, Infra 2๋ช
)์ด ์ฐธ์ฌํ๊ณ , ์ ๋ ์ธํ๋ผ ํ์ ์ผ์์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ง๋ฌด๋ฆฌํ์ต๋๋ค.



build/)์ S3 ๋ฒํท์ ์
๋ก๋ํฉ๋๋ค. 
Jenkins ๋น๋ ํ์ดํ๋ผ์ธ ์คํ ํ๋ฉด

Jenkins ๋น๋ ์ฑ๊ณต ์ Slack ์ฑ๋์ ์ค์๊ฐ ์๋ฆผ

๋ฌธ์ ์ด๋ฏธ์ง๋ฅผ ์
๋ก๋ํ ์ ์๋ ์
๋ ฅ UI ๋ฐ ์ฑํ
๋ด์ฉ ์ ์ฅ

์
๋ก๋ํ ๋ฌธ์ ์ด๋ฏธ์ง์ ๋ํด AI๊ฐ ์ ๋ต๊ณผ ํด์ค์ ๋ฐํํ๋ ํ๋ฉด

Grafana ๋์๋ณด๋
Prometheus์ Grafana๋ฅผ ํ์ฉํด CPUยท๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, API ์๋ต ์๋, ์๋ฌ์จ ๋ฑ์ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ต๋๋ค.
์ด๋ฅผ ํตํด ์ฑ๋ฅ ์ ํ๋ ์ฅ์ ์งํ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ์ ์ํ ๋์ํ ์ ์์์ต๋๋ค.
npm run dev)๊ฐ ๊ฐ๋ฐ ํ๊ฒฝ ๊ธฐ์ค์ผ๋ก ์ค์ ๋์ด ํ๋ก๋์
์ ์ ํฉํ์ง ์์node:20.14.0 ์ด๋ฏธ์ง๋ ๊ฐ๋ฐ ๋๊ตฌ๊ฐ ํฌํจ๋์ด ์ต์ข
์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ ์ปค์งnpm run dev โ ๊ฐ๋ฐ ์์กด์ฑ(devDependencies)๊น์ง ํฌํจ ์ค์น npm start ์ฌ์ฉ์ด ์ ํฉnode:<๋ฒ์ >-slim ์ฌ์ฉ RUN yarn build๋ก ํ๋ก๋์
๋น๋ ์์ฑ CMD ["npm", "start"]๋ก ํ๋ก๋์
์คํ๋ณ๊ฒฝ ์
FROM node:20.14.0
WORKDIR /usr/src/app
COPY package.json yarn.lock ./
RUN yarn install
COPY . .
EXPOSE 3000
CMD ["npm", "run", "dev"]
๋ณ๊ฒฝ ํ (Multi-stage build)
# ๋น๋ ๋จ๊ณ
FROM node:20.14.0 AS builder
WORKDIR /usr/src/app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .
RUN yarn build
# ํ๋ก๋์
๋จ๊ณ
FROM node:20.14.0-slim
WORKDIR /usr/src/app
COPY package.json yarn.lock ./
RUN yarn install --production --frozen-lockfile
COPY --from=builder /usr/src/app/dist ./dist
EXPOSE 3000
CMD ["npm", "start"]
push ์์๋ Jenkins ํ์ดํ๋ผ์ธ์ด ์คํ๋จGitHub hook trigger for GITScm polling)์ ๋ชจ๋ ๋ธ๋์น ๋ณ๊ฒฝ ์ ํ์ดํ๋ผ์ธ์ด ์คํ๋จGitHub hook trigger for GITScm polling โ Generic Webhook Trigger
key: 'ref', value: '$.ref' ์ค์ $.ref)๋ก ์นํ
ํ์ด๋ก๋์์ ๋ธ๋์น ์ ๋ณด ์ถ์ถ ํ ๋ณ์ ref์ ์ ์ฅ$ref๋ก ์ค์ โ ์ถ์ถ๋ ๋ธ๋์น ์ ๋ณด(ref)๋ฅผ ํํฐ ํ
์คํธ๋ก ์ฌ์ฉ'refs/heads/main' ์ง์ โ main ๋ธ๋์น์ผ ๋๋ง ๋น๋ ์คํ
ref ๋ณ์ ๊ฐ refs/heads/main 
http://<๋๋ฉ์ธ ๋๋ IP>/generic-webhook-trigger/invoke?token=<ํ ํฐ>| ํญ๋ชฉ | ๋ณ๊ฒฝ ์ | ๋ณ๊ฒฝ ํ |
|---|---|---|
| Build Trigger | GitHub hook trigger for GITScm polling | Generic Webhook Trigger |
| ๋ธ๋์น ํํฐ๋ง | ๋ชจ๋ ๋ธ๋์น์์ ๋น๋ ์คํ | main ๋ธ๋์น์์๋ง ๋น๋ ์คํ |
| ํํฐ ์กฐ๊ฑด | ์์ | JSONPath($.ref)๋ก ๋ธ๋์น ์ถ์ถ โ ์ ๊ท์(refs/heads/main) ๋งค์นญ |
Weasel ํ๋ก์ ํธ๋ฅผ ํตํด ํ์ ๊ฐ ์ํต๊ณผ ํ๋ ฅ์ ์ค์์ฑ์ ๊น์ด ๋๊ผ์ต๋๋ค.
์ฒซ ํ ํ๋ก์ ํธ์๋ ๋งํผ ๋ถ์กฑํ ์ ๋ ๋ง์์ง๋ง, ๊ฐ์ธ ํ๋ก์ ํธ์์๋ ๋๋ฌ๋์ง ์์๋ ๋ณด์ ๊ด๋ฆฌ, ์ด์ ์์ ์ฑ, ๋ฐฐํฌ ํจ์จ์ฑ์ ํ๊ณ๋ฅผ ์ฒด๊ฐํ์ต๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด CI/CD ํ์ดํ๋ผ์ธ์ ์ต์ ํํด ๋ฐฐํฌ ์๋๋ฅผ ๊ฐ์ ํ๊ณ , GrafanaยทPrometheus ๊ธฐ๋ฐ ๋ชจ๋ํฐ๋ง ํ๊ฒฝ์ ๊ตฌ์ถํด ์ฅ์ ๋ฐ์ ์ ์ ์ํ๊ฒ ๋์ํ ์ ์๋ ์ฒด๊ณ๋ฅผ ๋ง๋ จํ๋ ๋ฑ ๋ง์ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค.
๋ถ์กฑํ๋ค ๋๋์
ํฅํ์๋ ๋น์ฉ ํจ์จ์ฑ์ ์ํด Jenkins Fleet์ ๋์
ํด, ๋น๋ ์์๋ง ์์ด์ ํธ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ ์ฌ์ฉ ํ ์๋ ์ข
๋ฃํ๋ ๋ฐฉ์์ผ๋ก EC2 ๋น์ฉ์ ์ ๊ฐํ๋ ๋ฐฉ์๋ ๊ณ ๋ คํ๊ณ ์์ต๋๋ค.
์์ผ๋ก๋ IaC ๊ธฐ๋ฐ ํด๋ผ์ฐ๋ ์ํคํ
์ฒ ์ค๊ณ ์ญ๋์ ํ์ฅํด, ๋๊ท๋ชจ ํธ๋ํฝ ํ๊ฒฝ์์๋ ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์๋น์ค๋ฅผ ์ด์ํ ์ ์๋ ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ฒ ์ต๋๋ค.