고객 사례
글로벌 패션 리테일러를 위한 90일 Salesforce 정상화
실패한 배포를 되살려 90일 만에 프로덕션까지 딜리버리
문제
연 매출 8억 유로 규모의 패션 리테일러가 18개월째 Salesforce Sales Cloud 배포를 시도하고 있었습니다. 원래 SI는 90만 유로 예산에 240만 유로를 청구했습니다. 87개 요구사항 중 진정으로 딜리버리된 것은 34개뿐이었고, 데이터 모델에는 근본적 결함이 있었으며, 영업팀은 Excel로 후퇴했고, 프로젝트는 구축 파트너와의 법적 분쟁으로 변질됐습니다.
진행한 작업
엄격한 진단 2주, 조직에는 어떤 변경도 가하지 않음. 계정 계층을 재설계하고, governor limit 결함을 바로잡았으며, 340건의 Apex 테스트 스위트로 커버리지를 42%에서 84%로 끌어올렸습니다. 남은 53개 요구사항은 여섯 스프린트에 걸쳐 재구축하거나 완료했으며, 모든 항목에 서면 인수 기준을 달았습니다. 90일째 프로덕션 오픈, 13주째 Excel 퇴장.
한눈에 보기
- 고객사
- Global Fashion Retailer
- 산업
- 리테일 · 소비재
- 프로젝트
- 3 months
- 담당 역할
- Lead Solution Architect, 정상화 및 딜리버리
- Salesforce 클라우드
- Sales Cloud · Service Cloud
- 성과
- 90 일 만에 프로덕션
Before / After
- Salesforce 프로그램 18개월 진행, 90만 유로 예산에 240만 유로 지출.
- 87개 중 34개 딜리버리, 그중 11개는 첫날부터 결함이 알려진 상태.
- B2B 도매에 맞지 않게 모델링된 계정 계층, 다지역 소유권 작동 불가.
- 테스트 커버리지 42%, 대량 작업에서 governor limit 실패.
- 영업팀은 Excel, 원래 SI와의 법적 분쟁 진행 중.
- 87개 요구사항 전부 프로덕션 가동, 한 번도 시작되지 않았던 25개 포함.
- 계정 계층 재설계, 기존 레코드는 Batch Apex로 전수 대조하며 마이그레이션.
- 340개 테스트 메서드, 84% 커버리지, 조직 전반에 governor limit 안전 자동화.
- 영업팀은 3주 만에 Salesforce로 이전, 30일간 치명적 장애 0건.
- 법적 분쟁이 유리하게 종결, 기술 진단이 고객사의 입지를 강화.
상황
연 매출 8억 유로 규모의 글로벌 패션 리테일러가 18개월째 Salesforce Sales Cloud 배포를 시도하고 있었습니다. 원래 오픈 예정일은 14개월 전이었습니다. 프로젝트는 당초 90만 유로 예산에 맞서 240만 유로의 SI 비용을 소진했습니다. 현 구축 파트너는 원래 계약 금액보다 40% 더 많은 금액을 ‘범위 변경’ 비용으로 청구했으나, 딜리버리는 여전히 미완이었습니다.
비즈니스는 상당한 운영 타격 아래 돌아가고 있었습니다. 영업팀은 Excel로 파이프라인을 관리했습니다. Salesforce 배포가 신뢰받지 못했기 때문입니다. 데이터 오류가 너무 많고, 성능 문제가 너무 많았습니다. 경영진은 프로젝트와 구축 파트너 양쪽에 대한 신뢰를 잃었습니다. Salesforce 투자가 이사회 수준에서 의심받고 있었습니다.
SI와의 관계는 완전히 무너졌습니다. SI의 어카운트 매니지먼트로의 에스컬레이션은 SLA와 사과를 낳았을 뿐 딜리버리는 없었습니다. 고객사는 SI에 법적 통지를 보냈습니다. 프로젝트는 기술 프로젝트에서 법적 분쟁으로 넘어갔고, SI는 딜리버리보다 자기 입지를 지키는 데 몰두했습니다.
고객사에 필요한 것은 피해를 평가하고, 무엇을 구제할 수 있는지 판단하며, 새로 부임한 CFO가 정한 빠듯한 90일 마감에 맞춰 남은 요구사항을 딜리버리할 독립 아키텍트였습니다.
과제
첫 2주는 전적으로 진단이었습니다. 전체 그림이 분명해지기 전까지 조직이나 프로젝트 계획에 어떤 변경도 가하지 않았습니다.
기술 진단은 원래 요구사항 명세에 맞서 현 조직 상태를 문서화했습니다. 원래 범위의 87개 기능 요구사항 중 34개는 완전히 딜리버리됐고, 28개는 부분적으로(작동하지만 미완), 25개는 시작되지 않았습니다. ‘완전히 딜리버리된’ 34개에는 SI가 ‘백로그 항목’으로 기록한 알려진 결함과 함께 딜리버리된 11개가 포함돼 있었습니다. 사실상 서류상으로는 딜리버리됐으나 실제로는 망가진 것들이었습니다.
데이터 모델에는 근본적인 아키텍처 문제가 있었습니다. 계정 계층이 고객사의 B2B 도매 구조에 맞지 않게 모델링되어, 다지역 계정 소유를 막는 제약을 만들었습니다. 리드 전환 프로세스는 전환할 때마다 데이터 무결성 문제를 일으키는 방식으로 커스터마이징되어 있었습니다. Record-Triggered Flow가 governor limit을 고려하지 않고 작성되어 대량 작업 실패를 일으켰습니다. 테스트 커버리지는 42%로, Salesforce가 요구하는 75%와 프로덕션 워크로드가 요구하는 80%를 한참 밑돌았습니다.
프로세스와 거버넌스의 그림도 기술적 그림과 일치했습니다. 제대로 된 변경 통제가 없었습니다. 요구사항 변경은 SI 프로젝트 매니저와 구두로 합의됐고, 공식적으로 문서화된 적이 없으며, 고객사와 SI가 종종 다르게 해석했습니다. ‘범위 변경’ 비용은 어떤 경우에는 정당한 추가 작업이었고 다른 경우에는 SI의 실수였으나, 공식 변경 지시서가 없으니 판가름할 방법이 없었습니다. UAT 프로세스도 없었습니다. 고객사는 SI가 진행한 데모를 근거로, 서면 테스트 케이스에 맞춘 체계적 사용자 인수 테스트 없이 산출물을 인수했습니다. 사용자는 각 릴리스 이후까지 어떤 테스트에도 참여하지 않았고, 이는 결함이 테스트가 아니라 프로덕션에서 발견됐다는 뜻이었습니다.
부분적으로 딜리버리된 28개 중 19개는 표적 개발로 완료할 수 있었습니다. 나머지 9개는 아키텍처적으로 잘못된 접근으로 만들어져 재구축해야 했습니다. 시작되지 않은 25개는 적합한 팀과 방법론이 있다면 모두 90일 안에 실현 가능했습니다. 데이터 모델 문제는 아키텍처 수정이 먼저 필요했습니다. 그렇지 않으면 새 요구사항이 무너진 기반 위에 올라갔을 것이고, 정상화는 원래와 같은 방식으로 실패했을 것입니다.
진단 단계를 마치며 CFO에게 한 말무너진 계정 계층 위에서 87개 요구사항을 딜리버리할 수는 없습니다. 아키텍처 복구에 2주, 전부 딜리버리하는 데 8주. 그것이 버티는 유일한 길입니다.
실행
1~2주차: 아키텍처 복구
B2B 도매 구조에 맞게 계정 계층 재설계. 기존 계정 레코드를 Batch Apex로 전후 전수 대조하며 수정 구조로 마이그레이션. 리드 전환 결함은 트리거-Flow 충돌로 근본 원인을 규명하고 해결. 모든 Record-Triggered Flow를 점검하고 governor limit 안전을 위해 리팩터링하며 대량 데이터 시나리오로 재테스트. 340개 메서드 테스트 스위트로 커버리지를 42%에서 84%로 상향.
3~8주차: 딜리버리 스프린트
비즈니스 임팩트 기준으로 요구사항 재우선순위: 매출에 영향을 주는 것이 먼저, 운영 효율이 다음, 리포팅이 마지막. 공식 계획, 일일 스탠드업, 인수 장치로서의 비즈니스 이해관계자 리뷰를 갖춘 2주 스프린트 사이클. 완료 가능한 부분 요구사항 19개는 1~2 스프린트에, 아키텍처 재구축 9개는 2~4 스프린트에, 시작되지 않은 25개는 3~6 스프린트에 딜리버리.
9~12주차: 안정화와 출시
예상 트랜잭션 볼륨에 맞선 성능 테스트가 느린 쿼리 셋과 규모에서 실패할 배치 프로세스 하나를 짚어냄. 오픈 전에 모두 재작성하고 튜닝. 병행 운영 기간을 두어 영업팀이 Excel과 나란히 Salesforce를 쓰며 Excel을 내려놓기 전에 신뢰를 쌓게 함. 교육은 기능 둘러보기가 아니라 역할별 워크플로우 세션으로 진행하고, 세션보다 오래 남는 직무 보조 자료를 곁들임.
모든 요구사항에 비즈니스 책임자가 작성하고 개발 착수 전에 서명한 서면 인수 기준 문서가 있었습니다. 완료된 모든 항목은 완료로 표시되기 전에 그 기준에 맞춰 비즈니스가 테스트했습니다. 그것이 원래 SI가 고객사는 인수하지 않은 요구사항을 딜리버리됐다고 주장하게 만든 모호함을 제거했습니다.
성과
87개 요구사항 전부가 90일 안에 프로덕션 딜리버리됐습니다. 프로젝트 시작 시점에 한 번도 시작되지 않았던 25개를 포함해서 말입니다. 영업팀은 오픈 후 3주 안에 Excel에서 Salesforce로 완전히 이전했고, 프로덕션 운영 첫 30일 동안 치명적 장애는 없었습니다.
아키텍처 기반(재구축된 계정 계층, 깨끗한 데이터 모델, governor limit에 안전한 자동화, 84% 테스트 커버리지)은 비즈니스에 우회해야 할 플랫폼이 아니라 그 위에 쌓을 수 있는 플랫폼을 주었습니다. 리포팅 계층은 영업팀이 입력하는 것과 같은 모델 위에서 돌았습니다. CFO가 분기 리뷰에 필요로 한 파이프라인 지표가 2년 만에 처음으로 존재했습니다.
CFO 마감은 지켜졌습니다. 원래 SI와의 법적 분쟁은 고객사에 유리한 조건으로 해결됐습니다. 기술 진단 문서는 무엇이 딜리버리됐고 안 됐는지에 대한 객관적 기록을 제공했고, 이는 합의 협상에서 고객사의 입지를 강화했습니다.
더 중요하게는, 조직이 플랫폼으로서의 Salesforce에 대한 신뢰를 되찾았습니다. 18개월의 정체는 Salesforce가 이 비즈니스에 통할 수 있는지에 대해 이사회 수준에서 진짜 회의를 낳았습니다. Service Cloud, 나아가 Data Cloud로 확장하는 로드맵을 갖춘, 작동하고 도입된 배포가 그 신뢰를 재건했습니다.
돌아보며
이 패턴은 실패 방식이 아키텍처적이고 절차적일 때, 리더십이 진단은 변경에 선행해야 한다는 것을 받아들일 때, 그리고 비즈니스 책임자가 서면 인수 기준에 기꺼이 서명할 때 통합니다. 정체된 프로그램이 빠듯한 마감에 다가서고 원래 SI 관계가 무너졌을 때라면 언제든 옳은 선택입니다. 깨끗한 기반 위에서의 정상화는 처음부터 다시 시작하는 것보다 싸고 빠릅니다.
이전 구축이 구조적 임계점을 넘었을 때는 덜 통합니다. 예컨대 데이터 모델이 너무 심하게 커스터마이징되어 마이그레이션 비용이 재구축 비용을 넘을 때, 또는 조직의 커스터마이징이 너무 오래 문서화되지 않아 진단 자체가 수개월짜리 프로젝트가 될 때입니다. 그 지점에서는 통제된 재시작이 정직한 답입니다.
더 일찍 했어야 할 일은 서면 인수 기준입니다. 이 프로젝트가 복구한 실패 방식을 가장 일관되게 막아주는 단 하나의 변경은, 개발 착수 전에 모든 요구사항이 비즈니스 책임자가 서명한 ‘완료’ 정의를 갖도록 강제하는 것입니다. 그 변경은 비용이 들지 않고, 고객사의 권한 안에 있으며, 원래 18개월을 소진한 범위 분쟁의 적어도 절반은 막았을 것입니다.
용어 정리
- Recovery architecture(정상화 아키텍처)
- 실패했거나 정체된 Salesforce 배포를 정직하게 평가하고, 구제할 수 있는 것과 재구축해야 하는 것을 가르며, 빠듯한 마감에 맞춰 남은 범위를 딜리버리하는 규율입니다. 조직에 어떤 변경을 가하기 전에 진단이 선행합니다.
- Account hierarchy model(계정 계층 모델)
- 고객 또는 파트너 계정이 서로 어떻게 관계 맺는지(상위, 하위, 지역, 브랜드, 권역)를 구조적으로 표현한 것입니다. B2B 맥락에서 이를 잘못 잡으면 하위의 모든 오브젝트(상품, 계약, 케이스)가 제약되며, 늦게 발견할수록 가장 비싼 아키텍처 결함이 됩니다.
- Record-Triggered Flow
- Salesforce의 선언적 자동화 프레임워크입니다. 강력하지만 governor limit의 적용을 받습니다. 대량 작업 동작을 고려하지 않고 작성한 Flow는 단일 레코드 테스트는 통과하지만 프로덕션 규모에서 실패합니다. Flow가 governor limit에 안전한지 점검하는 것은 모든 정상화에서 타협 불가한 단계입니다.
- Acceptance criteria(인수 기준)
- 한 요구사항의 '완료'가 무엇을 뜻하는지, 개발 착수 전에 합의해 비즈니스 책임자가 서명한 서면 정의입니다. 벤더가 고객사는 완료로 보지 않는 항목을 딜리버리됐다고 주장하게 만드는 모호함을 제거합니다. 정상화에서 가장 효과적인 변경 통제 장치입니다.
자주 묻는 질문
- 첫 18개월을 날린 실패 방식이 바로 무엇이 무너졌는지 이해하지 않고 변경을 가한 것이기 때문입니다. 기술 진단은 진정으로 딜리버리됐는지, 부분적으로 딜리버리됐는지, 딜리버리 시점에 결함이 있었는지, 한 번도 시작되지 않았는지로 요구사항을 가르고, 새 작업을 올리기 전에 어떤 아키텍처 결함을 먼저 복구해야 하는지 식별합니다. 진단을 건너뛴다는 것은 같은 무너진 기반 위에 다시 쌓는다는 뜻이며, 이것이 바로 원래 SI가 보여줄 것 하나 없이 240만 유로에 이른 방식입니다.
- 대부분은 구제할 수 있었고, 그것이 바로 정직한 진단의 핵심입니다. 부분적으로 딜리버리된 28개 중 19개는 표적 개발로 완료할 수 있었습니다. 나머지 9개는 아키텍처적으로 잘못된 접근으로 만들어져 재구축해야 했습니다. 이전 작업을 통째로 버리는 편이 정당화하기는 쉬웠겠지만 실행하기에는 더 비쌌습니다. 규율은 작동하는 것은 지키고, 가까운 것은 고치며, 구조적으로 틀린 것만 재구축하는 것입니다.
- 개발 착수 전에 비즈니스 책임자가 서명한, 모든 요구사항에 대한 서면 인수 기준입니다. 그리고 승인 전에 그 기준에 맞춰 비즈니스가 테스트했습니다. 프로젝트 매니저와의 구두 범위 합의는 더 이상 없었습니다. 스프린트 케이던스(2주 스프린트, 인수 장치로서의 비즈니스 이해관계자)는 비즈니스 검증 없이 딜리버리됐다고 주장하는 것을 불가능하게 만들었습니다. 변경 통제 규율은 기술 작업만큼이나 정상화의 일부였습니다.
- 42%는 Salesforce가 배포에 요구하는 75%를 밑돌고, 프로덕션 워크로드가 요구하는 80%에는 한참 못 미칩니다. 원래 코드베이스가 배포 임계값을 통과한 것은 일부 테스트 메서드가 의미 있는 무엇도 단언하지 않았기 때문입니다. 정상화는 테스트 스위트를 처음부터 다시 만들었습니다. 모든 커스텀 Apex를 다루는 340개 테스트 메서드를, 실제 동작을 반영하는 단언과 함께 작성했습니다. 커버리지는 대리 지표입니다. 정작 중요한 것은 단언의 품질입니다.
- 정상화 프로젝트가 분쟁 해결을 겨냥한 것은 아니었지만, 기술 진단 문서가 합의 협상의 증거가 됐습니다. 어떤 요구사항이 딜리버리됐고 안 됐는지, 어떤 결함이 알면서도 백로그로 기록됐는지, 어떤 아키텍처 결정이 다지역 소유권 제약을 만들었는지에 대한 객관적 서면 기록이 고객사에 방어 가능한 입지를 주었습니다. 합의는 고객사에 유리하게 마무리됐습니다. 정직한 문서는 대개 그런 결과를 냅니다.
다음으로 읽어 보십시오
상담 예약
30분이면 알 수 있습니다.
제가 도움이 될지 아닐지.
슬라이드도, 영업 자료도 없습니다. 아키텍처 다이어그램을 가져오시거나, 문제를 편한 말로 설명해 주십시오. 제가 맞는 사람인지, 다음 단계의 비용이 얼마인지, 커피를 다 마시기 전에 말씀드립니다.
- 24시간 이내 회신, 예외 없이
- 제가 맞는 사람이 아니라면, 맞는 분을 소개해 드립니다
- 요청하지 않으시면 후속 메일은 보내지 않습니다