๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[Android] ์•ฑ ๋นŒ๋“œ ๊ณผ์ •์— ๋ฐฐํฌ๋„ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค๊ณ  + ๋นŒ๋“œ ๊ณผ์ •์—์„œ์˜ ๋ฐฐํฌ ๋‹จ๊ณ„

์ถœ์ฒ˜

ChatGPT


์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋นŒ๋“œ(Build)๋ผ๋Š” ์šฉ์–ด๋Š” ๋‹จ์ˆœํžˆ ์†Œ์Šค ์ฝ”๋“œ์˜ ์ปดํŒŒ์ผ๊ณผ ํŒจํ‚ค์ง•์„ ๋„˜์–ด์„œ ๋ฐฐํฌ(Deplyment)๊นŒ์ง€ ํฌํ•จํ•˜๋Š” ๋ณด๋‹ค ๋„“์€ ๊ฐœ๋…์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๋นŒ๋“œ ๊ณผ์ •์—์„œ ๋ฐฐํฌ๊นŒ์ง€ ํฌํ•จ๋˜๋Š” ์ด์œ ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ฑ์„ ์ „๋‹ฌํ•˜๋Š” ๋ชจ๋“  ๊ณผ์ •์„ ํฌ๊ด„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Š” ํŠนํžˆ CI/CD(Continuous Integration/Continuous Deployment) ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ์ž๋™ํ™”๋œ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ์ž‘์—…์ด ์ค‘์š”ํ•ด์ง„ ํ˜„๋Œ€์˜ ๊ฐœ๋ฐœ ํ๋ฆ„์„ ๋ฐ˜์˜ํ•œ๋‹ค. 

 

๋นŒ๋“œ ๊ณผ์ •์—์„œ์˜ ๋ฐฐํฌ ๋‹จ๊ณ„

๋ฐฐํฌ(Deplayment) ๊ฐœ์š”

๋ฐฐํฌ๋Š” ๋นŒ๋“œ๋œ APK ํŒŒ์ผ์„ ์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•˜๋Š” ๋‹จ๊ณ„๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™˜๊ฒฝ์— ์•ฑ์„ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  1. ๋กœ์ปฌ ํ…Œ์ŠคํŠธ: ๊ฐœ๋ฐœ ์ค‘์ธ ๊ธฐ๊ธฐ๋‚˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์ง์ ‘ ํ…Œ์ŠคํŠธ.
  2. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ: QA ํŒ€์ด ์•ฑ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ„๋„์˜ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋‚˜ ๋””๋ฐ”์ด์Šค์— ๋ฐฐํฌ.
  3. ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ: Google Play Store ๋“ฑ์„ ํ†ตํ•ด ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌ.

 

 

๋ฐฐํฌ ๋‹จ๊ณ„์˜ ์ฃผ์š” ์ž‘์—…

1. ๋กœ์ปฌ ํ…Œ์ŠคํŠธ(Local Testing)

 

  • ๊ฐœ๋ฐœ์ž ๊ธฐ๊ธฐ ์„ค์น˜: APK๋ฅผ ๋กœ์ปฌ ๋””๋ฐ”์ด์Šค๋‚˜ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์„ค์น˜ํ•˜์—ฌ ์ง์ ‘ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
  • Android Studio: 'Run' ๋˜๋Š” 'Debug' ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์•ฑ์„ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
  • ADB(Android Debug Bridge): CLI(Command Line Interface)๋ฅผ ํ†ตํ•ด APK๋ฅผ ์„ค์น˜ ๋ฐ ๊ด€๋ฆฌํ•œ๋‹ค.
adb install path/to/app.apk

 

 

2. ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๋ฐฐํฌ(Test Environment Deplyment)

 

  • QA Testing: ํ’ˆ์งˆ ๋ณด์ฆ(QA) ํŒ€์ด ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ ๋ฐ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์•ฑ์„ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
  • Staging Server: ์‹ค์ œ ์šด์˜ ํ™˜๊ฒฝ๊ณผ ์œ ์‚ฌํ•œ ์„œ๋ฒ„์— ์•ฑ์„ ๋ฐฐํฌํ•˜์—ฌ ์˜ˆ๋น„ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.
  • Firebase Test Lab: ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ ๋ฐ Android ๋ฒ„์ „์—์„œ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์„œ๋น„์Šค.
  • Crashlytics: ํ…Œ์ŠคํŠธ ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๋ž˜์‹œ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ๋ถ„์„ ๋ฐ ํ•ด๊ฒฐ.

 

 

3. ๋ฆด๋ฆฌ์ฆˆ ๋ฐ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ (Release and User Environment Deplyment)

 

  • Google Play Store ๋ฐฐํฌ: Google Play Console์„ ํ†ตํ•ด APK๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ , ์•ฑ์„ ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌํ•œ๋‹ค.
  • Beta Testing: ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด์˜ ๋‚ด๋ถ€ ํ…Œ์ŠคํŠธ, ํด๋กœ์ฆˆ๋“œ ๋ฒ ํƒ€, ์˜คํ”ˆ ๋ฒ ํƒ€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ•œ๋œ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์—๊ฒŒ ์•ฑ์„ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
  • App Bundles: APK ๋Œ€์‹  AAB(Android App Bundle) ํฌ๋งท์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ์„ ๋”์šฑ ์ตœ์ ํ™”๋œ ํ˜•ํƒœ๋กœ ๋ฐฐํฌ๋‹ค.

 

Release Steps:
1. Build APK/AAB
2. Upload to Google Play Console
3. Complete app metadata and configurations
4. Publish for public download
  • Deployment Targets:
    • Internal Test Track: ๋‚ด๋ถ€ ํŒ€์ด๋‚˜ ์†Œ์ˆ˜์˜ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ฑ์„ ๋ฐฐํฌ.
    • Closed Testing Track: ์ดˆ๋Œ€๋œ ํ…Œ์Šคํ„ฐ์—๊ฒŒ ์•ฑ์„ ๋ฐฐํฌํ•˜์—ฌ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์Œ.
    • Open Testing Track: ๊ด‘๋ฒ”์œ„ํ•œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ฑ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ง‘.
    • Production Track: ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ฑ์„ ์ •์‹์œผ๋กœ ๋ฐฐํฌ.

 

CI/CD ํŒŒ์ดํ”„๋ผ์ธ๊ณผ ์ž๋™ํ™”๋œ ๋ฐฐํฌ

CI/CD๋Š” ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ํ•„์ˆ˜์ ์ธ ์š”์†Œ๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋„๋ก ์„ค์ •ํ•œ๋‹ค. ์ด๋Š” ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„์™€ ์ง€์†์ ์ธ ํ†ตํ•ฉ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ†ตํ•ด ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๊ธฐ์—ฌํ•œ๋‹ค.

1. Continuose Integration (CI)

 

  • ์ž๋™ํ™”๋œ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ: ์ฝ”๋“œ๊ฐ€ ์ปค๋ฐ‹๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋นŒ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
  • ๋นŒ๋“œ ์„œ๋ฒ„: Jenkins, Travis CI, CircleCI ๋“ฑ๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์†์ ์ธ ํ†ตํ•ฉ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

 

2. Continuous Deployment (CD)

 

  • ์ž๋™ํ™”๋œ ๋ฐฐํฌ: ๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ(ํ…Œ์ŠคํŠธ, ์Šคํ…Œ์ด์ง•, ํ”„๋กœ๋•์…˜)์— ๋ฐฐํฌํ•œ๋‹ค.
  • ๋ฐฐํฌ ์ „๋žต: Canary Release, Blue-Green Deployment ๋“ฑ์˜ ์ „๋žต์„ ํ†ตํ•ด ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•œ๋‹ค.

 

์ž๋™ํ™” ๋„๊ตฌ ๋ฐ ์„œ๋น„์Šค

 

1. Jenkins

  • ์˜คํ”ˆ ์†Œ์Šค ์ž๋™ํ™” ์„œ๋ฒ„๋กœ, ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๊ณผ์ •์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Pipeline as Code: Jenkinsfile์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ์ฝ”๋“œ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

2. GitHub Actions

  • GitHub์˜ ๋‚ด์žฅ๋œ CI/CD ๋„๊ตฌ๋กœ, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ง์ ‘ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ •์˜ํ•˜์—ฌ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • YAML ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํ†ตํ•ด ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ์ž‘์—…์„ ์„ค์ •ํ•œ๋‹ค.

3. Bitrise

  • ๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ์— ํŠนํ™”๋œ CI/CD ์„œ๋น„์Šค๋กœ, ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋„๊ตฌ๋ฅผ ์ง€์›ํ•˜์—ฌ ์•ฑ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ž๋™ํ™”ํ•œ๋‹ค.
  • ์‰ฝ๊ฒŒ ์„ค์ • ๊ฐ€๋Šฅํ•œ ์›Œํฌํ”Œ๋กœ์šฐ์™€ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค ํ†ตํ•ฉ์„ ์ง€์›ํ•œ๋‹ค.

4. Firebase App Distribution

  • ํ…Œ์ŠคํŠธ ์•ฑ ๋ฐฐํฌ ์„œ๋น„์Šค๋กœ, Firebase ํ”Œ๋žซํผ ๋‚ด์—์„œ ์•ฑ์„ ์†์‰ฝ๊ฒŒ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • A/B ํ…Œ์ŠคํŠธ์™€ ๊ฐ™์€ ์‹คํ—˜ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์•ฑ์˜ ๊ธฐ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐฐํฌ ์ž๋™ํ™”์˜ ์žฅ์ 

 

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

 

๊ฒฐ๋ก 

 

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ์˜ ๋นŒ๋“œ ๊ณผ์ •์€ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ํŒจํ‚ค์ง•ํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐฐํฌํ•˜๋Š” ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ํฌํ•จํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ํฌ๊ด„์ ์ธ ์ ‘๊ทผ์€ ์•ฑ์˜ ํ’ˆ์งˆ์„ ๋†’์ด๊ณ , ๋ฐฐํฌ ํ›„์˜ ์šด์˜ ํšจ์œจ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ๊ธฐ์—ฌํ•œ๋‹ค. CI/CD ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋„์ž…์€ ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ์ž๋™ํ™”ํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜์—ฌ, ๊ฐœ๋ฐœ์ž์™€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋‘ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์ด์™€ ๊ฐ™์ด, ๋ฐฐํฌ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ณผ์ •์ด๋ฉฐ, ์ง€์†์ ์ธ ๊ฐœ์„ ๊ณผ ์ž๋™ํ™”๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.