업그레이드 배포하기
학습 목표
이 유닛을 완료하면 다음을 수행할 수 있습니다.
- 고객에게 업그레이드를 제공하는 다양한 방법을 나열할 수 있습니다.
- 고객의 업그레이드를 돕기 위해 사용할 수 있는 도구를 설명할 수 있습니다.
최신 버전 사용하기
지난 유닛에서는 관리 패키지의 고유한 버전을 식별하는 패키지 버전 번호에 대해 알아보았습니다.
앞서 언급했듯이, 서로 다른 제품 버전들을 유지 관리하는 것은 이상적이지 않습니다. 모든 고객이 제품의 단일 버전(최신 버전)을 사용하도록 하세요. 이렇게 하면 모두가 동일한 경험, 최신 버그 수정, 그리고 멋진 신기능을 이용할 수 있습니다.
그렇게 하는 방법을 알아보겠습니다.
고객에게 푸시 업그레이드하기
고객이 제품의 최신 버전을 사용하기를 진정으로 원한다면 아주 간편한 방법이 있습니다. 푸시 업그레이드를 사용해보세요. 푸시 업그레이드는 최신 버전의 제품을 고객에게 푸시합니다. 업그레이드를 완료하기 위해 아무 작업도 할 필요가 없습니다. 새 버전이 있으면 고객이 바로 사용할 수 있습니다.
주 또는 부 업데이트를 위해 푸시 업그레이드 및 새로운 패치 버전을 사용할 수 있습니다. 푸시 업그레이드가 완료되면 고객은 제품의 Package Detail(패키지 세부 정보) 페이지에서 새 버전 번호를 확인할 수 있습니다. 물론 새로 추가된 멋진 신기능도 모두 볼 수 있습니다.
커뮤니케이션의 중요성
이제 푸시 업그레이드의 장점을 완전히 이해하셨기를 바랍니다. 이러한 내용을 고객들에게 전해주세요. 예정된 푸시 업그레이드에 대해 분명 미리 듣고 싶어할 것입니다!
푸시 업그레이드를 제공하는 방법
푸시 업그레이드의 작동 방식은 다음과 같습니다.
- 업그레이드할 고객 조직을 하나 이상 선택합니다.
- 해당 조직에 설치할 앱 버전을 선택합니다.
- 특정 날짜와 시간에 업그레이드를 예약합니다.
- 업그레이드 진행 상황을 추적합니다. 성공적으로 완료되었는지 확인하고, 예약을 변경하려면 보류 중인 업그레이드를 중단합니다.
이는 간략한 설명에 불과합니다. 업그레이드의 작동 방식, 즉 가장 먼저 업데이트되는 조직, 각 조직에 일어나는 일 등은 여러분이 직접 결정합니다.
큰 권한에는 큰 책임이 따른다
푸시 업그레이드는 제어 능력을 선사합니다. 간단한 패치부터 앱의 대대적인 개편까지 무엇이든 배포할 수 있으며, 단일 고객 또는 전체 고객을 업그레이드할 수 있습니다.
제대로 수행하면 푸시 업그레이드가 원활하게 진행되어 모두가 새 버전을 받고 사용할 수 있습니다. 잘못 수행하면 컴퓨터를 사용하는 사람이라면 누구나 아는 업그레이드 참사가 발생합니다.
현명하게 판단하세요. 많은 기능이나 구성 요소를 추가하는 경우 그로 인한 영향을 고려해야 합니다.
- 구성 요소가 기존 설치와 연동되나요?
- 업그레이드가 일반적인 사용자 정의를 방해하나요?
- 업그레이드가 고객 데이터를 파괴적인 방식으로 수정하나요?
새로운 기능은 관리하기 쉽습니다. 즉 업그레이드를 제공할 때까지 고객은 이 기능을 사용하지 않습니다. 기존 기능은 관리가 까다롭습니다. 고객이 생산성을 유지할 수 있도록 작동 방식을 유지하세요.
Salesforce 파트너는 업그레이드를 푸시하기 위해 특별한 권한을 필요로 합니다. 액세스 권한을 요청하려면 Salesforce Partner Community에 지원 사례를 기록하세요(로그인 필요).
세부 사항 자동화하기
업그레이드는 기존 시스템을 변경하기 때문에 신규 설치보다 까다롭습니다. 또한 고객 조직에서 무슨 일이 일어나는지 알기 어렵습니다.
때에 따라 설치 후 작업(설치를 마친 후 진행하는 작업)이 필요합니다. 예를 들어 업데이트된 수식을 수용하거나 불일치 항목을 바로잡기 위해 고객 데이터를 수정할 수 있습니다. Apex 메타데이터를 사용하면 패키지에 사용자 정의 필드를 추가할 때 페이지 레이아웃을 업데이트할 수 있습니다.
또한 설치 후 작업을 위한 Apex 클래스를 작성할 수 있습니다. 이 클래스는 업그레이드가 조직에 설치된 후 작업을 수행합니다.
이 클래스는 어떤 모습일까요? 다음은 간단한 예시입니다.
global class PostInstallClass implements InstallHandler { global void onInstall(InstallContext context) { if(context.previousVersion() == null) { // This means the package is being installed for the first time // Perform required activities for the first time install Account a = new Account(name='NewAccount'); insert(a); } else if(context.previousVersion().compareTo(new Version(1,0)) == 0) { // This means the previous version is 1.0 } if(context.isUpgrade()) { // This means the package is getting upgraded // Perform required activities for package upgrades } if(context.isPush()) { //This means the package is getting pushed // Perform required activities for push upgrades } } }
모든 새로운 Apex 클래스에는 테스트 클래스가 필요합니다. 다음은 이 예시에 해당하는 테스트 클래스입니다.
@isTest static void testInstallScript() { PostInstallClass postinstall = new PostInstallClass(); Test.testInstall(postinstall, null); Test.testInstall(postinstall, new Version(1,0), true); List<Account> a = [Select id, name from Account where name ='NewAccount']; System.assertEquals(a.size(), 1, 'Account not found'); }
Test
클래스의 testInstall
메서드를 사용하여 PostInstall
클래스를 테스트하세요. 해당 메서드에 들어갈 내용은 여러분이 결정하세요!
신중한 자동화
자동화는 제대로 동작할 때 빛을 발합니다. 기존 및 신규 기능에 자동화를 사용하는 가장 좋은 방법을 생각해보세요.
기존 기능을 개선하려면 설치 후 클래스를 사용하여 기존 사용자에게 기능 구성 요소에 대한 새로운 권한을 자동으로 할당하세요. 이렇게 하면 모든 사람이 중단 없이 패키지를 계속 사용할 수 있습니다.
설치 후 Apex 스크립트를 사용하여 새 기능에 대한 구성 요소 권한을 자동으로 할당하지 마세요. 대신에 고객 관리자에게 이러한 기능에 대해 알려서 세부 사항을 처리하도록 하세요.
업그레이드 예약하기
업그레이드를 정의했으므로 이제 예약을 수행할 차례입니다. 누가 언제 업그레이드를 받나요?
SOAP API를 통한 업그레이드 예약
SOAP API를 사용하면 프로그래밍 방식으로 업그레이드를 예약 및 제어하고 진행 상황을 추적할 수 있습니다. SOAP API로 다음을 수행할 수 있습니다.
- SOQL 쿼리로 패키지를 사용하는 고객 찾기
- 이 고객에 대한 푸시 업그레이드 예약
- 업그레이드 상태 모니터링 및 오류 확인
API는 업그레이드 배포에 큰 유연성을 더합니다. 예를 들어 고객이 새 버전으로 업그레이드할 수 있는 웹 양식을 만들 수 있습니다. 양식의 버튼을 클릭하면 이러한 고객에 대한 푸시 업그레이드가 예약됩니다.
SOAP API는 다소 복잡하므로, 여기서 사용 방법을 설명하지는 않겠습니다. 2세대 관리 패키징 개발자 가이드에서 푸시 업그레이드 예약 방법을 설명합니다.
변화: 유일한 상수
소프트웨어를 개발하는 경우 많은 변화가 일어납니다. 버그가 수정되고, 기능이 추가되고, 알고리즘과 구조가 진화합니다. 자체 개발 팀의 변경 사항에 대해서는 이미 다루었고, 지금은 이러한 변경 사항을 고객에게 전달하는 방법을 살펴보았습니다.
이러한 도구를 사용하여 고객에게 시기 적절하고 원활한 업데이트를 제공하세요. Salesforce 고객은 SaaS의 모든 이점을 누리고 싶어 합니다. SaaS 약속을 이행하여 고객 만족도를 유지하세요.