Tech๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ๋ธŒ๋žœ์น˜ ์ „๋žต ๋ณ€๊ฒฝ ๋ฐ ๋ธŒ๋žœ์น˜ ๋‹จ์œ„ ๋ฐฐํฌ ์‹œ์Šคํ…œ ๋„์ž…๊ธฐ

์กฐํšŒ์ˆ˜ 2080

์•ˆ๋…•ํ•˜์„ธ์š”, ์œ™์ž‡ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์–‘์›์ค€์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœํŒ€์—์„œ ๋ธŒ๋žœ์น˜ ์ „๋žต๊ณผ QA ๋ฐฉ์‹์„ ๊ฐœ์„ ํ•˜๋ฉด์„œ ๋ธŒ๋žœ์น˜ ๋‹จ์œ„ ๋ฐฐํฌ ์‹œ์Šคํ…œ์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด์— ๊ฒช๊ณ  ์žˆ๋˜ ๋ถˆํŽธํ•จ์„ ์–ด๋– ํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์„ ํ•˜์˜€๋Š”์ง€ ์†Œ๊ฐœํ•˜๊ณ ์ž ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


์ดˆ๊ธฐ ๋ธŒ๋žœ์น˜ ์ „๋žต์˜ ๋ฌธ์ œ์ 

๊ฐœ๋ฐœํŒ€์˜ ๊ทœ๋ชจ๊ฐ€ ์ž‘์„ ๋•Œ๋Š” 

  • develop ๋ธŒ๋žœ์น˜์— ๊ฐœ๋ฐœ๋œ ๋‚ด์šฉ๋“ค์„ mergeํ•˜๊ณ 
  • merge๋œ ๋‚ด์šฉ๋งˆ๋‹ค QA๋ฅผ ๋ฐ›์•„
  • ๋ชจ๋“  QA๊ฐ€ ๋๋‚˜๋ฉด develop์„ master์— mergeํ•˜์—ฌ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์ด์—ˆ์Šต๋‹ˆ๋‹ค.

→ ์ฆ‰, ๋ธŒ๋žœ์น˜ ์ „๋žต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. 

์œ„์™€ ๊ฐ™์€ ์ „๋žต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • develop์— merge๋œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ ์Šคํ† ๋ฆฌ๋“ค ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด QA๊ฐ€ ๋Šฆ์–ด์ง€๊ฒŒ ๋˜๋ฉด, ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ๋“ค๋„ ๋ชจ๋‘ ์—ฐ๊ธฐ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ๋ฅผ ๋‚˜๊ฐˆ ์ˆ˜ ์—†๋Š” ์Šคํ† ๋ฆฌ์˜ ๊ฒฝ์šฐ revert๋ฅผ ํ•ด์•ผํ•˜๋ฉฐ, ์ด์— ๋”ฐ๋ฅธ ์ถฉ๋Œ ๋˜ํ•œ ๊ฐ์•ˆํ•˜๊ณ  ํ•ด๊ฒฐํ•ด์•ผ ํ•˜์ฃ .

๊ฐœ๋ฐœํŒ€์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ์ผ์ด ๋”์šฑ ๋นˆ๋ฒˆํ•ด ์ ธ์„œ, ์ €ํฌ๋Š” ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ „๋žต์„ ์„ธ์šฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๋ณ€๊ฒฝ๋œ ๋ธŒ๋žœ์น˜ ์ „๋žต์˜ ๋ฌธ์ œ์ 

์Šคํฌ๋Ÿผ, ์Šคํ”„๋ฆฐํŠธ ์—…๋ฌด ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ๋„์ž…ํ•œ ์ดํ›„, ๊ฐœ๋ฐœํŒ€์˜ ์Šคํ† ๋ฆฌ ํ•ด๊ฒฐ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์™”์Šต๋‹ˆ๋‹ค.

์ด ์ค‘ QA๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ธฐ์กด์— develop ๋ธŒ๋žœ์น˜์—์„œ ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•˜์˜€์ง€๋งŒ, QA ์„œ๋ฒ„ ๋ธŒ๋žœ์น˜๋กœ ์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ๋กœ Mergeํ•˜์—ฌ ์„œ๋ฒ„๋กœ ๋ฐฐํฌํ•˜๊ณ  QA๊ฐ€ ๋งˆ๋ฌด๋ฆฌ๊ฐ€ ๋˜๋ฉด ๋‹ค์‹œ develop ๋ธŒ๋žœ์น˜๋กœ Mergeํ•˜์—ฌ ๋ฐฐํฌ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋„˜์–ด๊ฐ€๋„๋ก ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

→ ์ฆ‰, ๋ณ€๊ฒฝ๋œ ๋ธŒ๋žœ์น˜ ์ „๋žต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ๋ธŒ๋žœ์น˜ ์ „๋žต
    1. develop์„ base๋กœ ํ•œ qa ๋ธŒ๋žœ์น˜๋ฅผ ์ •๊ธฐ์ ์œผ๋กœ ์ƒ์„ฑํ•ด๋‘ 
    2. develop์„ base๋กœ feature/a,b,c ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
    3. ์ฝ”๋“œ ์ž‘์„ฑ ํ›„ feature → develop PR ์ƒ์„ฑ + ์ฝ”๋“œ๋ฆฌ๋ทฐ
    4. qa ← feature/a,b,c merge ํ›„ qa ์„œ๋ฒ„ ๋ฐฐํฌ
    5. qa ์„œ๋ฒ„์—์„œ qa ์ง„ํ–‰
    6. (qa ์ข…๋ฃŒ ํ›„) feature/a,b,c → develop PR merge
    7. develop → master merge
    8. master ๋ฐฐํฌ

๋ณ€๊ฒฝ๋œ ์ „๋žต๋Œ€๋กœ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•ด ์™”์œผ๋‚˜, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

  • qa ๋ธŒ๋žœ์น˜์— feature ๋ธŒ๋žœ์น˜๋“ค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋“ค์ด ํ•จ๊ป˜ ๋ฐ˜์˜๋˜์–ด์žˆ์Œ

    • ๊ฐ™์€ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ์žˆ๋‹ค๋ฉด ์ถฉ๋Œ์ด ์žˆ๊ณ , ํ•ด๊ฒฐํ•ด๋„ develop์œผ๋กœ mergeํ•  ๋•Œ ๋‹ค์‹œ ํ•ด์•ผ ํ•จ
    • QA๊ฐ€ ๊ธธ์–ด์ง€๋ฉด, ์„œ๋กœ ๊ธฐ๋Œ€ํ•˜๋Š” base(develop)์˜ ๋ฒ„์ „์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†์Œ

  • ์ •๊ธฐ์ ์œผ๋กœ qa ๋ธŒ๋žœ์น˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์–ด์•ผ ํ•จ (์‚ญ์ œ → ์žฌ์ƒ์„ฑ)

    • ์ด์ „ QA ๋ธŒ๋žœ์น˜์— ์˜ฌ๋ ธ๋˜ ๋‚ด์šฉ๋“ค์„ ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ธŒ๋žœ์น˜์— ๋˜ ๋‹ค์‹œ ์˜ฌ๋ ค์•ผ ํ•จ


 < ๊ฐœ๋ฐœํŒ€์—์„œ ์„œ๋กœ qa ์‚ฌ์šฉ ํ˜„ํ™ฉ์„ ๊ณต์œ ํ•˜๋Š” ๋ชจ์Šต.. ์œฝ.. >


์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜ ์ „๋žต

๋”ฐ๋ผ์„œ, ์ €ํฌ์˜ work flow์— ๋งž๋Š” ๋ธŒ๋žœ์น˜ ์ „๋žต์˜ ๊ฐœ์„ ์ด ํ•„์š”ํ–ˆ๊ณ , QA๋ฅผ ์Šคํ† ๋ฆฌ ๋‹จ์œ„์—์„œ ๋๋งˆ์น˜๊ณ  develop ๋ธŒ๋žœ์น˜๋กœ ํ•ฉ์ณ์งˆ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ธŒ๋žœ์น˜ ์ „๋žต์„ ๋ณ€๊ฒฝํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. 

  • ๋ณ€๊ฒฝ๋œ ๋ธŒ๋žœ์น˜ ์ „๋žต
    1. develop์„ base๋กœ ํ•œ story ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑ
    2. story ๋ธŒ๋žœ์น˜๋ฅผ base๋กœ feature ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ
    3. ์ฝ”๋“œ ์ž‘์„ฑ ํ›„ feature/a,b,c → story PR ์ƒ์„ฑ + ์ฝ”๋“œ๋ฆฌ๋ทฐ
    4. story ← feature/a,b,c merge ํ›„ story ์„œ๋ฒ„ ๋ฐฐํฌ
    5. story ์„œ๋ฒ„์—์„œ qa ์ง„ํ–‰
    6. (qa ์ข…๋ฃŒ ํ›„) story → develop PR ์ƒ์„ฑ & merge
    7. develop → master merge
    8. master ๋ฐฐํฌ

๋ฐ”๋€ ๋ธŒ๋žœ์น˜ ์ „๋žต์—์„œ ๊ธฐ์กด ๋ธŒ๋žœ์น˜ ์ „๋žต์˜ ๋ฌธ์ œ์ ๋“ค์ด ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๋ฉด,

  • qa ๋ธŒ๋žœ์น˜์— feature ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋“ค์ด ํ•จ๊ป˜ ๋ฐ˜์˜๋˜์–ด์žˆ์Œ

    • ๊ฐ™์€ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ˆ˜์ •์ด ์žˆ๋‹ค๋ฉด ์ถฉ๋Œ์ด ์žˆ๊ณ , ํ•ด๊ฒฐํ•ด๋„ develop์œผ๋กœ mergeํ•  ๋•Œ ๋˜ ํ•ด์•ผํ•จ

      develop์œผ๋กœ Mergeํ•  ๋•Œ์˜ ์ถฉ๋Œ๋งŒ ํ•ด๊ฒฐํ•˜๋ฉด ๋จ

    • QA๊ฐ€ ๊ธธ์–ด์ง€๋ฉด, ์„œ๋กœ ๊ธฐ๋Œ€ํ•˜๋Š” base(develop)์˜ ๋ฒ„์ „์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ๋ฐ˜์˜ํ•  ์ˆ˜ ์—†์Œ

      story ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹œ์ ์˜ develop ๋ฒ„์ „์„ ๋…์ž์ ์œผ๋กœ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

  • ์ •๊ธฐ์ ์œผ๋กœ qa ๋ธŒ๋žœ์น˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์–ด์•ผ ํ•จ (์‚ญ์ œ → ์žฌ์ƒ์„ฑ)

    • ์ด์ „ QA ๋ธŒ๋žœ์น˜์— ์˜ฌ๋ ธ๋˜ ๋‚ด์šฉ๋“ค์„ ์ƒˆ๋กœ ์ƒ์„ฑ๋˜๋Š” ๋ธŒ๋žœ์น˜์— ๋˜ ๋‹ค์‹œ ์˜ฌ๋ ค์•ผ ํ•จ

      ๋‹ด๋‹น์ž ๋ณธ์ธ์˜ story ๋ธŒ๋žœ์น˜์—์„œ QA๊ฐ€ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋”์ด์ƒ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

๋ธŒ๋žœ์น˜ ์ „๋žต์€ ์ €ํฌ์˜ ์—…๋ฌด flow์— ๋งž๊ฒŒ ๋ณ€๊ฒฝ์„ ํ–ˆ์ง€๋งŒ, ์ด์— ์•ž์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๊ณผ์ œ๊ฐ€ ํ•˜๋‚˜ ๋” ๋‚จ์•„์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.



๋ธŒ๋žœ์น˜ ๋‹จ์œ„ ๋ฐฐํฌ

๋ฐ”๋€ git ๋ธŒ๋žœ์น˜ ์ „๋žต์€ ๊ฒฐ๊ตญ story ๋ธŒ๋žœ์น˜๋ณ„๋กœ ์„œ๋ฒ„๊ฐ€ ์ƒ์„ฑ์ด ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  story ๋ธŒ๋žœ์น˜ ์„œ๋ฒ„์—์„œ QA๊ฐ€ ๋๋‚˜๋ฉด, develop์œผ๋กœ story ๋ธŒ๋žœ์น˜๋ฅผ Mergeํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ €ํฌ๋Š” Jenkins์˜ CI/CD ํŒŒ์ดํ”„๋ผ์ธ, AWS ๋ฆฌ์†Œ์Šค๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์˜ ๋ฐฐํฌ๊ฐ€ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ธŒ๋žœ์น˜ ๋‹จ์œ„ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์„ธํŒ…ํ•ด์ฃผ์–ด์•ผ ํ•  ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Jenkins
    • ์ •ํ•ด์ง„ ๋ธŒ๋žœ์น˜ ๋ช…์นญ(develop, master, story, ...) ์™ธ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜๋“ค์„ followํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ
    • story/ ํ•˜์œ„์˜ ๋ธŒ๋žœ์น˜์ธ ๊ฒฝ์šฐ aws ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒˆ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ๋ณ€๊ฒฝ
  • AWS
    • story/ ํ•˜์œ„ ๋ธŒ๋žœ์น˜์˜ ๊ฒฝ์šฐ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ์กฐํ•ฉํ•˜์—ฌ AWS ๋ฆฌ์†Œ์Šค๋“ค์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฐํฌํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ


์šฐ์„  Jenkins์—์„œ๋Š” multi-branch pipeline์„ ์‚ฌ์šฉํ•˜์—ฌ develop, master, story ๋ธŒ๋žœ์น˜ ์ด์™ธ์˜ ๋ธŒ๋žœ์น˜๋Š” ๋นŒ๋“œ ๋Œ€์ƒ์—์„œ ์ œ์™ธํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.



๊ทธ๋ฆฌ๊ณ  story ๋ธŒ๋žœ์น˜์˜ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์—๋Š” ๊ฐ ์Šคํ† ๋ฆฌ ๋ธŒ๋žœ์น˜๋ณ„๋กœ ๋…์ž์ ์ธ AWS ๋ฆฌ์†Œ์Šค ๊ทธ๋ฃน์„ ์ƒ์„ฑํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๊ธฐ์กด QA์šฉ ์„œ๋ฒ„๋Š” AWS์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฐ ๋ฆฌ์†Œ์Šค ๋ณ„๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • CodeDeploy
    • DeploymentGroup
      • ์ •ํ•ด์ง„ ๋ฐฐํฌ ์ „๋žต์— ๋งž์ถฐ ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ƒˆ ์ด๋ฏธ์ง€๋กœ ๊ต์ฒดํ•˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ECS์— ์ „๋‹ฌํ•˜๊ณ , ํŠธ๋ž˜ํ”ฝ์„ ์žฌ๋ฐฐ์น˜ ์‹œ์ผœ์ฃผ๋Š” ์ž‘์—… ๋‹จ์œ„
  • Elastic Container Service
    • Service
      • ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ ์ „๋žต์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ์œ„ (Auto Scaling, ๋ฐฐํฌ, ์‹œ์Šคํ…œ ๋กœ๊น…)
    • TaskDefinition
      • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ๋‹จ์œ„
  • Elastic Load Balancing
    • LoadBalancer
      • ์™ธ๋ถ€(ํด๋ผ์ด์–ธํŠธ)๋กœ๋ถ€ํ„ฐ ๋“ค์–ด์˜จ ํŠธ๋ž˜ํ”ฝ์„ ์ •ํ•ด์ง„ ๊ทœ์น™์— ๋งž๊ฒŒ ๋‚ด๋ถ€ ์ธ์Šคํ„ด์Šค๋กœ ๋ถ„์‚ฐ
    • TargetGroup
      • ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์—์„œ ํ†ต๊ณผํ•œ ์š”์ฒญ์„ ์ •ํ•ด์ง„ target ip๋กœ routing
  • Route 53
    • RecordSet
      • DNS ๋ฐ ๋„๋ฉ”์ธ ์ด๋ฆ„ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ


๊ฐ ๋ฆฌ์†Œ์Šค๋ณ„๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ์ด๋ฆ„ ๊ทœ์น™์„ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค๋“ค์„ ์ƒ์„ฑํ•˜์—ฌ ๋ธŒ๋žœ์น˜ ๋‹จ์œ„๋กœ ๋ฌถ์Œ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • DeploymentGroup


  • Service, TaskDefinition


  • LoadBalancer(HostingRule), TargetGroup

< story/ ํ•˜์œ„ ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Host, TargetGroup์ด ์ƒ์„ฑ๋œ๋‹ค. >


๋…๋ฆฝ๋œ ์„œ๋น„์Šค ๊ฐ„์˜ ์—ฐ๊ฒฐ

FE/BE๊ฐ€ ๋ถ„๋ฆฌ๋œ ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ์„œ๋กœ ๋„คํŠธ์›Œํฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์œ„ํ•œ ์—ฐ๊ฒฐ์„ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ธŒ๋žœ์น˜ ๋‹จ์œ„๋กœ ์„œ๋ฒ„๊ฐ€ ์ƒ์„ฑ๋˜๊ณ , AWS์˜ ๋ฆฌ์†Œ์Šค๋“ค์ด ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ์„œ๋ฒ„๋“ค์˜ ๋„๋ฉ”์ธ ๋˜ํ•œ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ™์ž‡ ๋ฉ”์ธํŽ˜์ด์ง€ ๊ฐœํŽธ ์Šคํ† ๋ฆฌ ์ง„ํ–‰ ์ž‘์—…์„ ์œ„ํ•œ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„์„ feature/improve-main-page๋กœ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๋ฉด, FE/BE ์„œ๋ฒ„์˜ ๋„๋ฉ”์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ธํŒ…์ด ๋ฉ๋‹ˆ๋‹ค.

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


๋งˆ์น˜๋ฉฐ

์ด๋ฒˆ ๋ธŒ๋žœ์น˜ ์ „๋žต ๋ณ€๊ฒฝ๊ณผ ๋ธŒ๋žœ์น˜ ๋‹จ์œ„ ๋ฐฐํฌ๋ฅผ ๋„์ž…ํ•˜๋ฉด์„œ ๊ฐœ๋ฐœํŒ€์˜ ์—…๋ฌด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ๋งค๋„๋Ÿฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์„œ๋กœ qa ๋ธŒ๋žœ์น˜ ํ˜น์€ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ณต์œ ํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ ธ์„œ, ๋ถˆํ•„์š”ํ•œ ์ž‘์—…์„ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 ๋˜ํ•œ QA ๋‹ด๋‹น์ž๋ถ„๋“ค๊ป˜์„œ๋„ ๋” ํŽธํ•ด์ง€์…จ์Šต๋‹ˆ๋‹ค. ์ž์‹ ์ด ๋‹ด๋‹นํ•œ QA๊ฐ€ ๊ณ„์† ์˜ฌ๋ผ๊ฐ”๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ์ผ๋“ค์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ์—, ๊ธฐ๊ฐ„์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ณ  QA๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์ฃ .

์ด๋ฒˆ ๋ธŒ๋žœ์น˜ ๋‹จ์œ„ ๋ฐฐํฌ ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ AWS ๋ฆฌ์†Œ์Šค๋“ค์˜ ์—ญํ•  ๋ฐ ๊ตฌ์„ฑ ์š”์†Œ, ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•ด ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , Jenkins ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ตฌ์„ฑ ๋ฐ ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์—…๋ฌด์— ๋งŽ์€ ๋„์›€์ด ๋˜๋Š” ํ•™์Šต์˜ ๊ธฐํšŒ๋ฅผ ์–ป์œผ๋ฉฐ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๋”์šฑ ์œ ์ตํ•œ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ €์™€ ์œ ์‚ฌํ•œ ๊ณ ๋ฏผ์„ ํ•˜์‹œ๋Š” ๋ถ„๋“ค๊ป˜ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ผ๋ฉฐ, ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค :)