[Android] ์ฑ ๋น๋ ๊ณผ์ ์ ๋ฐฐํฌ๋ ๋ค์ด๊ฐ ์๋ค๊ณ + ๋น๋ ๊ณผ์ ์์์ ๋ฐฐํฌ ๋จ๊ณ
์ถ์ฒ
ChatGPT
์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ ๊ณผ์ ์์ ๋น๋(Build)๋ผ๋ ์ฉ์ด๋ ๋จ์ํ ์์ค ์ฝ๋์ ์ปดํ์ผ๊ณผ ํจํค์ง์ ๋์ด์ ๋ฐฐํฌ(Deplyment)๊น์ง ํฌํจํ๋ ๋ณด๋ค ๋์ ๊ฐ๋ ์ผ๋ก ์ฌ์ฉ๋๋ค. ๋น๋ ๊ณผ์ ์์ ๋ฐฐํฌ๊น์ง ํฌํจ๋๋ ์ด์ ๋ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ต์ข ์ฌ์ฉ์์๊ฒ ์ฑ์ ์ ๋ฌํ๋ ๋ชจ๋ ๊ณผ์ ์ ํฌ๊ดํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ํนํ CI/CD(Continuous Integration/Continuous Deployment) ํ์ดํ๋ผ์ธ์ ํตํด ์๋ํ๋ ๋น๋ ๋ฐ ๋ฐฐํฌ ์์ ์ด ์ค์ํด์ง ํ๋์ ๊ฐ๋ฐ ํ๋ฆ์ ๋ฐ์ํ๋ค.
๋น๋ ๊ณผ์ ์์์ ๋ฐฐํฌ ๋จ๊ณ
๋ฐฐํฌ(Deplayment) ๊ฐ์
๋ฐฐํฌ๋ ๋น๋๋ APK ํ์ผ์ ์ค์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ์ ์๋ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ๋จ๊ณ๋ก, ๋ค์๊ณผ ๊ฐ์ ํ๊ฒฝ์ ์ฑ์ ๋ฐฐํฌํ ์ ์๋ค.
- ๋ก์ปฌ ํ ์คํธ: ๊ฐ๋ฐ ์ค์ธ ๊ธฐ๊ธฐ๋ ์๋ฎฌ๋ ์ดํฐ์์ ์ง์ ํ ์คํธ.
- ํ ์คํธ ํ๊ฒฝ: QA ํ์ด ์ฑ์ ํ ์คํธํ ์ ์๋๋ก ๋ณ๋์ ํ ์คํธ ์๋ฒ๋ ๋๋ฐ์ด์ค์ ๋ฐฐํฌ.
- ์ฌ์ฉ์ ํ๊ฒฝ: 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 ํ์ดํ๋ผ์ธ์ ๋์ ์ ์ด๋ฌํ ๊ณผ์ ์ ์๋ํํ๊ณ ์ต์ ํํ์ฌ, ๊ฐ๋ฐ์์ ์ฌ์ฉ์๊ฐ ๋ชจ๋ ๋ง์กฑํ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ค.
์ด์ ๊ฐ์ด, ๋ฐฐํฌ๋ ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ์์ ๋งค์ฐ ์ค์ํ ๊ณผ์ ์ด๋ฉฐ, ์ง์์ ์ธ ๊ฐ์ ๊ณผ ์๋ํ๋ฅผ ํตํด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋์ฑ ํจ์จ์ ์ผ๋ก ๋ง๋ค ์ ์๋ค.