๊ฐ๋ฐ ํ๋ก์ธ์ค
๊ฐ๋ฐ ํ๋ก์ธ์ค๋ ์ํํธ์จ์ด ์์คํ ์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์ํ ๋ชฉ์ ์ผ๋ก ์ํ๋๋ ํ๋์ ์ ์ฐจ๋ฅผ ๋ปํ๋ค. ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋ชฉ์ ์ ๊ฐ๋ฐ์ ๋ํ ์ ์ฒด์ ์ธ ๊ฐ์ด๋๋ผ์ธ์ ์ ๊ณตํ๋ ๋ฐ์ ์์ผ๋ฉฐ, ๊ฐ๋ฐ ์ ์ฐจ ์ ๋ฌด์ ์ฐจ์ด๋ ํด ๊ฒ์ด๋ค.
์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค ๋ชจ๋ธ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ(SDLC, Software Develpment Life Cycle)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ก๋ค.
๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋จ๊ณ
๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋จ๊ณ
- ์๊ตฌ๋ถ์ ๋ฐ ์์คํ
๋ช
์ธ ์์ฑ
๋ฌธ์ ๋ถ์ ๋จ๊ณ๋ผ๊ณ ๋ ํ๋ฉฐ, ๊ฐ๋ฐํ ์ํํธ์จ์ด์ ๊ธฐ๋ฅ๊ณผ ์ ์ฝ์กฐ๊ฑด, ๋ชฉํ ๋ฑ์ ์ฌ์ฉ์์ ํจ๊ป ์ ํํ ์ ์ํ๋ ๋จ๊ณ. ๊ฐ๋ฐํ๊ณ ์ ํ๋ ์ํํธ์จ์ด์ ์ฑ๊ฒฉ์ ์ ํํ ์ดํดํ์ฌ ์ด๋ฅผ ํ ๋๋ก ๊ฐ๋ฐ ๋ฐฉ๋ฒ๊ณผ ํ์ํ ์์ ๋ฐ ์์ฐ ์์ธก ํ ์๊ตฌ๋ช ์ธ๋ฅผ ์์ฑํ๋ค.
- ์ค๊ณ
์์ ์ ์ํ ๊ธฐ๋ฅ์ ์ค์ ๋ก ์ํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฒฐ์ ํ๋ค. ํฌ๊ฒ ์์คํ , ํ๋ก๊ทธ๋จ, UI ์ค๊ณ๋ก ๋๋๋ฉฐ, ์์คํ ๊ตฌ์กฐ์ค๊ณ๋ ์์คํ ์ ๊ตฌ์ฑํ๋ ๋ด๋ถ ํ๋ก๊ทธ๋จ์ด๋ ๋ชจ๋๊ฐ์ ๊ด๊ณ์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๊ณ , ํ๋ก๊ทธ๋จ ์ค๊ณ๋ ํ๋ก๊ทธ๋จ ๋ด์ ๊ฐ ๋ชจ๋์์์ ์ฒ๋ฆฌ ์ ์ฐจ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ค. ์ด ์ค UI ์ค๊ณ๋ ์ฌ์ฉ์๊ฐ ์์คํ ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ณด์ด๋ ๋ถ๋ถ์ ์ค๊ณํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ค๊ณ์ ํด๋น๋๋ค.
- ๊ตฌํ
์ค๊ณ ๋จ๊ณ์์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฒฐ์ ํ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ค์ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ค. ์ด ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
- ๊ตฌ์กฐํ ํ๋ก๊ทธ๋๋ฐ : ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ์์ฐจ๊ตฌ์กฐ, ์ ํ๊ตฌ์กฐ, ๋ฐ๋ณต๊ตฌ์กฐ์ ์ธ ๊ฐ์ง ์ ์ด๊ตฌ์กฐ๋ก ํํํ๋ฉฐ ๊ตฌ์กฐ๊ฐ ๋ช ํํ์ฌ ์ ํ์ฑ ๊ฒ์ฆ๊ณผ ํ ์คํธ ๋ฐ ์ ์ง๋ณด์๊ฐ ์ฌ์ด ์ฅ์ ์ด ์๋ค.
- ๋ชจ๋๋ฌ ํ๋ก๊ทธ๋๋ฐ : ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ชจ๋๋ก ๋๋์ด ๊ณ์ธต ๊ด๊ณ๋ก ๊ตฌ์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ผ๋ก ๋ชจ๋๋ณ๋ก ๊ฐ๋ฐ๊ณผ ํ ์คํธ ๋ฐ ์ ์ง๋ณด์๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ๋ชจ๋์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๋ค.
- ํ
์คํธ
๊ฐ๋ฐํ ์์คํ ์ด ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๋์ง, ์คํ ๊ฒฐ๊ณผ๊ฐ ์์ํ ๊ฒฐ๊ณผ์ ์ ํํ ๋ง๋์ง ๊ฒ์ฌํ๊ณ ํ๊ฐํ๋ ์ผ๋ จ์ ๊ณผ์ ์ด๋ค. ๋ฏธ์ฒ ๋ฐ๊ฒฌํ์ง ๋ชปํ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ ์ ์์ด ๋งค์ฐ ์ค์ํ๋ค.
- ๋ฐฐํฌ ๋ฐ ์ ์ง๋ณด์
์์คํ ์ด ์ธ์๋๊ณ ์ค์น๋ ํ(๋ฐฐํฌ) ์ผ์ด๋๋ ๋ชจ๋ ํ๋์ ์ง์นญํ๋ค. ์ดํ ์ผ์ด๋๋ ์ปค์คํฐ๋ง์ด์ง, ๊ตฌํ, ํ ์คํธ ๋ฑ ๋ชจ๋ ์ด ๋จ๊ณ์ ํฌํจ๋๋ฏ๋ก ์ํํธ์จ์ด ์๋ช ์ฃผ๊ธฐ์์ ๊ฐ์ฅ ๊ธด ๊ธฐ๊ฐ์ ์ฐจ์งํ๋ค. ์ ์ง๋ณด์์ ์ ํ์๋ ๋ค ๊ฐ์ง๊ฐ ์๋ค.
- ์์ ํ ์ ์ง๋ณด์ : ์ฌ์ฉ ์ค์ ๋ฐ๊ฒฌํ ํ๋ก๊ทธ๋จ์ ์ค๋ฅ ์์ ์์
- ์ ์ํ ์ ์ง๋ณด์ : ์์คํ ๊ณผ ๊ด๋ จํ ํ๊ฒฝ์ ๋ณํ์ ์ ์ํ๊ธฐ ์ํ ์ฌ์กฐ์ ์์
- ์์ ํ ์ ์ง๋ณด์ : ์์คํ ์ ์ฑ๋ฅ์ ํฅ์ํ๊ธฐ ์ํ ๊ฐ์ ์์
- ์๋ฐฉํ ์ ์ง๋ณด์ : ์์ผ๋ก ๋ฐ์ํ ์ง ๋ชจ๋ฅผ ๋ณ๊ฒฝ ์ฌํญ์ ์์ฉํ๊ธฐ ์ํ ๋๋น ์์
์ค์ ๊ฐ๋ฐ์ ์ฐฉ์ํ๋ ๋จ๊ณ๋ ๊ตฌํ๋ถํฐ์ด๋ค. ํ์ฌ ๊ทธ๋ฆผ ์์์๋ ์ด ๋จ๊ณ๋ค์ด ๊ณ์ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌด๋ ์ํ ๊ตฌ์กฐ๋ก ๋์ด ์์ง๋ง, ์ค์ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๊ฐ๊ฐ์ ๋จ๊ณ๊ฐ ์ธ๋ฐํ๊ฒ ๋๋์ด์ ธ ์๊ธฐ๋ ํ๋ฉฐ, ๊ฐ ๋จ๊ณ๊ฐ ๊ณ์ ๋ฐ๋ณต๋๊ธฐ๋ ํ๋ค. ์ด์ฒ๋ผ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ ๋ค์ํ ๋ชจ๋ธ์ด ์กด์ฌํ๋ฉฐ, ์ฑ์ ๊ท๋ชจ๋ ์ข ๋ฅ๋ฅผ ๊ณ ๋ คํด ๊ฐ๋ฐ ๋ชจ๋ธ์ ์ ํํ๋ค.
์ ํต์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค
๊ธฐ์กด์ ์กด์ฌํ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ ์ํฐํด(Waterfall) ๋ฐฉ์์ด ์๋ค. ๋ง ๊ทธ๋๋ก ํญํฌ์ฒ๋ผ ๋จ๋ฐฉํฅ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ์งํ๋๋ ๊ฐ๋ฐ ๊ณผ์ ์ ๋ปํ๋ค. ๋ณดํต ์๋์ ๊ฐ์ ์ฌ์ดํด์ ๊ฐ์ง๋ฉฐ, ์ ์ง๋ณด์๊ฐ ๋๋๋ฉด ๋ค์ ์ฒ์์ ๋จ๊ณ๋ก ๋์๊ฐ ์์ํ๋ ๊ฒ์ด ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋ธ์ด๋ค. ์ฌ๊ธฐ์ ๋ณํ๋ ๋ชจ๋ธ๋ค์ด ๋์ค๊ธฐ๋ ํ์ง๋ง ๋ณดํต์ ํ๋ก์ธ์ค์ ์ถ๊ฐ๋ ์ธ๋ถํํ๋ ์์ค์์ ๊ทธ์น๋ค.
์ด๋ฐ ์ํฐํด ๊ฐ๋ฐ ๋ฐฉ์์ ์ค์ ์ถ์ ๊ธฐํ์ ์ ํด๋๊ณ ์์ฐจ์ ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ์งํํด ์ดํ๋ฆฌ์ํค์ ์ ์์ฑํด ๋ฐฐํฌํ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ๋ฐฐํฌ๋์ด ์ ์ ์๊ฒ ์ ๋ฌ๋๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๋ํ ์ค์ ๋์์ธ ๋๋ ๊ฐ๋ฐ๋ ํ๋ฉด์ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์๋ ๋จ๊ณ๋ ์ด๋ฏธ ๋ง์ ๋จ๊ณ๊ฐ ์ง๋์จ ์์ ์ด๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ๋ ์์ ์ฌํญ์ด ์๊ธฐ๋ฉด ๋ค์ ์ฒ์์ผ๋ก ๋์๊ฐ ์์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ผ์ ๊ณผ ๋น์ฉ ๋ฑ ๋ง์ ๋ถ๋ถ์์ ์ ๋ก์ฌํญ์ด ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ๋๋ถ๋ถ์ ์ถ์ ์์ ์ ์ํํธ์จ์ด์ ์ ๋ขฐ์ฑ ๋ฐ ์์ ์ฑ์ ๋ณด์ฅ ๋ฐ๊ธฐ ํ๋ค๋ฉฐ, ๋ฐฐํฌ ์งํ์๋ ์๋ง์ ๋ฒ๊ทธ๋ฅผ ๋ง์ฃผํ๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
๊ทธ๋์ ์ ํต์ ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค์์๋ ์ํํธ์จ์ด์ ์์ ์ฑ ๊ฐ์ ์ ์ํด ํ ์คํธ ๋จ๊ณ์ ๋ค์ํ ํ ์คํธ๋ค์ ๋์ ํ๊ธฐ๋ ํ๋ค.
- ์์คํ ํ ์คํธ : ๋ชจ๋ ๋ชจ๋์ ํตํฉํ ํ ์ต์ข ์ ์ผ๋ก ์์ฑ๋ ์์คํ ์ด ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๋์ง ํ์ธํ๋ค. ์๊ตฌ์ฌํญ์ ๋ง์กฑํ์ง ์๋๋ค๋ฉด ๋ค์ ์๊ตฌ๋ถ์ ๋จ๊ณ๋ก ๋์๊ฐ ์๋ก ๊ฐ๋ฐํ๊ธฐ๋ ํ๋ค.
- ์ํ ํ ์คํธ : ์์ ํ ๊ฐ๋ฐ๋ ์์คํ ์ ๊ฐ๋ฐ ํ์ฅ์์ ๋น๊ณต๊ฐ๋ก ํ ์คํธํ๋ ๊ฒ์ผ๋ก, ์ฃผ๋ฌธํ ์ ํ์ ๊ฒฝ์ฐ ๊ฐ๋ฐ์ง๊ณผ ํด๋ผ์ด์ธํธ ์ฌ์ด์์ ๋์๊ฐ ์ด๋ฃจ์ด์ง ๋๊น์ง ์ํ๋๋ค. ๋๊ธฐ์ ์ ๊ฒฝ์ฐ ์ด ์ ๋ฌด๋ฅผ ์ฃผ๋ก ํ๋ ์ ๋ฌธ QAํ์ด ์กด์ฌํ๋ค.
- ๋ฒ ํ ํ ์คํธ : ๊ณ ๊ฐ์ ์ค์ ์ฌ์ฉ ํ๊ฒฝ์์ ์ํ๋๋ ํ ์คํธ๋ก, ๋ฏธ๋ฆฌ ์ ๋ณ๋ ์ ์ ๋ค์ด ํด๋น ์ ํ์ ์ฌ์ฉํด๋ณด๊ณ , ์ด ๊ณผ์ ์์ ์๋ฌ๋ ๋ฒ๊ทธ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ์์ ํ๋ ์์ผ๋ก ์งํ๋๋ค.
์ด๋ฐ ์ ํต์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค์๋ ๋ค์ํ ํ ์คํธ ๋ฐฉ์์ ๋์ ํด๋ ๊ฒฐ๊ตญ ์ฌ์ฉ์๊ฐ ํญ์ ์ต์ ์ํ๋ก ์ ๋ฐ์ดํธ๋ฅผ ํด์ค์ผ ๋๊ณ , ๋ฒ๊ทธ๊ฐ ์์ ๋ ๋ฒ์ ์ ์ ์ ์๊ฒ ์ฆ๊ฐ์ ์ผ๋ก ์ ๋ฌํ๊ธฐ ์ด๋ ต๋ค๋ ํ๊ณ๊ฐ ์กด์ฌํ๋ค.
๋ชจ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค
์ด๋ฐ ๊ธฐ์กด ํ๋ก์ธ์ค๋ฅผ ๋ฒ์ด๋๊ธฐ ์ํด ๋ง๋ค์ด์ง ํ๋ก์ธ์ค ์ค ํ๋๊ฐ ์ ์์ผ(Asile) ๋ฐฉ์์ด๋ค. ์ด ์ ์์ผ ๋ฐฉ์์ ์คํ๋ฆฐํธ(sprint)๋ผ๋ ์งง์ ์ฃผ๊ธฐ์ ๊ฐ๋ฐ ์ฌ์ดํด์ ๊ณ์ ๋ฐ๋ณตํ๋ค.
์ด ๋ฐฉ์์ ์๊ตฌ์ฌํญ์ด ๋ณํ๋ ๊ฒ์ ๋น์ฐํ ์ ์ ๋ก ๋๊ณ ์์ด ๊ณํ์ ์์กดํ์ฌ ํ์์ ์ ์ฐจ๋ฅผ ๋ฐ๋ผ์ผ ํ๊ณ ๋ค๋ก ํ๊ทํ ์ ์๋ ์ ํต์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ณด๋ค๋ ํจ์ฌ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐ์ ์ฐฉ์ํ ์ ์๋ค. ์ ์์ผ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋น ๋ฅด๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ํ๋ฃจ์๋ ์ฌ๋ฌ ๋ฒ์ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํด์ง๋๋ฐ, ์ด๋ฐ ๋ฐฉ์์ SaaS(Software as a Service, ์๋น์คํ ์ํํธ์จ์ด)๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ์ ์ ํฉํ๋ค.
SaaS?
SaaS๋ ํด๋ผ์ฐ๋ ์๋น์ค์ ํ ๋ฐฉ์์ผ๋ก, ๋ธ๋ผ์ฐ์ ์ ์ ์ํ๊ธฐ๋ง ํด๋ ์ ๋ฒ์ ์ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ์๋น์ค ๋ฐฉ์์ด๋ค. ์ดํ๋ฆฌ์ผ์ด์ ๋ถํฐ ์๋ฒ, ๊ฐ์ํ, ์คํ ๋ฆฌ์ง, ๋คํธ์ํน๊น์ง ์ ๋ถ ๊ณต๊ธ์ ์ชฝ์์ ๊ด๋ฆฌํด ๊ณ ๊ฐ์ด ์ ์ดํ๊ฑฐ๋ ๊ด๋ฆฌํ ๋ถ๋ถ์ด ๊ฑฐ์ ์๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์ ์ ๋ฐ์ดํธ์ ๋ํ ๊ฑฑ์ ์์ ๋ฒ์ด๋๋ฉฐ, ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ์ ๋ฐฐํฌ๋ ๊ฐ๋ฅํ๊ณ , ๋น ๋ฅธ ๋ฐฐํฌ ์๋๋ฅผ ๋ณด์ฅ ๋ฐ์ ์ ์๋ค.
์ ํต์ ์ธ ๊ฐ๋ฐ ํ๋ก์ธ์ค vs. ๋ชจ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค
์ํฐํด | ์ ์์ผ | |
---|---|---|
์ฅ์ | - ํ๋ก์ธ์ค๊ฐ ๊ธธ๊ณ ์์๊ฐ ์กํ ์์ผ๋ฏ๋ก ํ์ ๊ท๋ชจ์ ์๊ด ์์ด ๋ฐ๋ฅด๊ธฐ ์ฌ์ - ๊ฐ๋ฐ ์ฃผ๊ธฐ๊ฐ ์ ํด์ ธ ์์ผ๋ฏ๋ก ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ ์ ์ผ๋ก ์์ ๊ฐ๋ฅ - ์๊ตฌ ์ฌํญ์ด ํ์ ๋์ด ์์ผ๋ฏ๋ก ํ๋ก์ ํธ๋ฅผ ์คํํ๊ธฐ ์์ํ๋ฉฐ, ๊ฐ๋ฐ ๋ชฉํ๋ฅผ ์์ฃผ ๋ณ๊ฒฝํ์ง ์์๋ ๋จ - ํ๋ก์ ํธ์ ์ ๊ณผ์ ์ ํ์ํ ์์ฐ ๋ฐ ์์์ด ์ด๊ธฐ์ ํ์ ๋์ด ์์ ๊ฒฐ๊ณผ์ ๋ฆฌ์คํฌ๋ฅผ ํต์ ํ๊ธฐ ํจ์ฌ ์ฌ์ | - ๋น ๋ฅด๋ฉด์ ์ ์ฐํ ๊ฐ๋ฐ ๊ณผ์ - ์งง๊ณ ๋ฐ๋ณต์ ์ธ ์คํ๋ฆฐํธ๋ก ๊ตฌ์ฑ๋์ด ์์ด ํ์ง์ ์ด์ ์ ๋ง์ถ ์ ์์ผ๋ฏ๋ก ๋น ๋ฅด๊ฒ ๊ฒฐํจ์ ์ธ์งํ๊ณ ์์ ๊ฐ๋ฅ - ์คํ๋ฆฐํธ๋ฅผ ํตํ ์งง์ ๋ฐ๋ณต ๊ณผ์ ์ผ๋ก ๊ฐ๋ฐ ๊ณผ์ ์ค์ ์ ์ํ ์ ํ ๋ณ๊ฒฝ ๊ฐ๋ฅ |
๋จ์ | - ๊ฐ๋ฐ์ด ์์ฐจ์ ์ผ๋ก ์งํ๋๋ฏ๋ก ์ ๋จ๊ณ๊ฐ ์์ฑ๋์ง ์์ผ๋ฉด ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ ์์ด ๊ฐ๋ฐ ์๋๊ฐ ๋๋ฆฌ๊ณ ์ ์ฐ์ฑ์ด ๋จ์ด์ง - ํ ์คํ ๋จ๊ณ์ ์ด๋ฅด๋ฌ์ ์ด์๊ฐ ๋ฐ๊ฒฌ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ ์์ - ๊ฐ๋ฐ ์๊ตฌ ์ฌํญ์ด ์ด๊ธฐ์ ํ์ ๋๋ฏ๋ก ๋ฒ์ ๋ณ๊ฒฝ์ด ์์ ๋กญ์ง ๋ชปํจ | - ์คํ๋ฆฐํธ์ ๋ํ ๊ฒฝํ์ด ์์ผ๋ฉฐ ๋น ๋ฅธ ๋ฐ๋ณต ์์ ์ ์ต์ํ ์คํฌ๋ผ ๋ง์คํฐ๊ฐ ํ์ํจ - ๊ณ ๊ฐ์ด ์๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒํ ํด์ผ๋ง ํ๋ ๋ฒ๊ฑฐ๋ก์ ๋ฐ์ - ํ์์ด ์ ์กฐ์ง๋์ด ์์ง ์๊ฑฐ๋ ์๋ฆฝ์ฑ์ด ๋จ์ด์ง๋ ๊ฒฝ์ฐ ์ ์์ผ๋ก ์ ์ฑํํ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ |
์ด๋ฐ ์ํฉ์ ์ ํฉ | - ๋์ ์์ธก ๊ฐ๋ฅ์ฑ๊ณผ, ์์ฐจ์ ์ธ ํ๋ก์ ํธ ํ์๋ผ์ธ, ์ฌ์ ํ์ ์์ฐ์ด ํ์ํ ๊ฒฝ์ฐ - ํ๋ก์ ํธ ํ์ ๊ฒฝํ์ด ์ ์ ๊ฒฝ์ฐ - ์๊ตฌ์ฌํญ์ด ๊ฐ๋จํ๊ฑฐ๋, ํ์๋ผ์ธ์ด ๊ธด ํ๋ก์ ํธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ | - ์๊ตฌ์ฌํญ์ด ๊ฐ๋จํ๊ฑฐ๋, ํ์๋ผ์ธ์ด ๊ธด ํ๋ก์ ํธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ - ํ๋ก์ ํธ๊ฐ ์๋ฒฝํ ์ํ๋ ๋๊น์ง ๊ฒฐ๊ณผ๋ฌผ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ๋ณด๋ค ๊ฒฐ๊ณผ๋ฌผ์ ๋ํด ๋น ๋ฅธ ํผ๋๋ฐฑ์ด ํ์ํ ๊ฒฝ์ฐ |
์ด๋ฐ ๊ธฐ์ ๋ฐ ํ์ ์ ํฉ | - ๊ฐ๋ฐ์์ ๋ณ๊ฒฝ์ด๋ ๋ฆฌ์คํฌ์ ๋ ๋ฏผ๊ฐํ ๊ธฐ์ ๋ฐ ํ - ์ ํ์ ์ธ ์๊ฐ๊ณผ ์์ ํ์ ํ์ ์ด ์์ ๋กญ์ง ๋ชปํ ๊ณ ๊ฐ์ ๋ ๊ธฐ์ ๋ฐ ํ | - IBM, ์์ค์ฝ, AT&T, ๋ง์ดํฌ๋ก์ํํธ์ ๊ฐ์ด ํฌ๊ณ ๋ณต์กํ ํ์ฌ๋ค์ด ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํด ๋ณํ์ ๋์ฑ ์ ์ํ๊ฒ ๋์ํ๊ณ ์ ํ ๋ - ๊ณ ๊ฐ ๋ฐ ์ธ๋ถ ๊ด๊ณ์์ ์ ๊ธฐ์ ์ผ๋ก ๊ธด๋ฐํ ํ์ ์ ์ํํ๋ ํ๋ก์ ํธ ํ |
DevOps
์ ํต์ ์ธ IT ์กฐ์ง ๊ตฌ์กฐ๋ก๋ ๊ฐ๋ฐํ(Dev)์ ์ด์ํ(Ops)์ด ์ํํธ์จ์ด์ ๊ฐ๋ฐ๊ณผ ์ ์ง๋ณด์๋ฅผ ๋ด๋นํ๋ค.
Dev(๊ฐ๋ฐํ) | Ops(์ด์ํ) | |
---|---|---|
ํน์ง | - ์ฆ์ ๋ฐฐํฌ ๋ฐ ์ ๋ฐ์ดํธ - ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํด ์๋ก์ด ๊ธฐ๋ฅ(๋ฆฌ์์ค)์ ๊ณต | - ํ๋ก๋์ ์ฑ์ ์์ ์ฑ ํ๋ณด - ์ธํ๋ผ ๊ด๋ฆฌ - ๋ชจ๋ํฐ๋ง ๋ฐ ์ ์ด |
๊ฐ๋ฐํ์ด ์ฆ์ ์ ๋ฐ์ดํธ๋ฅผ ํตํด ์ ํ์ ๋ณํ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค๋ฉด, ์ด์ํ์ ์ด๋ฐ ์๋น์ค ๊ตฌ์ฑ์ ๋ณ๊ฒฝ์ ์ต์ํํด ์์ ์ฑ์ ํ๋ณดํ๋๋ฐ, ์ด ๋ถ๋ถ์ ๊ฝค ์์ถฉ๋๋ ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฑ์ ์ผ๊ธฐํ๋ค. ์ด๋ฐ ๊ฐ๋ฑ์ด ๋น์ด์ง๋ ๊ตฌ์กฐ๋ ํ๋ IT ์์ฅ์๋ ๋ง์ง ์์ ๋ฟ ๋๋ฌ, ์ ํ์ ๋ฆด๋ฆฌ์ฆ ์ฃผ๊ธฐ๋ฅผ ๊ธธ์ด์ง๊ฒ ๋ง๋ ๋ค.
๊ทธ๋์ ํ์ํ ๊ฐ๋ ์ด DevOps์ธ๋ฐ, ์ํํธ์จ์ด ๊ฐ๋ฐ(Development)๊ณผ IT ์ด์(Operations)์ ํฉ์ฑ์ด์ด๋ค. ์ํํธ์จ์ด๋ฅผ ์์ฃผ, ๋นจ๋ฆฌ ๊ทธ๋ฆฌ๊ณ ์์ ํ๊ฒ ๋ฐฐํฌํ๋ ๊ฒ์ ๋ชฉํ๋ก ์ ์์ผ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค.
DevOps ๋ฌธํ
DevOps๋ ํน์ ์ ๋ฌด๋ ๋ถ์๊ฐ ์๋ ์ผ์ข ์ ๊ฐ๋ฐ ๋ฌธํ์ด๋ค. ๋ง์ฝ ์๋น์ค๊ฐ ์ค๋จ๋๋ค๋ฉด ๋๊ตฌ๋ ์ง ๋ฌธ์ ์ ์ ์ง๋จํ๊ณ ์์คํ ์ ๋ณต๊ตฌํ์ฌ ์ด์ํ ์ ์๋ ์ ์ฐจ๋ฅผ ์๊ณ ์์ด์ผ ํ๋ค. ์ด๋ฅผ ์ํ ๊ธฐ์ ๊ณผ ์ง์์ด ์ ๊ณต๋๊ธฐ ์ํด์ ํ๋ จ๊ณผ ํจ๊ณผ์ ์ธ ํ์ ์ฒด๊ณ๋ฅผ ๋ง๋ จํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค. ์ค์ ์ค๋ฌด์์๋ ์ ๋ฌด์ ๋ถ๋ฆฌ๋ฅผ ์ํด DevOpsํ์ ๋ฐ๋ก ๊ตฌ์ฑํ ์๋ ์๋ค.
DevOps ํน์ง
DevOps๋ ๊ฐ๋ฐ์์ ์ด์๊น์ง ํ๋์ ํตํฉ๋ ํ๋ก์ธ์ค๋ก ๋ฌถ์ด๋ด๊ณ ์ฌ์ฉํ๋ ํด๊ณผ ์์คํ ์ ํ์คํํ์ฌ ์์ฌ์ํต์ ํจ์จ์ฑ์ ํ๋ณดํ๊ณ ์ผ๋ จ์ ์์ ๋ค์ ์๋ํํ๋ค. ์ฆ ์ฝ๋ ํตํฉ, ํ ์คํธ, ๋ฐฐํฌ ๊ณผ์ ์ ์๋ํ ์ํค๋ ๊ฒ์ด๋ค. ์ด ๋ถ๋ถ์ ์ง์์ ์ผ๋ก ์ ์งํ ํ์๊ฐ ์๋๋ฐ, ์ง์์ ํตํฉ ๋ฐ ๋ฐฐํฌ(CI / CD)๋ผ๊ณ ํ๋ฉฐ DevOps์ ํต์ฌ ์์น์ด๋ผ๊ณ ํด๋ ๊ณผ์ธ์ด ์๋๋ค. ์ ๊ตฌ์ถ๋ CI / CD๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌ ์๊ฐ์ ํฌ๊ฒ ๋จ์ถ์ํจ๋ค.
DevOps ์ฌ๋ก
์ค์ ์ธํฐ๋ท ์์์ ์คํธ๋ฆฌ๋ฐ์ด๋ ์ฌ์ง๊ฐ์ ๋ง์ ํธ๋ํฝ๊ณผ ๋ค์ํ ์ฌ์ฉ์ ํ๊ฒฝ ๋ฐ ์๊ตฌ์ ๋น ๋ฅด๊ฒ ๋์ํ๊ธฐ ์ํด ๋ฐฐํฌ๊ฐ ๋ง์ ๊ธฐ์ ์ค DevOps๋ฅผ ํ์ฉํด ์ฑ๊ณตํ ๊ธฐ์ ๋ค์ด ๋ง๋ค.
์ค์ ์ฌ๋ก
- ๋ฏธ๊ตญ ์ต๋ ์จ๋ผ์ธ ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ ์๋ ๋ทํ๋ฆญ์ค(Netflex)๋ 2012๋ ๊ธฐ์ค์ผ๋ก 3์ฒ๋ง ๋ช ์ด ๋๋ ๊ฐ์ ์๋ฅผ ๋ณด์ ํ๋ฉฐ ์์ฒญ๋ ์คํธ๋ฆฌ๋ฐ ํธ๋ํฝ์ ์๋ง์กด ์น ์๋น์ค(AWS)์์ 10,000์ฌ๊ฐ ์ด์์ ์ธ์คํด์ค๋ฅผ 10์ฌ๋ช ์ ๋์ Devopsํ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์๋ค.
- ์ฌ์ง SNS ์๋น์ค๋ก ์ผํ์ ํฉ๋ณ๋ Flickr๋ ์ด๋น 40,000 ์ฅ์ ์ฌ์ง์ด ์ ๋ก๋ ๋๋๋ฐ Devops๋ฅผ ํตํ์ฌ ๋ชจ๋ ๋ฐฐํฌ ๋ฐ ์ด์์ ์๋ํํ์ฌ ํ๋ฃจ์๋ 10์ฌ ๋ฒ ์ฉ ์ด์์ ๋ฐฐํฌ๋ฅผ ํ๋ค.
- ์์ ์คํธ๋ฆฌ๋ฐ ์๋น์ค๋ก ์ต๊ทผ ๊ฐ๊ด์ ๋ฐ๊ณ ์๋ Spotify๋ ๊ฐ๋ ฅํ Devops ๊ฐ๋ฐ๋ฌธํ๋ฅผ ๊ฐ์ถ๊ณ ์คํ์์ค ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ๋ฐฐํฌ์ ์ด์์ ์๋ํํ์ฌ ๊ด๋ฆฌํ๋ค.
CI/CD
CI/CD๋ ์ฝ์ด๋ก, ๋ช ๊ฐ์ง ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- CI
CI๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ํ ํ๋ก์ธ์ค์ธ ์ง์์ ์ธ ํตํฉ(Continuous Integration)์ ์๋ฏธํ๋ค. CI๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๊ตฌํํ ๊ฒฝ์ฐ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์๋ก์ด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ๊ธฐ์ ์ผ๋ก ๋น๋ ๋ฐ ํ ์คํธ๋์ด ๊ณต์ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํตํฉ๋๋ฏ๋ก ์ฌ๋ฌ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ๋์์ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ฝ๋ ์์ ์ ํ ๊ฒฝ์ฐ ์๋ก ์ถฉ๋ํ ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
- CD
CD๋ ์ง์์ ์ธ ์๋น์ค ์ ๊ณต(Continuous Delivery) ๋๋ ์ง์์ ์ธ ๋ฐฐํฌ(Continuous Deployment)๋ฅผ ์๋ฏธํ๋ฉฐ ์ด ๋ ์ฉ์ด๋ ์ํธ ๊ตํ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. ๋ ์๋ฏธ ๋ชจ๋ ํ์ดํ๋ผ์ธ์ ์ถ๊ฐ ๋จ๊ณ์ ๋ํ ์๋ํ๋ฅผ ๋ปํ์ง๋ง ๋๋ก ์ผ๋ง๋ ๋ง์ ์๋ํ๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์๋์ง ์ค๋ช ํ๊ธฐ ์ํด ๋ณ๋๋ก ์ฌ์ฉ๋๊ธฐ๋ ํ๋ค.
CI/CD์ ๋จ๊ณ
์ผ๋ฐ์ ์ธ ์ฑ์ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์ ๋จ๊ณ๋ ์๋์ ๊ฐ๋ค. ์ฌ๊ธฐ์ ์ง์์ ํตํฉ ๋ฐ ์ง์์ ์ ๋ฌ์ ๋จ๊ณ๋ณ๋ก ๊พํ ์ ์๋ค.
์ง์์ ํตํฉ(Continuous Integration, CI)
๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ํ ํ๋ก์ธ์ค๋ผ๊ณ ๋ณผ ์ ์์ผ๋ฉฐ, Code - Build - Test ๋จ๊ณ์์ ๊พํ ์ ์๋ค.
- Code : ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์๊ฒฉ ์ฝ๋ ์ ์ฅ์์ pushํ๋ ๋จ๊ณ
- Build : ์๊ฒฉ ์ฝ๋ ์ ์ฅ์๋ก๋ถํฐ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ ์ ๋ ํ ์คํธ ํ ๋น๋ํ๋ ๋จ๊ณ
- Test : ์ฝ๋ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์ ํตํฉ๋๋์ง ํ์ธํ๋ ๊ณผ์
์ด ๊ณผ์ ์์ ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ์ฆ๊ฒ ์๊ฒฉ ์ฝ๋ ์ ์ฅ์์ pushํ๊ณ , ํ ์คํธ ๋ฐ ๋น๋๋ฅผ ํ๋ฉฐ ๋น๋ ๊ฒฐ๊ณผ๋ฅผ ํตํด ๋น๋์ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ํตํฉ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ํตํด ๊ฐ์ ๋ฐฉ์์ ์ฐพ๋๋ค. ์ด ๊ณผ์ ์ ํตํด ๊ฐ๋ฐ์๋ ๋ฒ๊ทธ๋ฅผ ์ผ์ฐ ๋ฐ๊ฒฌํ ์ ์๊ณ , ํ ์คํธ๊ฐ ์๋ฃ๋ ์ฝ๋์ ๋ํ ๋น ๋ฅธ ์ ๋ฌ์ด ๊ฐ๋ฅํด์ง๋ฉฐ ์ง์์ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
์ง์์ ํตํฉ์ ๋ชจ๋ ์ฝ๋ ๋ณํ๋ฅผ ํ๋์ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๊ด๋ฆฌํ๋ ๊ฒ ๋ถํฐ ์์ํ๋ค. ๋ชจ๋ ๊ฐ๋ฐํ์ด ์ฝ๋์ ๋ณํ๋ฅผ ํ์ธํ ์ ์์ด ํฌ๋ช ํ๊ฒ ๋ฌธ์ ์ ์ ํ์ ํ ์ ์๊ณ , ๋ํ ์ฆ์ ํ ๋ฆฌํ์คํธ์ ๋จธ์ง๋ก ์ฝ๋๋ฅผ ์์ฃผ ํตํฉํ๋ค. ์ด ๋ ๊ธฐ๋ณธ์ ์ธ ํ ์คํธ๋ ์๋์ํฌ ์ ์๋ค. ์ด๋ฐ ์ง์์ ํตํฉ์ ํตํด ๊ฐ๋ฐํ์ ๊ฐ์ ๊ฐ๋ฐํ ์ฝ๋๋ฅผ ์ด๋ฅธ ์์ ์ ์์ฃผ ํฉ์น๊ณ ์์ฃผ ํ ์คํธ ํด๋ณผ ์ ์๋ค.
์ง์์ ํตํฉ์ผ๋ก ๋ณด์ ์ด์, ์๋ฌ ๋ฑ์ ์ฝ๊ฒ ํ์ ํ ์ ์์ด ํด๋น ์ด์๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์ ํ ์ ์๋ค. ์ด์ ์๋ ๊ฐ์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ํฉ์น๊ณ ๋ ํ ๋ชจ๋ ๋ชจ์ฌ ๋น๋๋ฅผ ์์ํ๊ณ ๋์์ผ ๋ฌธ์ ์ ์ ํ์ ํ ์ ์์์ง๋ง, ์ง์์ ํตํฉ์ด ์ ์ฉ๋ ๊ฐ๋ฐํ์ ์ฝ๋๋ฅผ ๋จธ์งํ๊ธฐ ์ ์ด๋ฏธ ๋น๋ ์ค๋ฅ๋ ํ ์คํธ ์ค๋ฅ๋ฅผ ํ์ธํ์ฌ ํจ์ฌ ๋ ํจ์จ์ ์ธ ๊ฐ๋ฐ์ ํ ์ ์๊ฒ ๋๋ค.
์ง์์ ๋ฐฐํฌ(Continuous Delivery/Deployment, CD)
์ง์์ ์ธ ์๋น์ค ์ ๊ณต(Continuous Delivery) ๋ฐย ์ง์์ ์ธ ๋ฐฐํฌ(Continuous Deployment)๋ฅผ ์๋ฏธํ๋ฉฐ ์ด ๋ ์ฉ์ด๋ ์ํธ ๊ตํ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. Release - Deploy - Operate ๋จ๊ณ์์ ๊พํ ์ ์๋ค.
- Release : ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํํธ์จ์ด ํจํค์ง๋ฅผ ์์ฑํ๋ค.
- Deploy : ํ๋ก๋น์ ๋์ ์คํํ๊ณ ์๋น์ค๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ ธ์ถํ๋ ์ค์ง์ ์ธ ๋ฐฐํฌ ๋ถ๋ถ์ด๋ค.
- Operate : ์๋น์ค ํํฉ์ ํ์ ํ๊ณ ์๊ธธ ์ ์๋ ๋ฌธ์ ๋ฅผ ๊ฐ์งํ๋ค.
์ง์์ ๋ฐฐํฌ์ ๊ฒฝ์ฐ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณํฉ๋ถํฐ ํ๋ก๋์ ์ ์ ํฉํ ๋น๋ ์ ๊ณต์ ์ด๋ฅด๋ ๋ชจ๋ ๋จ๊ณ๋ก ํ ์คํธ ์๋ํ์ ์ฝ๋ ๋ฐฐํฌ ์๋ํ๊ฐ ํฌํจ๋๋ค. ์ด ํ๋ก์ธ์ค๋ฅผ ์๋ฃํ๋ฉด ํ๋ก๋์ ์ค๋น๊ฐ ์๋ฃ๋ ๋น๋๋ฅผ ์ฝ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์๋์ผ๋ก ๋ฐฐํฌํ ์ ์์ด ์ด์ํ์ด ๋ณด๋ค ๋น ๋ฅด๊ณ ์์ฝ๊ฒ ์ดํ๋ฆฌ์ผ์ด์ ์ ํ๋ก๋์ ์ผ๋ก ๋ฐฐํฌํ ์ ์๊ฒ ๋๋ค.
์ต๊ทผ์๋ ํด๋ผ์ฐ๋ ๊ธฐ์ ๋ฐ์ ๊ณผ ๋ง๋ฌผ๋ ค ์ง์์ ํตํฉ๊ณผ ๋ฐฐํฌ๊ฐ ๋น ๋ฅธ ์๋๋ก ์งํ๋๋ฉด์ CI/CD๋ฅผ ํ๋๋ก ๋ฌถ์ด์ ๋ค๋ฃจ๋ ๊ฒฝ์ฐ๊ฐ ์ ์ฐจ ์ฆ๊ฐํ๊ณ ์๋ค.
์ง์์ ๋ฐฐํฌ์ ๋ํ์ ์ฌ๋ก : Github Page
์ง์์ ๋ฐฐํฌ์ ๊ฐ์ฅ ํํ๋ฉด์ ๋ํ์ ์ธ ์ฌ๋ก๊ฐ Github Page์ด๋ค. ์ง์ ํด๋ ๋๋ ํ ๋ฆฌ์ ์ ํด์ง ๋ฐฉ์์ ๋ฐ๋ผ ์ ์ปค๋ฐํ๊ธฐ๋ง ํ๋ฉด Github Page๊ฐ ์์์ ํด๋น index.html ํ์ผ๊ณผ ํด๋น ๋๋ ํฐ๋ฆฌ์ ์๋ ํ์ผ์ ์ ๋ฒ๋ค๋งํด Github Page ์๋ฒ์ ์ ๋ก๋ํ๋ค. ์ด๋ ๊ฒ ์๋์ผ๋ก ์ธํฐ๋ท์ ๋ฐฐํฌ๊ฐ ๋๊ณ , ๋ง๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๊ฒ ๋๋ค.
CI/CD์ ์์ญ
CI/CD๋ ์ง์์ ํตํฉ ๋ฐ ์ง์์ ์ ๊ณต์ ๊ตฌ์ถ ์ฌ๋ก๋ง์ ์ง์นญํ ๋๋ ์๊ณ , ์ง์์ ํตํฉ, ์ง์์ ์ ๊ณต, ์ง์์ ๋ฐฐํฌ๋ผ๋ 3๊ฐ์ง ๊ตฌ์ถ ์ฌ๋ก ๋ชจ๋๋ฅผ ์๋ฏธํ๋ ๊ฒ์ผ ์๋ ์๋ค. ์ง์์ ์๋น์ค ์ ๊ณต์ ์ง์์ ์ธ ๋ฐฐํฌ ๊ณผ์ ๊น์ง ํฌํจ๋๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ ๋๊ธฐ๋ ํ๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก CI/CD๋ ํ์ดํ๋ผ์ธ์ผ๋ก ํํ๋๋ ์ค์ ํ๋ก์ธ์ค๋ฅผ ์๋ฏธํ๊ณ , ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ง์์ ์ธ ์๋ํ ๋ฐ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด ์ฉ์ด๋ ์ฌ๋ก๋ฒ๋ก CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌํ๋ ์๋ํ ์์ค ์ ๋์ ๋ฐ๋ผ ๊ทธ ์๋ฏธ๊ฐ ๋ฌ๋ผ์ง๋ค.
๋ฐฐํฌ ์๋ํ
๋ฐฐํฌ ์๋ํ๋ ํ ๋ฒ์ ํด๋ฆญ ๋๋ ๋ช ๋ น์ด ์ ๋ ฅ์ ํตํด ์ ์ฒด ๋ฐฐํฌ ๊ณผ์ ์ ์๋์ผ๋ก ์งํํ๋ ๊ฒ์ ๋ปํ๋ค. ๋ฐฐํฌ ์๋ํ๋ ์๋์ ์ด๊ณ ๋ฐ๋ณต์ ์ธ ๊ณผ์ ์ ์๋ํํด ์๊ฐ์ ์ ์ฝํ๊ณ ํด๋จผ ์๋ฌ(Human Error)๋ฅผ ๋ฐฉ์งํ ์ ์๋ค. ๋ฐฐํฌ ์๋ํ๋ฅผ ํตํด ์ ์ฒด ๋ฐฐํฌ ๊ณผ์ ์ ๋งค๋ฒ ์ผ๊ด๋๊ฒ ์งํํ๋ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํด ํด๋จผ ์๋ฌ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ๋ฎ์ถ ์ ์๋ค.
CI/CD ํ์ดํ๋ผ์ธ
์ฆ์ ๋ฐฐํฌ ๊ณผ์ ์ ์๋ํ์ํค๋ ๋ฐฉ๋ฒ์ ๊ตฌ์ถํ๋ ๊ฒ์ CI/CD ํ์ดํ๋ผ์ธ์ด๋ผ ํ๋ค. ์์ ๊ทธ๋ฆผ์ฒ๋ผ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์๊ฒฉ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฌ๋ฆฌ๋ฉด ๊ทธ ์ฝ๋๊ฐ ๋น๋ ๋ฐ ํ ์คํธ์ ๋ฆด๋ฆฌ์ฆ๋ฅผ ๊ฑฐ์ณ ๋ฐฐํฌ ์๋ฒ๋ก ์ ๋ฌ๋๋ค. ๋ฐฐํฌ ์๋ฒ์ ๋๋ฌํ ๋น๋๋ ์ฝ๋๋ ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ก ์ต์ข ๋ฐฐํฌ๊ฐ ์๋ฃ๋๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ ์ ์ ๊ฐ ์ง์ ํ์ธํ๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ์๋ํ๋ฅผ ๊พํ๋ ๋ถ๋ถ์ ๋ณดํต ์ฝ๋๊ฐ ๋น๋๋๋ฉด์ ์ต์ข ์ ์ผ๋ก ๋ฐฐํฌ๊ฐ ๋๋ ๋จ๊ณ๊น์ง์ด๋ค. ์ด ๋ถ๋ถ์ ์ง์์ ์ธ ํตํฉ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํด ์ผ๋ จ์ ์๋ํ ๋จ๊ณ๋ก ๋ง๋๋๋ฐ, ์ด๊ฒ์ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ๋ค๊ณ ํํํ๋ค.
๊ธฐ๋ณธ ๋จ๊ณ์ ์ํ ์์
๋ฐฐํฌ์์ ํ์ดํ๋ผ์ธ(Pipeline)์ด๋ผ๋ ์ฉ์ด๋ ์์ค ์ฝ๋์ ๊ด๋ฆฌ๋ถํฐ ์ค์ ์๋น์ค๋ก์ ๋ฐฐํฌ ๊ณผ์ ์ ์ฐ๊ฒฐํ๋ ๊ตฌ์กฐ๋ฅผ ๋ปํ๋ค. ํ์ดํ๋ผ์ธ์ ์ ์ฒด ๋ฐฐํฌ ๊ณผ์ ์ ์ฌ๋ฌ ๋จ๊ณ(Stage)๋ก ๋ถ๋ฆฌํ๋๋ฐ, ๊ฐ ๋จ๊ณ๋ฅผ ํ์ดํ๋ผ์ธ ์์์ ์์ฐจ์ ์ผ๋ก ์คํ๋๋ฉฐ ๊ฐ ๋จ๊ณ๋ง๋ค ์ฃผ์ด์ง ์์ (Action)๋ค์ ์ํํ๋ค.
- Source Stage : ์๊ฒฉ ์ ์ฅ์์์ ๊ด๋ฆฌ๋๊ณ ์๋ ์์ค ์ฝ๋์ ๋ณ๊ฒฝ ์ฌํญ์ด ์ผ์ด๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๊ฐ์งํด ๋ค์ ๋จ๊ณ๋ก ์ ๋ฌํ๋ ์์ ์ ์ํํ๋ค.
- Build Stage : Source ๋จ๊ณ์์ ์ ๋ฌ๋ฐ์ ์ฝ๋๋ฅผ ์ปดํ์ผ, ๋น๋, ํ ์คํธํ์ฌ ๊ฐ๊ณตํ๊ณ Build ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์์ฑ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์ ๋จ๊ณ๋ก ์ ๋ฌํ๋ ์์ ์ ์ํํ๋ค.
- Deploy Stage : Build ๋จ๊ณ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๊ฒฐ๊ณผ๋ฌผ์ ์ค์ ์๋น์ค์ ๋ฐ์ํ๋ ์์ ์ ์ํํ๋ค.
ํ์ดํ๋ผ์ธ์ ๋จ๊ณ๋ ํ์์ ๋ฐ๋ผ ๋ ์ธ๋ถํํ๊ฑฐ๋ ๊ฐ์ํ๋ ์ ์๋ค. DevOps๋ฅผ ์ ๋ฌธ์ผ๋ก ํ์ตํ๋ ๊ฒฝ์ฐ ๋จ๊ณ๋ฅผ ์ธ๋ถํํด์ ๋๋๊ธฐ๋ ํ๋ฉฐ, ํด๋น ํด์ ์๊ฐํ๋ ์ ์ฒด์ ๋ฐ๋ผ ์ฉ์ด๋ฅผ ๋ฏธ๋ฌํ๊ฒ ๋ค๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
๊ตฌ์ฑ์์ ๋ฐ ์ฅ์
- ๋น๋ (์ํํธ์จ์ด ์ปดํ์ผ)
- ํ ์คํธ (ํธํ์ฑ ๋ฐ ์ค๋ฅ ๊ฒ์ฌ)
- ๋ฆด๋ฆฌ์ค (๋ฒ์ ์ ์ด ์ ์ฅ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํธ)
- ๋ฐฐํฌ (๊ฐ๋ฐ์์ ํ๋ก๋์ ํ๊ฒฝ์ผ๋ก์ ๋ณํ)
- ๊ท์ ์ค์ ๋ฐ ์ ํจ์ฑ ๊ฒ์ฌ
์ด ๊ณผ์ ์ด ์ค๋ฌด์์๋ ๋ฐ๋ณต์ ์ธ ํ๋ก์ธ์ค์ด๊ธฐ ๋๋ฌธ์ ์ด ๋ถ๋ถ์ ์ผ๋ จ์ ์๋ํ ๋จ๊ณ๋ก ๋ง๋ ๋ค๊ณ ๋ณผ ์ ์๋ค. ์ด๋ ๊ฒ ๊ตฌ์ถ๋ ํ์ดํ๋ผ์ธ์ ์ต์ ๋ฒ์ ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ดํธํ๊ณ ์ ๊ณตํ๋ ์ผ๋ จ์ ์ฒ๋ฆฌ ๋จ๊ณ์์ ์์๋๋ ์๊ฐ์ ์๋ ์์ ์ ๋นํด ๋ ๋น ๋ฅด๊ณ ์์ ์ ์ด๋ฉฐ ํจ๊ณผ์ ์ผ๋ก ์ค์ฌ์ฃผ๊ณ CI/CD ์ธํ๋ผ์์ ํธํ์ฑ๊ณผ ํจ์จ์ฑ์ ๋์ฌ์ค๋ค.
Github Actions
Github Actions์ Github๊ฐ ๊ณต์์ ์ผ๋ก ์ ๊ณตํ๋ ๋น๋, ํ ์คํธ ๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์๋ํ ํ ์ ์๋ CI/CD ํ๋ซํผ์ด๋ค. ๋ ํฌ์งํ ๋ฆฌ์์ pull request๋ push๊ฐ์ ์ด๋ฒคํธ๋ฅผ ํธ๋ฆฌ๊ฑฐ๋ก Github ์์ ์ํฌํ๋ก๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค. ์ํฌํ๋ก๋ ํ๋ ์ด์์ ์์ ์ด ์คํ๋๋ ์๋ํ ํ๋ก์ธ์ค๋ก, ๊ฐ ์์ ์ ์์ฒด ๊ฐ์ ๋จธ์ ๋๋ ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋๋ค.
์ํฌํ๋ก๋ YAML ( .yml
ํน์ .yaml
) ํ์ผ์ ์ํด ๊ตฌ์ฑ๋๋ฉฐ, ํ
์คํธ, ๋ฐฐํฌ ๋ฑ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ฌ๋ฌ๊ฐ์ ์ํฌํ๋ก๋ ๋ง๋ค ์ ์์ผ๋ฉฐ, ์์ฑ๋ ์ํฌํ๋ก๋ .github/workflows
๋๋ ํ ๋ฆฌ ์ดํ์ ์์นํ๋ค.
๋น๊ณต๊ฐ ๋ ํฌ์งํ ๋ฆฌ์ ๊ฒฝ์ฐ Github Actions๊ฐ ์๋ํ ๋์ ์ฉ๋๊ณผ ์๊ฐ์ด ์ ํ๋์ด ์์ง๋ง ๊ณต๊ฐ ๋ ํฌ์งํ ๋ฆฌ๋ ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
Github Actions ์ค์ต : ๋ฐฐํฌ ์๋ํํ๊ธฐ
๋ฐฐํฌ๋ฅผ ์๋ํ ํ๊ธฐ ์ํด์๋ ์์ ๋งํ๋ฏ .yml
ํ์ผ์ ์ ์ฐจ๋ฅผ ์งํํ ์ํฌํ๋ก๋ฅผ ์์ฑํด์ผ ํ๋ค. ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ด ๋๋ถ๋ถ ๋ด๊ธด ํ์ผ์ด ์ ๊ณต๋์๊ณ , ํ์ผ์ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ ๋ค ์ค์ ๋ก ์คํํ๋ค.
name: client # ์คํํ ์ก์
์ ์ด๋ฆ
# ์ก์
์ด ์คํ๋๋ ์กฐ๊ฑด(์ด๋ฒคํธ)
on:
push:
branches:
- reference # referece ๋ธ๋์น์ push๊ฐ ์๊ธธ ๋ ์คํ๋๋ค.
# ์ก์
์ํฌํ๋ก
# ์ํฌํ๋ก์ ์ด๋ฆ์ key๋ก ์ง์ ํ๋ค. ์ฌ๋ฌ ๊ฐ์ ์ํฌํ๋ก๊ฐ ๋ค์ด๊ฐ ์๋ ์๋ค.
# ๊ฐ๊ฐ์ jobs๋ ๋
๋ฆฝ๋ ํ๊ฒฝ(์ธ์คํด์ค)์์ ์คํ๋๋ค.
# ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด ํจ์จ์ ๋์ผ ์ ์๋ค.
jobs:
build: # job์ ์ด๋ฆ
runs-on: ubuntu-20.04 # ์ก์
์ ์คํ ํ OS ์ง์
steps: # ์ธ์คํด์ค์์ ์คํ ํ ๊ฐ ์ ์ฐจ
- name: Checkout source code. # Github Checkout Action : ๋ ํฌ์งํ ๋ฆฌ์์ ์ฝ๋๋ฅผ ๋ด๋ ค๋ฐ๋๋ค.
uses: actions/checkout@v2
- name: Install dependencies # npm package install
run: npm install
working-directory: ./my-agora-states-client # ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์๋ ์๋ค.
- name: Build # react build ์คํ
run: npm run build
working-directory: ./my-agora-states-client
- name: SHOW AWS CLI VERSION # ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋ AWS CLI์ ๋ฒ์ ํ์ธ
env: # ๋ ํฌ์งํ ๋ฆฌ์ secret์ ์ด์ฉํด env๋ก ์ง์ ํ ์ ์๋ค.
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_EC2_METADATA_DISABLED: true
run: |
aws --version
- name: Sync Bucket # AWS S3 ๋ฒ์ผ์ Build๋ ํ์ผ ์
๋ก๋
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_EC2_METADATA_DISABLED: true
run: |
aws s3 sync \
--region ap-northeast-2 \
build s3://fe-64-ninefloor-s3 \
--delete
working-directory: ./my-agora-states-client
โ ๏ธ Issue : S3 ๋ฒ์ผ ์ฑํฌ ์ค ์๋ฌ ๋ฐ์
์ก์
์คํ ์ค The user-provided path dist does not exist.
๋ผ๋ ๋ฉ์ธ์ง์ ํจ๊ป ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ํด๋น ์คํ
์์ ๋๋ ์๋ working-directory: ./my-agora-states-client/build
๋ก ์์ฑํ๋๋ฐ, ์ค๋ฅ ๋ฉ์ธ์ง๋ฅผ ์ฐพ์๋ณด๋ ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์๋ค๋ ๋ด์ฉ์ด์๋ค. ํ์ด๋ถ์ /build
๋ถ๋ถ์ ์ ์ธํ์ ๋ ์ ์์ ์ผ๋ก ์๋ํ๋ค ํ์
์ ๋์ผํ๊ฒ ์งํํ๊ณ , ๋ ์ญ์ ๊ทธ๋ ๊ฒ ๋ณ๊ฒฝํ๊ณ ๋๋ ์ ์์ ์ผ๋ก ์คํ๋์๋ค.
- Why?
AWS CLI์์ ์ ๋ ฅํ ์ ์๋
s3 sync
๋ช ๋ น์ด์ ๊ธฐ๋ณธ ํํ๋ ์๋์ ๊ฐ๋ค.aws s3 sync /<ORIGIN_PATH> /<TARGET_PATH> # .yml์์ ์์ฑํ ์ค์ ๋ก ์คํ ๋ ๋ช ๋ น์ด aws s3 sync --region ap-northeast-2 build s3://fe-64-ninefloor-s3 --delete
๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ผ๊ฐ ํ์ผ์ ๊ฒฝ๋ก์ ๋ฒํท์ ๊ฒฝ๋ก๋ฅผ ์์ฑํด์ฃผ๋๋ฐ, ์์ ๋ช ๋ น์ด๋ฅผ ๋ณด๊ฒ ๋๋ฉด ์ด๋ฏธ
build
๋ก ์ฌ๋ผ๊ฐ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ํน ๋๋ ํ ๋ฆฌ์/build
๋ฅผ ์์ฑํด์ฃผ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก๋./my-agora-states-client/build/build
๊ฒฝ๋ก์ ๋ํ ์ ๋ก๋๋ฅผ ์๋ํ๋ ๊ฒ์ด๋ค.
Action ์คํ ์๋ฃ ๋ฐ ๊ฒฐ๊ณผ
Uploaded by N2T