TIL

    vue vite + spring boot ์—ฐ๊ฒฐํ•˜๊ธฐ

    vue vite + spring boot ์—ฐ๊ฒฐํ•˜๊ธฐ

    vuevite.config.js build: {// ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ๋กœ outDir: '../Spring/papplan/src/main/resources/static' }, server: { proxy: { '/api': { target: 'http://localhost:8081', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') } } } vitewebpack์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒˆ๋“ค๋ŸฌVue 3์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋ฒˆ๋“ค๋Ÿฌ์ด๋ฉฐ, Vue ์ฐฝ์‹œ์ž Evan You๊ฐ€ ..

    ํ”„๋กœ์ ํŠธ 1์ฃผ์ฐจ, ๋ชจ๋‘ ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. ์—ด์‹ฌํžˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ํ”„๋กœ์ ํŠธ 1์ฃผ์ฐจ, ๋ชจ๋‘ ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค. ์—ด์‹ฌํžˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

    ํ”„๋กœ์ ํŠธ ์ฒซ ์ฃผ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค. ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ์—ญํ•  ๋ถ„๋‹ด ๋ฐ ๋ชฉํ‘œ ์„ค์ •์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋ฐฉํ–ฅ์„ฑ์„ ์ •ํ•ด๋‚˜๊ฐ”๋‹ค. ํŒ€์›์ด ์ž์‹ ์˜ ์—ญํ• ๊ณผ ์ฑ…์ž„์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ณ , ํŒ€ ์ „์ฒด๊ฐ€ ํ–ฅํ›„ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ํ†ตํ•ฉ๋œ ๋ชฉํ‘œ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ํ˜‘๋ ฅํ•˜๋Š” ๋ถ„์œ„๊ธฐ๋ฅผ ๊ฐ€์กŒ๋”ฐ. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ pm ์—ญํ• ์„ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ํŒ€์žฅ์—ญํ• ์ด๋ผ ํ•˜๋Š”๋ฐ ์„ธ์ƒ์— ์—ด์‹ฌํžˆ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„ํ‘œ๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์„ ๋•Œ ๋‚˜๋Š” ํŒ€์›๋“ค๊ณผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์น˜์ง€ ์•Š๊ณ  ํ• ๊นŒ๋ผ๋Š” ๊ณ ๋ฏผ์„ ํ•ด๋ดค๋‹ค. ์งง์€ ๊ธฐ๊ฐ„๋‚ด์— ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋Š”๊ฑด ์‰ฝ์ง€ ์•Š๊ธฐ์— ํ”ผ๋กœํ•จ๊ณผ ๊ณ ๋‚œ์ˆœ๊ฐ„๋“ค์ด ์žˆ์„๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๊ทธ ์ˆœ๊ฐ„๋“ค์„ ์–ด๋–ป๊ฒŒ ์œ ์—ฐํ•˜๊ฒŒ ๋ณด๋‚ผ์ง€ ๊ณ ๋ฏผ์„ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ํŒ€์›๋“ค๊ณผ์˜ ์†Œํ†ต์ด ํ•„์ˆ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , ์„œ๋กœ๋ฅผ ๊ฒฉ๋ คํ•˜๊ณ  ์ง€์ง€ํ•ด์ฃผ๋Š” ๋ถ„์œ„๊ธฐ๋ฅผ ์กฐ์„ฑ..

    DevOps CI/CD๋ž€ ๋ฌด์—‡์ธ๊ฐ€, ์ง€์†์ ์ธํ†ตํ•ฉ ์ง€์†์ ์ธ ๋ฐฐํฌ

    DevOps CI/CD๋ž€ ๋ฌด์—‡์ธ๊ฐ€, ์ง€์†์ ์ธํ†ตํ•ฉ ์ง€์†์ ์ธ ๋ฐฐํฌ

    ci ๐Ÿ’ก ์ง€์†์ ์ธ ํ†ตํ•ฉ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•จ. ์ถฉ๋Œ๋ฌธ์ œ๋ฅผ ๋ฏธ๋ฆฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. cd ๐Ÿ’ก ์ง€์†์ ์ธ ๋ฐฐํฌ ci ํ†ตํ•ฉ๋œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ ๋ฒ„์ „์„ ๋ช…์‹œํ•˜์—ฌ ๋ฒ„์ „๊ด€๋ฆฌ ์šฉ์˜ ci cd ์ข…๋ฅ˜ - jenkins - travis CI - circleCl - github actions - etc ci cd ํŒŒ์ดํ”„๋ผ์ธ์ด๋ž€? ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œ ํ…Œ์ŠคํŠธ ๋ฐฐํฌ ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ์ถ”์ง„ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๊ณผ์ •์—์„œ ์•ˆ์ •์ ์ด๊ณ  ์‹ ๋ขฐ์„ฑ ๋†’์€ ์„œ๋น„์Šค ์ œ๊ณต์„ ์œ„ํ•ด ๋„์›€์„ ์ค€๋‹ค. ci/cd ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ž๋™ํ™” ๊ฐœ๋…์ •๋„๋กœ ์–„ํŒํ•˜๊ฒŒ ์•„๋Š” ์ •๋„์˜€๋‹ค. ์ด๋ฒˆ๊ธฐํšŒ์— ๊ถ๊ธˆํ–ˆ๋˜ ๋‚ด์šฉ์„ ๋ฐฐ์šฐ๊ณ  ์ง์ ‘ ํ•ด๋ณด๋Š” ๊ฒฝํ—˜์ดci/cd ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ž๋™ํ™”์— ๋Œ€ํ•ด ์–ด๋ ดํ’‹์ด ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ,..

    node express์™€ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ ์‹คํ–‰

    node express์™€ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ ์‹คํ–‰

    Express Node.js ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ Node.js๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ํด๋ž˜์Šค์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ง‘ํ•ฉ express ์„ค์น˜ $ npm install express --save package.json ์— express ๋ชจ๋“ˆ์ด ์ถ”๊ฐ€๋œ๋‹ค. Express ์˜ˆ์ œ https://expressjs.com/ko/starter/hello-world.html Express "Hello World" ์˜ˆ์ œ Hello world ์˜ˆ์ œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์•ฑ์€ ์—ฌ๋Ÿฌ๋ถ„์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ Express ์•ฑ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์•ฑ์€ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋œ ์•ฑ์ด๋ฉฐ Express ์ƒ์„ฑ๊ธฐ๋ฅผ ํ†ตํ•ด ์–ป๊ฒŒ ๋˜๋Š” ์•ฑ๊ณผ๋Š” ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์ด ์˜ˆ์ œ expressjs.com app.js ํŒŒ์ผ ์ƒ์„ฑ const e..

    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค minikube ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค minikube ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

    ๊ณต์‹์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š” https://minikube.sigs.k8s.io/docs/start/ minikube start minikube is local Kubernetes minikube.sigs.k8s.io install - wsl ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ ํ•  ๊ฒƒ์ด๋ฏ€๋กœ ์œ„์™€ ๊ฐ™์€ ์„ค์ •์œผ๋กœ ๋‹ค์šด๋กœ๋“œ minikube start $ minikube start ๐Ÿ˜„ minikube v1.32.0 on Ubuntu 22.04 (amd64) โœจ Using the docker driver based on existing profile ๐Ÿ‘ Starting control plane node minikube in cluster minikube ๐Ÿšœ Pulling base image ... ๐Ÿƒ Updating the running ..

    2์›”ํšŒ๊ณ  5

    2์›”ํšŒ๊ณ  5

    ์–ด๋Š๋ง ํŒŒ์ด๋„ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์•ž๋‘๊ณ  ์žˆ๋‹ค. ๋‘๊ทผ๋‘๊ทผ ์–ด๋Š ํŒ€์— ์–ด๋Š ์ฃผ์ œ๊ฐ€ ๋˜๋”๋ผ๋„ ๋‚˜์˜ ์—ญํ• ์„ ์ž˜ ์ˆ˜ํ–‰ํ•˜๊ณ ์‹ถ๋‹ค. ๊พธ์ค€ํžˆ ์ธ๊ฐ• ๋“ค์œผ๋ฉฐ ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๊ณ  ์ˆ˜์—… ๋‚ด์šฉ๋„ ๋ณต๊ธฐํ•˜๊ณ  ์žˆ๋‹ค. ์ž๋ฐ” ๊ฐ ์žƒ์ง€ ์•Š๊ธฐ (๊ฐ์ด๋ผ๋Š”๊ฒŒ ์žˆ์„๊นŒ์‹ถ์ง€๋งŒ) ! 2๋‹ฌ์ด๋ผ๋Š” ๊ธฐ๊ฐ„์€ ๊ฒฐ์ฝ” ๊ธธ์ง€ ์•Š๊ธฐ์— ์„ฑ์‹คํ•˜๊ฒŒ ํŒ€์›๋“ค๊ณผ ํ”Œ์ ์„ ์ด์–ด๊ฐ€๊ณ  ์‹ถ๋‹ค.

    2์›”ํšŒ๊ณ  4

    2์›”ํšŒ๊ณ  4

    ๐ŸŒฑ ๋ฐฐ์šด๊ฒƒ docker compose nGrinder test load testing with ngrinder: ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค ์„ค์ • ํ›„, compose.yml์—์„œ cpus์™€ memory๋ฅผ ์กฐ์ •ํ•ด๊ฐ€๋ฉด์„œ ๋ถ€ํ•˜ํ…Œ์ŠคํŠธ Kubernetes Minikube ์„ค์น˜ ๋ฐ Dashboard figlet ์ข‹์•˜๋˜ ์  ๋ฌธ์ œํ•ด๊ฒฐ ๊ณผ์ • ๋„์ปค์™€ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๊ฐ€์„ค์„ ์„ธ์šฐ๊ณ  ์ž‘์—…ํ•˜๋Š” ์žฌ๋ฏธ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋ฌผ๋ก  ์•„์ง ๋ถ€ํ•˜์˜ ์ •ํ™•ํ•œ ์ง€์ ์„ ํŒŒ์•…ํ•˜๊ฑฐ๋‚˜ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ํ•˜๊ธฐ์—” ์–ด๋ ค์› ์œผ๋‚˜ ๊ฐœ๋ฐœ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์—ด์‹ฌํžˆ ์‰ฌ๊ธฐ ์ˆ˜์—…์—๋Š” ์ •๋ง ์ง‘์ค‘ํ•ด์„œ ์—ด์‹ฌํžˆ ํ•˜๊ณ  ๊ทธ ์™ธ์ ์œผ๋กœ๋Š” ์ •๋ง ์‰ฌ์—ˆ๋‹ค. ์ง€๋‚œ์ฃผ์— ๋งํ•œ ๊ฐ„๋‹จํ•œ ๋…์„œ๋„ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ด์‹ฌํžˆ ๋ฌผ๋ฆฌ์น˜๋ฃŒ๋„ ๋‹ค๋‹ˆ๋ฉด์„œ ํ‡ด๊ทผ ํ›„ ์˜ค๋กฏํžˆ ๋‚˜๋ฅผ ๋Œ๋ดค๋‹ค. ์ž ๋„ ํ‘น์ž๊ณ  ์Šค์Šค๋กœ๋ฅผ ๋…๋ คํ•˜๋Š” ์ฃผ๊ฐ„์ด..

    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ž€, ๊ฐ„๋‹จํ•œ ์šฉ์–ด์ •๋ฆฌ ๋ฐ ๋„์ปค์™€ ์ฐจ์ด์ 

    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ž€, ๊ฐ„๋‹จํ•œ ์šฉ์–ด์ •๋ฆฌ ๋ฐ ๋„์ปค์™€ ์ฐจ์ด์ 

    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ž€(Kubernetes) ? ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„๋‹จํ•œ ์šฉ์–ด์ •๋ฆฌ ์šฉ์–ด ๋œป ์ปจํ…Œ์ด๋„ˆ ์•ฑ์ด ๊ตฌ๋™๋˜๋Š” ํ™˜๊ฒฝ๊นŒ์ง€ ๊ฐ์‹ธ์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒฉ๋ฆฌ ๊ธฐ์ˆ  ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋„๊ตฌ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋„๊ตฌ ์ค‘ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๊ฒƒ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ•˜๋Š” ๋„๊ตฌ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๊ฑธ์นœ ์ปจํ…Œ์ด๋„ˆ ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ํ™˜๊ฒฝ ์„ค์ •์„ ๊ด€๋ฆฌํ•˜๋Š” ํ–‰์œ„ ์ปจํ…Œ์ด๋„ˆ๋ž€? ๊ตฌ๋™ํ•˜๋ ค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ๊นŒ์ง€ ๊ฐ์จ์„œ, ์–ด๋””๋“  ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ . ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ํ™˜๊ฒฝ์˜ ๋ณ€ํ™” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์™€ ๋„์ปค ๋น„๊ต ๋„์ปค ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ชฉ์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ํŒจํ‚ค์ง•ํ•˜๊ณ  ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ ์—ฌ๋Ÿฌ ๋Œ€์˜ ..