본 문서는 학습을 위해 작성한 내용이며, 추가 내용 보강이나 수정이 이루어질 수 있습니다.
CloudKit은 Apple이 개발한 클라우드 서비스 프레임워크로, 애플의 iCloud 서비스를 이용하여 앱의 데이터를 저장하고 동기화할 수 있도록 도와줍니다. CloudKit은 iOS, macOS, tvOS, watchOS에서 사용할 수 있습니다. 개발자들은 CloudKit을 사용하여 앱의 데이터를 안전하게 저장하고 관리할 수 있으며, 여러 기기 간의 데이터 동기화 및 사용자 간의 데이터 공유를 쉽게 구현할 수 있습니다.
CloudKit의 주요 기능과 컴포넌트들은 아래와 같습니다.
- 컨테이너 (Container)
- 데이터베이스 (Database)
- 존 (Zone)
- 쿼리 (Query)
- 원격알림 (Push Notification)
- 보안
1. 컨테이너 (Container)
앱 별로 하나 이상의 컨테이너를 생성하여 데이터를 저장합니다.
컨테이너는 앱의 데이터를 모두 포함하며, 개인 데이터와 공용 데이터 영역으로 구분됩니다.
생성은 Apple Developer 사이트에서 생성이 가능합니다.
Cerificates, Identifiers & Profiles에서 'iCloud Conatiners'를 선택합니다.

Container Identifier 생성
Description에서는 간단한 구분할 수 있는 설명을, Identifier에는 iCloud. 로 시작하는 Identifier를 작성합니다. 보통 iCloud. 뒤에 Bundle Identifier를 작성합니다.

Container Identifier 생성
생성하게 되면 iCloud.developer.apple.com에서 확인이 가능합니다.

iCloud.developer.apple.com 화면

Container 두 영역
2. 데이터베이스(Database)
컨테이너 안에는 두 가지 유형의 데이터베이스가 있습니다.
- 개인 데이터베이스(Private Database): 각 사용자에게 할당되며, 사용자의 개인 데이터를 저장하는 공간입니다. 사용자는 자신의 개인 데이터베이스에만 접근할 수 있습니다.
- 공용 데이터베이스(Public Database): 모든 사용자에게 공개된 데이터를 저장하는 공간입니다. 앱 내에서 공통적으로 사용되는 데이터를 저장하거나 사용자들끼리 정보를 공유할 때 사용합니다.
- 공유 데이터베이스(Shared Database): 여러 사용자 간에 데이터를 공유하기 위한 데이터베이스입니다. 사용자들이 협업하거나 특정 데이터를 공유할 때 사용합니다. 공유 데이터베이스에서 사용자들은 주로 CKShare 객체를 이용하여 데이터를 공유하고, 공유에 대한 정보를 저장합니다.
공유 데이터베이스는 개인 데이터베이스와 공용 데이터베이스와는 달리, 특정 사용자들이 선택적으로 접근하고 데이터를 공유할 수 있는 데이터베이스입니다. 공유 데이터베이스를 이용하여 앱에서 사용자들이 협업이나 정보 공유를 수행하는 것이 가능합니다. 예를 들어, 프로젝트 관리 앱에서 특정 프로젝트를 공유하거나 가족 구성원들끼리 캘린더를 공유하는 경우에 공유 데이터베이스를 사용할 수 있습니다.

Database 종류
3. 존(Zone)
레코드를 그룹화하여 관리하는 논리적 공간입니다. 기본적으로 개인 데이터베이스에는 하나의 기본 존이 있으며, 개발자는 필요에 따라 추가적인 존을 생성할 수 있습니다.
4. 쿼리(Query)
데이터베이스에서 특정 조건을 만족하는 레코드를 검색하기 위한 기능입니다. 쿼리를 이용하여 효율적으로 원하는 데이터를 불러올 수 있습니다.
5. 원격 알림(Push Notification)
데이터베이스의 변경사항을 실시간으로 알려주는 기능입니다. 앱이 백그라운드에서 실행 중일 때도 데이터 변경을 감지하고 즉시 사용자에게 알림을 전달할 수 있습니다.
6. 보안
CloudKit은 사용자의 데이터를 안전하게 보호하기 위해 암호화 및 인증 기능을 제공합니다. 개인 데이터베이스에 대한 접근은 사용자의 Apple ID를 통해 인증되며, 데이터는 전송 중이나 저장 중일 때 모두 암호화됩니다. 이를 통해 사용자의 개인 정보 및 데이터가 안전하게 보호됩니다.
추가로, CloudKit은 웹 서비스를 사용하여 서버와 클라이언트 간 데이터 전송을 수행할 수도 있습니다. CloudKit Web Services를 사용하면 웹 애플리케이션 및 서버 애플리케이션에서도 CloudKit 데이터에 접근하고 관리할 수 있습니다. 이를 통해 다양한 플랫폼에서의 데이터 동기화 및 사용자 간 데이터 공유를 더욱 원활하게 처리할 수 있습니다.
'Dev-iOS > iOS' 카테고리의 다른 글
[iOS 앱] ScreenTime API 적용 앱 개발 진행기 (19) | 2023.09.15 |
---|---|
[iOS] CloudKit 학습 - CloudKit은 언제 사용할까? (29) | 2023.07.20 |
[iOS 빌드] LLVM 컴파일러 (2) (0) | 2023.07.17 |
[iOS 빌드] LLVM 컴파일러 (1) (0) | 2023.07.17 |
xcconfig 란 (빌드 설정) (0) | 2023.07.17 |