프로젝트를 진행하면 유용하고 좋은 서드파티 프레임웍이나 커뮤티니 형성이 잘된 오픈소스 그룹에서 (능력자들이) 만든 좋은 오픈소스 를 써서 개발속도를 높이거나 그리고 좋은 프레임웍은 코드품질도 높힐 수 있기 때문에 iOS 프로젝트를 들어가게 되면 필수적으로 Carthage 나 Cocoapods 를 사용해서 Dependency 프레임웍을 관리한다.

최근에 진행하고 있는 프로젝트에선 처음에 Carthage 를 사용했었는데 그 이유는,

  1. Workspace 를 사용할 필요가 없다. (Cocoapods의 경우 알아서 Workspace 를 만들어 준다.)
  2. 패키지 파일의 작성이 좀더 간단명료하다.
  3. 바이너리 프레임웍으로 미리 빌드를 한다.

Carthage 를 사용하면서 드는 점은 개발중인 프로젝트와 확실히 프레임웍들이 독립적인 형태를 만들어 주는 느낌이 든다. (Carthage 팀이 이런 의도로 이 프로젝트를 시작했다고 한다.)

그리고 프로젝트를 진행하면서 구글과 페이스북의 SDK 들을 설치해서 사용을 해야했는데 직접 다운로드를 받아 사용하는 방법과 Cocoapods를 통한 방법만 제공하고 Carthage 는 정식지원을 해주지 않는다. 그래서 중간엔 Carthage와 Cocoapods를 둘다 사용을 했었다. (결국 Workspace를 만들게 됐다는…)

이렇게 두가지를 모두 사용하면서 느낀점은 프로젝트가 굉장히 커지는 느낌이 들고 실제로 용량도 상당해졌다. Carthage 는 flag 를 줘서 ios 용만 따로 빌드할수 있지만 framework 파일 자체의 용량이 상당히 컸다. 그리고 캐쉬 파일들도 많이 생겨서 지저분해 보였다. 가끔 직접 추가해야 하는 프레임웍도 일일히 관리하는게 상당히 불편했다.

결국 Cocoapods 로 전부 옮겨와서 관리하고 있다. 둘다 분명한 장단점이 있지만 마지막에 수동으로 추가삭제를 해야하는게 갯수가 많아지니 가끔 충돌이 나서 정리해야하는 번거로움이 있었다. 특히 구글은 기능하나만 쓰고싶었는데 한가지 기능을 위해 4-5가지를 설치해야 하는 것때문에 상당히 애를썼었다.

개인적으로 많은 프레임웍을 쓰지 않는다면 Carthage 를 쓰는것이 깔끔하고, 구글이나 페이스북의 프레임웍을 쓰게되면 Cocoapods 을 쓰는게 관리에 좀더 나을것 같다.

Carthage Github
Cocoapods Website