๐ฑ ์์ด๋์ด์์ ์ฑ์คํ ์ด๊น์ง, iOS ๊ฐ๋ฐ์์ ํ์ ๊ด๋ฌธ
๋ฉ์ง ์ฑ ์์ด๋์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๊ณ ๋๋ฒ๊น ๊น์ง ๋ง์ณค๋ค๋ฉด, ์ด์ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๊ณต๊ฐํ ์ฐจ๋ก์ ๋๋ค. ํ์ง๋ง Xcode ํ๋ก์ ํธ๋ฅผ ์๋ฐฑ๋ง ๋์ iPhone๊ณผ iPad์ ๋๋ฌ์ํค๋ ๊ณผ์ ์ '์ธ์ฆ์', 'ํ๋ก๋น์ ๋ ํ๋กํ์ผ', 'App Store Connect' ๊ฐ์ ์ฉ์ด๋ค๋ก ์ธํด ๋ง๋งํ๊ฒ ๋๊ปด์ง ์ ์์ต๋๋ค. ๐
์ด ๊ฐ์ด๋๋ iOS ์ฑ ์คํ ์ด ์ ์ถ์ ๋ชจ๋ ๊ณผ์ ์ ์ฒด๊ณ์ ์ผ๋ก ํด๋ถํฉ๋๋ค. ๋จ์ํ ์๋ ์ ์ถ ๋ฐฉ๋ฒ์ ๋์ด, Xcode Cloud๋ฅผ ํ์ฉํ ๋น๋-ํ ์คํธ-๋ฐฐํฌ ์๋ํ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ๋ฐฉ๋ฒ๊น์ง ๋ค๋ฃน๋๋ค. ๊ฐ๋ฐ ์๊ฐ์ ์ ์ฝํ๊ณ ๋ ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.

๐ ์ถ๋ฐ์ : Apple ๊ฐ๋ฐ์ ์ํ๊ณ์ ๊ธฐ์ด ์ดํด
์ฑ ์คํ ์ด ์ฌ์ ์ ์ฒซ ๊ฑธ์์ Apple ๊ฐ๋ฐ์ ์ํ๊ณ์ ํต์ฌ ๊ตฌ์ฑ ์์๋ฅผ ์ดํดํ๋ ๊ฒ์ ๋๋ค.
ํ์ ๊ตฌ์ฑ ์์ ์ ๋ฆฌ
- Apple Developer ๊ณ์ : ์ฑ์ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ๊ธฐ ์ํ ๊ธฐ๋ณธ ์๊ฒฉ์ ๋๋ค.
- Bundle ID (App ID):
com.companyname.appnameํ์์ ๊ณ ์ ๋ฌธ์์ด๋ก, Apple ์ํ๊ณ ์ ๋ฐ์์ ์ฑ์ ์๋ณํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. Xcode ํ๋ก์ ํธ ์์ฑ ์ ์ค์ ํ๋ฉฐ, Developer Portal๊ณผ App Store Connect์ ๋์ผํ๊ฒ ๋ฑ๋กํด์ผ ํฉ๋๋ค. - ์ธ์ฆ์(Certificate): ๊ฐ๋ฐ์ ์ ์์ ๋์งํธ๋ก ์ฆ๋ช ํฉ๋๋ค. ๊ฐ๋ฐ์ฉ(Development)๊ณผ ๋ฐฐํฌ์ฉ(Distribution)์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.
- ํ๋ก๋น์ ๋ ํ๋กํ์ผ(Provisioning Profile): ์ฑ ID, ์ธ์ฆ์, ํ ์คํธ ๊ฐ๋ฅ ๊ธฐ๊ธฐ ๋ชฉ๋ก์ ํ๋๋ก ๋ฌถ๋ ์ปจํ ์ด๋์ ๋๋ค. ์ฑ์ด ํน์ ๊ธฐ๊ธฐ์์ ์คํ๋ ์ ์๋๋ก ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
- ๋ฑ๋ก๋ ๊ธฐ๊ธฐ(Registered Devices): ๊ฐ๋ฐ ์ค ์ฑ์ ํ ์คํธํ ๋ฌผ๋ฆฌ์ iPhone, iPad, Mac์ ๋๋ค. Developer Portal์ UDID๋ฅผ ๋ฑ๋กํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ์์๋ค์ด ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง ์ดํดํ๋ ๊ฒ์ด ์ํํ ์ ์ถ ๊ณผ์ ์ ํต์ฌ์ ๋๋ค. ๋ ์์ธํ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ ์์ ํธ์ง์ฉ PC ์๋ฒฝ ๊ฐ์ด๋: ์ธํ vs AMD, ํ๋ฆฌ๋ฏธ์ด ํ๋ก ์ต์ ์ ์กฐ๋ฆฝ ๊ฒฌ์ ๊ณต๊ฐ!์์ ๋ค๋ฅธ ์ ๋ฌธ๊ฐ๊ธ ์ํฌํ๋ก์ฐ ๊ตฌ์ถ ์ฌ๋ก๋ฅผ ์ฐธ๊ณ ํ ์ ์์ต๋๋ค.

โ๏ธ ๋จ๊ณ๋ณ ์ค์ : ์๋ ์ ์ถ์์ ์๋ํ ๋ฐฐํฌ๊น์ง
1. ์ธ์ฆ์ & ํ๋ก๋น์ ๋ ํ๋กํ์ผ ์์ฑ
Keychain Access๋ฅผ ํตํด CSR(Certificate Signing Request) ํ์ผ์ ์์ฑํ ํ, Apple Developer Portal์์ ๊ฐ๋ฐ/๋ฐฐํฌ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ์ต๋๋ค. ์ฃผ์ํ ์ ์ Apple์ ์ค๊ฐ ์ธ์ฆ์(WWDRCA) ๋ฅผ ํจ๊ป ์ค์นํด์ผ ๋ฐ๊ธ๋ฐ์ ์ธ์ฆ์๊ฐ '์ ๋ขฐ๋จ' ์ํ๊ฐ ๋๋ค๋ ๊ฒ์ ๋๋ค.
ํ๋ก๋น์ ๋ ํ๋กํ์ผ์ ์์ฑํ ๋๋ ์ฉ๋์ ๋ง๋ ํ์ ์ ์ ํํฉ๋๋ค:
- ๊ฐ๋ฐ(Development): ๊ฐ๋ฐ ๋จธ์ ์ ์ง์ ์ฐ๊ฒฐ๋ ๊ธฐ๊ธฐ์์ ์คํ์ฉ.
- Ad Hoc: ๊ฐ๋ฐ ๋จธ์ ์ ์ฐ๊ฒฐ๋์ง ์์ ์ธ๋ถ ํ ์คํฐ ๋ฐฐํฌ์ฉ (๊ธฐ๊ธฐ ๋ฑ๋ก ํ์).
- App Store: ์ฑ ์คํ ์ด ๊ณต๊ฐ ๋ฐฐํฌ์ฉ (๊ธฐ๊ธฐ ์ ํ ์์).
2. ์์นด์ด๋ธ ์์ฑ ๋ฐ TestFlight ๋ฐฐํฌ
Xcode์์ Product > Archive๋ฅผ ์ ํํด IPA ํ์ผ์ ์์ฑํฉ๋๋ค. 'Distribute App'์ ์ ํํ๊ณ 'App Store Connect'๋ฅผ ํตํด ์ ๋ก๋ํ๋ฉด, App Store Connect์ TestFlight ์น์ ์์ ๋น๋ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค. ํ ์คํฐ ๊ทธ๋ฃน(๋ด๋ถ/์ธ๋ถ)์ ์ค์ ํ๊ณ ๋น๋๋ฅผ ํ ๋นํ๋ฉด ๊ณต๊ฐ ๋งํฌ๋ ์ด๋ฉ์ผ ์ด๋๋ฅผ ํตํด ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
3. Xcode Cloud๋ฅผ ํ์ฉํ CI/CD ์๋ํ
์๋ ํ๋ก์ธ์ค์ human error์ ์์กด์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Apple์ ๊ณต์ CI/CD ์๋น์ค์ธ Xcode Cloud๋ฅผ ๋์ ํ ์ ์์ต๋๋ค. GitHub ์ ์ฅ์์ ์ฐ๋ํ์ฌ ํน์ ๋ธ๋์น ํธ์ ๋๋ Pull Request ์ ์๋์ผ๋ก ๋น๋, ํ ์คํธ, ๋ฐฐํฌ๋ฅผ ์คํํ๋ ์ํฌํ๋ก์ฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
| ์ํฌํ๋ก์ฐ ์ ํ | ํธ๋ฆฌ๊ฑฐ ์กฐ๊ฑด | ์ฃผ์ ์ก์ | ๋ชฉ์ |
|---|---|---|---|
| ๋น๋ & ํ ์คํธ | main ๋ธ๋์น๋ก์ Pull Request | ์์ค ๋น๋, ์ ๋ ํ ์คํธ ์คํ | ์ฝ๋ ๋ณํฉ ์ ํ์ง ๊ฒ์ฆ |
| ๋ฐฐํฌ(Distribution) | release ๋ธ๋์น ์
๋ฐ์ดํธ | ์์นด์ด๋ธ ์์ฑ, App Store Connect ๋ฐฐํฌ | ํ ์คํฐ์๊ฒ ์๋ IPA ๋ฐฐํฌ |
์ํฌํ๋ก์ฐ ๊ตฌ์ฑ ์ ๋ฒ ํ ๋ฒ์ ์ Xcode ๋ฐ macOS๋ฅผ ํ๊ฒ์ผ๋ก ์ค์ ํ๋ฉด, ์ฃผ์ OS ์ ๋ฐ์ดํธ ์ ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ ์ ์ ์ผ๋ก ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค. ๊ฒฝ์ ์ ์ ์ฑ ๊ณผ ๊ธฐ์ ์ ์์ ์ฑ์ ์กฐํ์ ๊ด์ฌ์ด ์๋ค๋ฉด, ์ํ ํ์จ ์์ ํ๋ฅผ ์ํ ์ ๋ถ์ ๊ฐ๋ ฅํ ๋์ ์กฐ์น ์ด์ ๋ฆฌ ๐์์ ์ฒด๊ณ์ ์ธ ์ ๊ทผ๋ฒ์ ๋ํ ํต์ฐฐ์ ์ป์ ์ ์์ต๋๋ค.

๐ฏ ์ฑ๊ณต์ ์ธ ์ฑ ์ถ์๋ฅผ ์ํ ํต์ฌ ์ฒดํฌ๋ฆฌ์คํธ
์ ์ถ ์ ์ต์ข ์ ๊ฒ ์ฌํญ
- Bundle ID ์ผ์น์ฑ: Xcode, Developer Portal, App Store Connect์ Bundle ID๊ฐ ์ ํํ ์ผ์นํ๋์ง ํ์ธํ์ธ์.
- ์ธ์ฆ์ ์ ํจ์ฑ: Keychain Access์์ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ์ธ์ฆ์๊ฐ ์ ํจํ๊ณ ์ ๋ขฐ๋จ ์ํ์ธ์ง ํ์ธํ์ธ์.
- ํ๋ก๋น์ ๋ ํ๋กํ์ผ: ๋น๋ ์ค์ ์ ์ฌ๋ฐ๋ฅธ ํ๋กํ์ผ์ด ์ ํ๋์ด ์๊ณ , ํด๋น ํ๋กํ์ผ์ ํ์ํ ๋ชจ๋ ์ธ์ฆ์์ ๊ธฐ๊ธฐ๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ์ธ์.
- ์ฑ ์์ด์ฝ & ๋ฉํ๋ฐ์ดํฐ: ๋ชจ๋ ์๊ตฌ ์ฌ์ด์ฆ์ ์ฑ ์์ด์ฝ์ ์ถ๊ฐํ๊ณ , App Store Connect์ ์ฑ ์ค๋ช , ํค์๋, ์คํฌ๋ฆฐ์ท, ์ฐ๋ฝ์ฒ ์ ๋ณด๋ฅผ ๋น ์ง์์ด ์ ๋ ฅํ์ธ์.
- ๋น๋ ๋ฒ์ : ์ฑ ์คํ ์ด ์ฒซ ์ถ์ ๋ฒ์ ์ ๋ฐ๋์ 1.0์ด์ด์ผ ํฉ๋๋ค.
์๋ํ์ ์ด์ ๊ณผ ๊ณ ๋ ค์ฌํญ
Xcode Cloud ๋์ ์ ์ด๊ธฐ ์ค์ ์ ์๊ฐ์ด ์์๋ ์ ์์ง๋ง, ์ฅ๊ธฐ์ ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์๊ฐ ์ ์ฝ: ๋น๋ ๋ฐ ๋ฐฐํฌ ๊ณผ์ ์ ์๋ํ.
- ์ผ๊ด์ฑ ํฅ์: Human error ์ ๊ฑฐ ๋ฐ ํ์คํ๋ ํ๋ก์ธ์ค.
- ํ์ ํจ์จ์ฑ: ํน์ ๊ฐ๋ฐ์์ ๋ํ ์์กด์ฑ ํด์.
Apple Developer Program ํ์์ ์ 25์๊ฐ์ ๋ฌด๋ฃ Xcode Cloud ๋น๋ ์๊ฐ์ ์ ๊ณต๋ฐ์ต๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๋ชจ๋ํ(๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ๋ฆฌ)๋ฅผ ํตํด ๋น๋ ์๊ฐ๊ณผ ๋น์ฉ์ ์ต์ ํํ ์ ์์ต๋๋ค.
์ด ๊ฐ์ด๋๊ฐ iOS ์ฑ ์คํ ์ด ์ ์ถ์ด๋ผ๋ ๋ณต์กํ ๊ณผ์ ์ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ๊ณ , ์๋ ์์ ์์ ํ๋์ ์ธ ์๋ํ ์ํฌํ๋ก์ฐ๋ก ๋์๊ฐ๋ ์ค์ฉ์ ์ธ ๋ก๋๋งต์ ์ ๊ณตํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋์์์ด ๋ณํํ๋ Apple ์ํ๊ณ์์ ์ง์์ ์ธ ํ์ต๊ณผ ๋๊ตฌ ํ์ฉ์ด ์ฑ๊ณต์ ์ธ ์ฑ ์ถ์์ ์ด์ ์ ๋๋ค. ๐
