안녕하세요 iOS개발을 2015년부터 하고 있는 TalQ 입니다.
이렇게 첫글로 만나뵙게 되어 반갑습니다.
목차
0. 소개글
- Xcode Cloud의 설명과 장/단 점
- Firebase와의 연동 경험담
- 업무에서의 실제 도입기
- WorkFlow를 통한 CI/CD에 다가가기
Xcode cloud를 선택하게 되기 까지
많은 업체들이 CI/CD를 도입하기 위해 여러 방식들을 도입하고 있으며,
현재 소속된 팀에서도 도입하고자 구성원들끼리 메인 스크럼 진행중 짬짬이 서칭을 진행해 왔습니다.
당시 흔히들 알고있으신 Jenkins, Fastlane, Travis CI 등 다양한 방식들에 대한 자료 조사를 진행하고, 저희에게 맞는 방식인지에 대해 의견을 나누며 조금씩 줄여나가고 있었습니다.
CI/CD 도입 기준
- Firebase Distribution을 지원하는지
- Github 과 연동되는지
- Slack을 통한 App팀 이외의 팀원에게도 공유되는지
- Test 코드를 돌릴수있는 환경인지
- 금액이 도입 초반에는 발생하지 않는지
라는 목표를 설정하고 검색을 진행 했습니다.
1, 2, 3 번의 경우 현재 팀에선 Firebase를 통한 내부배포, Github을 사용한 repository를 관리, Slack을 통한 내부 메신저를 사용 하고 있기 때문에 필수적이었습니다.
5번은, 혹시나 CI/CD 도입이 본격적이지 않은데 괜한 리소스의 낭비가 발생할수 있으니 조심하자 정도였습니다.
실제 테스트까지 진행되며, 차츰 로컬 빌드 머신 + Github Action에 의견이 모아져갔고, 로컬 빌드 머신은 바로 도입하긴 힘드니 Github Cloud 환경을 사용하자고 거의 결정이 되어가고 있었습니다.
“작년에 Xcode Cloud 나온다고 본거같은데 그거 한번만 봐볼게요”
매년 iOS개발자의 가슴을 띄게하는 WWDC 중,
WWDC21 에서 발표된 Xcode cloud가 생각 나기도 했고, 퍼스트파티 플랫폼인데 “그래도 한번은 알아봐야되지않겠어” 라는 마음으로 서치 및 테스트를 개인적으로 진행하게 되었습니다.
추후 (1)편에서 본격적으로 다루겠지만, 결론적으론 저희가 기준점으로 잡았던 도입 기준을 모두 적용 가능했습니다. 물론 shell script를 쓰긴 해야했지만..
또한 애플답게 Action Trigger나 cli에 대한 문서가 상세하게 적혀 있었고, 그 내용이 Github Action과 크게 다르지 않아 이해 또한 쉬웠으며, 때문에 대충 훑어본다는게 3일동안 본격적으로 파보며 장점들이 눈에 띄기 시작했습니다.
XCode Cloud 의 장점
- 뭣보다도 Apple이 지원
- 빠른 속도
- 너무나도 적은 초기 투입 리소스
- Github Action과의 차이 없는 환경
- 어쨋든.. Firebase 사용가능
각 장점에 대해 좀더 상세하게 설명 드리겠습니다.
1. Apple이 지원
어떠한 설명으로도, 무조건적인 내용. Apple이 지원합니다.
부연 설명하자면, RxSwift도 Apple이 combine을 지원하게 되면서 굳이 써야되나? 싶게 만들었죠. (구글도 비슷한 흐름이죠)
또한 cloud buid/test 환경을, Xcode 베타에서 동작시킬 수 있습니다. 무려 Beta를요. 컴퓨팅 시간 이내라면 무료로
뿐만 아니라 simulator, Device의 지원이 Xcode와 별반 차이나지 않습니다. 거의 대부분의 기기를 지원하는거죠. 사실 여기에서 Github cloud와의 환경차이로 마음이 크게 기울기 시작했습니다.
2. 속도
이 부분은 (1)편이나 (2)편쯤 실제 빌드테스트, 테스트진행, 아카이브를 진행하며 측정된 시간을 통해 보여드리도록 하겠습니다.
3. 초기 투입 리소스
여러 한글 블로그가 지금은 꽤 생겼으나, 당시 검색할때 만해도 한글로 된 블로그는 거의없었습니다. 때문에, 영어로 내용을 확인했습니다. 그런데도 불구하고 1시간도 안되는 시간만에 기본적인 환경을 조성했습니다.
기본적으로 GUI를 제공하기 때문에 yaml 이라던지, 다른 소스를 가지고 작업하는 것보다 쉽게 가능하며, Xcode가 아닌 web에서도 수정이 가능합니다.
또한 기본적으로 제공하는 computing시간(빌드,아카이브,테스트가 진행되는시간)이 25시간 제공하기 때문에 제공되는 서비스 앱이 적다면 상당히 메리트 있는 시간이었습니다.
추가적으로 Android도 같이 진행할 예정이었기 때문에, 각각의 겹치지 않게 리소스를 사용하는 장점 또한 존재하게 되었죠.
4. Github Action 과 차이가 없는 Trigger
사실 Github Action들을 Xcode cloud가 수신하는거기 때문에 거의 같다고 보시면 됩니다.
5. Firebase.. 지원?
네.. Apple이 정식지원하는것도, Firebase가 정식 지원하는것도 아니지만 어쨋든 됩니다. 이건 (2)편 Firebase 도입기에서 다루도록 하겠습니다.
단점
단점은 간단하게 넘어가겠습니다.
- 아직 안정화 되지 않은 환경
- 너무 쉬운 설정
- 과연 믿을만한가?
- yaml을 안쓴다고 했으나 결국은 cli환경으로 세팅이 필요
결론
작년에 진행된 내용을 뒤늦게 블로그로 정리하고 있어 약간의 시간차이가 발생하네요.
당시 첫번째 목적은 일단 써보고 얼마나 효용성이 있고, 우리의 리소스가 얼마나 절약되느냐 였습니다.
반년이상 사용해본 결과 지원하는 서비스(App)가 적은 회사거나 CI/CD에 본격적인 리소스를 투입하는게 쉽지 않은 회사라면 무조건적인 추천을 드리고 싶고, build/test/archive 를 부분적으로 진행하고 싶은 개발자라면 쉽게 도입할수 있기에 추천 드립니다.
한달에 한번 이상은 블로그를 작성할 예정이니 다음 (1)편에서 만나뵙도록 하겠습니다.
처음으로 작성하게 된 글이지만 만나뵙게 되어 영광입니다.
자주 뵈면 좋겠네요.