๐Ÿ“ฑ ์•„์ด๋””์–ด์—์„œ ์•ฑ์Šคํ† ์–ด๊นŒ์ง€, iOS ๊ฐœ๋ฐœ์ž์˜ ํ•„์ˆ˜ ๊ด€๋ฌธ

๋ฉ‹์ง„ ์•ฑ ์•„์ด๋””์–ด๋ฅผ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ๋””๋ฒ„๊น…๊นŒ์ง€ ๋งˆ์ณค๋‹ค๋ฉด, ์ด์ œ ์ „ ์„ธ๊ณ„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณต๊ฐœํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Xcode ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜๋ฐฑ๋งŒ ๋Œ€์˜ iPhone๊ณผ iPad์— ๋„๋‹ฌ์‹œํ‚ค๋Š” ๊ณผ์ •์€ '์ธ์ฆ์„œ', 'ํ”„๋กœ๋น„์ €๋‹ ํ”„๋กœํŒŒ์ผ', 'App Store Connect' ๊ฐ™์€ ์šฉ์–ด๋“ค๋กœ ์ธํ•ด ๋ง‰๋ง‰ํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜…

์ด ๊ฐ€์ด๋“œ๋Š” iOS ์•ฑ ์Šคํ† ์–ด ์ œ์ถœ์˜ ๋ชจ๋“  ๊ณผ์ •์„ ์ฒด๊ณ„์ ์œผ๋กœ ํ•ด๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์ˆ˜๋™ ์ œ์ถœ ๋ฐฉ๋ฒ•์„ ๋„˜์–ด, Xcode Cloud๋ฅผ ํ™œ์šฉํ•œ ๋นŒ๋“œ-ํ…Œ์ŠคํŠธ-๋ฐฐํฌ ์ž๋™ํ™” ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ๋ฐฉ๋ฒ•๊นŒ์ง€ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ๋” ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.

iOS app development and App Store Connect interface on a MacBook Tech Reference Visual

๐Ÿ”‘ ์ถœ๋ฐœ์ : 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, ํ”„๋ฆฌ๋ฏธ์–ด ํ”„๋กœ ์ตœ์ ์˜ ์กฐ๋ฆฝ ๊ฒฌ์  ๊ณต๊ฐœ!์—์„œ ๋‹ค๋ฅธ ์ „๋ฌธ๊ฐ€๊ธ‰ ์›Œํฌํ”Œ๋กœ์šฐ ๊ตฌ์ถ• ์‚ฌ๋ก€๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Xcode Cloud CI/CD workflow automation diagram Technology Concept Image

โš™๏ธ ๋‹จ๊ณ„๋ณ„ ์‹ค์ „: ์ˆ˜๋™ ์ œ์ถœ์—์„œ ์ž๋™ํ™” ๋ฐฐํฌ๊นŒ์ง€

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 ์—…๋ฐ์ดํŠธ ์ „์— ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ์„ ์ œ์ ์œผ๋กœ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝ์ œ์  ์ •์ฑ…๊ณผ ๊ธฐ์ˆ ์  ์•ˆ์ •์„ฑ์˜ ์กฐํ™”์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด, ์›ํ™” ํ™˜์œจ ์•ˆ์ •ํ™”๋ฅผ ์œ„ํ•œ ์ •๋ถ€์˜ ๊ฐ•๋ ฅํ•œ ๋Œ€์‘ ์กฐ์น˜ ์ด์ •๋ฆฌ ๐Ÿ“Š์—์„œ ์ฒด๊ณ„์ ์ธ ์ ‘๊ทผ๋ฒ•์— ๋Œ€ํ•œ ํ†ต์ฐฐ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Apple Developer Portal showing certificates and provisioning profiles Digital Device Concept

๐ŸŽฏ ์„ฑ๊ณต์ ์ธ ์•ฑ ์ถœ์‹œ๋ฅผ ์œ„ํ•œ ํ•ต์‹ฌ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

์ œ์ถœ ์ „ ์ตœ์ข… ์ ๊ฒ€ ์‚ฌํ•ญ

  1. Bundle ID ์ผ์น˜์„ฑ: Xcode, Developer Portal, App Store Connect์˜ Bundle ID๊ฐ€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
  2. ์ธ์ฆ์„œ ์œ ํšจ์„ฑ: Keychain Access์—์„œ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ์ธ์ฆ์„œ๊ฐ€ ์œ ํšจํ•˜๊ณ  ์‹ ๋ขฐ๋จ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜์„ธ์š”.
  3. ํ”„๋กœ๋น„์ €๋‹ ํ”„๋กœํŒŒ์ผ: ๋นŒ๋“œ ์„ค์ •์— ์˜ฌ๋ฐ”๋ฅธ ํ”„๋กœํŒŒ์ผ์ด ์„ ํƒ๋˜์–ด ์žˆ๊ณ , ํ•ด๋‹น ํ”„๋กœํŒŒ์ผ์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ธ์ฆ์„œ์™€ ๊ธฐ๊ธฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
  4. ์•ฑ ์•„์ด์ฝ˜ & ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ: ๋ชจ๋“  ์š”๊ตฌ ์‚ฌ์ด์ฆˆ์˜ ์•ฑ ์•„์ด์ฝ˜์„ ์ถ”๊ฐ€ํ•˜๊ณ , App Store Connect์— ์•ฑ ์„ค๋ช…, ํ‚ค์›Œ๋“œ, ์Šคํฌ๋ฆฐ์ƒท, ์—ฐ๋ฝ์ฒ˜ ์ •๋ณด๋ฅผ ๋น ์ง์—†์ด ์ž…๋ ฅํ•˜์„ธ์š”.
  5. ๋นŒ๋“œ ๋ฒ„์ „: ์•ฑ ์Šคํ† ์–ด ์ฒซ ์ถœ์‹œ ๋ฒ„์ „์€ ๋ฐ˜๋“œ์‹œ 1.0์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ํ™”์˜ ์ด์ ๊ณผ ๊ณ ๋ ค์‚ฌํ•ญ

Xcode Cloud ๋„์ž…์€ ์ดˆ๊ธฐ ์„ค์ •์— ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • ์‹œ๊ฐ„ ์ ˆ์•ฝ: ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ๊ณผ์ •์˜ ์ž๋™ํ™”.
  • ์ผ๊ด€์„ฑ ํ–ฅ์ƒ: Human error ์ œ๊ฑฐ ๋ฐ ํ‘œ์ค€ํ™”๋œ ํ”„๋กœ์„ธ์Šค.
  • ํ˜‘์—… ํšจ์œจ์„ฑ: ํŠน์ • ๊ฐœ๋ฐœ์ž์— ๋Œ€ํ•œ ์˜์กด์„ฑ ํ•ด์†Œ.

Apple Developer Program ํšŒ์›์€ ์›” 25์‹œ๊ฐ„์˜ ๋ฌด๋ฃŒ Xcode Cloud ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ ๋ชจ๋“ˆํ™”(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ถ„๋ฆฌ)๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ€์ด๋“œ๊ฐ€ iOS ์•ฑ ์Šคํ† ์–ด ์ œ์ถœ์ด๋ผ๋Š” ๋ณต์žกํ•œ ๊ณผ์ •์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ , ์ˆ˜๋™ ์ž‘์—…์—์„œ ํ˜„๋Œ€์ ์ธ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ๋‚˜์•„๊ฐ€๋Š” ์‹ค์šฉ์ ์ธ ๋กœ๋“œ๋งต์„ ์ œ๊ณตํ–ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋Š์ž„์—†์ด ๋ณ€ํ™”ํ•˜๋Š” Apple ์ƒํƒœ๊ณ„์—์„œ ์ง€์†์ ์ธ ํ•™์Šต๊ณผ ๋„๊ตฌ ํ™œ์šฉ์ด ์„ฑ๊ณต์ ์ธ ์•ฑ ์ถœ์‹œ์˜ ์—ด์‡ ์ž…๋‹ˆ๋‹ค. ๐Ÿš€

Developer workspace with iPhone, iPad, and Mac for iOS testing Hardware Related Image