소개
안녕하세요, 저는 WcaleNieWolny - Capgo의 리드 소프트웨어 엔지니어입니다.
지난 8개월 동안 저는 새로운 조직 관리 시스템을개발해 왔으며, 4월 14일부로 시스템 구축이 완료되었음을 기쁘게 알려드립니다 🎉 🎊
드디어 8개월 만에 Capgo의 모든 기능을 조직 멤버가 사용할 수 있게 되었습니다. 포함된 기능은 다음과 같습니다:
- 앱 관리
- 통계
- 결제
- 전체 CLI 지원
- 그 외 더 많은 기능들!
이 과정이 쉽지만은 않았습니다. 시스템을 세 차례나 대대적으로 개편해야 했으니까요.
Organizations v1
시작은 순탄치 않았습니다... 프로젝트에 합류하고 2주 만에 이 작업을 시작했거든요. 당시에는 codebase에 대한 지식도 거의 없었고, 이를 어떻게 구현할지에 대한 구체적인 구상도 부족한 상태였습니다.
결국 앱, 채널, 버전에만 접근할 수 있는 아주 임시방편적인(hacky) 솔루션을 구현하게 되었습니다. 초대된 사용자가 통계 데이터에 접근하는 것조차 불가능했죠.
그 후 Martin의 리뷰를 기다렸습니다. 계속 기다렸지만 아무런 진전이 없었죠. 3개월 뒤, 저는 다시 이 작업을 시작해 모든 merge conflict를 해결하기로 했습니다. 테스트도 병행하기로 했는데, 결과적으로 아주 탁월한 선택이었습니다. 예상대로 임시방편적인 솔루션은 완전히 실패했습니다. 그 순간, 저는 모든 버그를 수정하고 광범위한 E2E 테스트를 작성하기로 결심했습니다. 매우 불안정한 code와 과거의 제가 내린 수많은 잘못된 결정들을 바로잡아야 했지만, 2주간의 고군분투 끝에 마침내 정상 작동하게 만들었습니다.
하지만 그렇다고 완벽했던 것은 아닙니다. 조직(organization) 소유자는 초대된 최고 권한 사용자보다 훨씬 더 많은 권한을 가지고 있었습니다. 사용자 경험(UX) 또한 많이 부족했습니다. 초대된 사용자는 애플리케이션 통계를 볼 수 없었고, 결제 관리도 불가능했으며, CLI 기능도 upload만 가능하도록 제한되어 있었습니다.
이런 여러 어려움에도 불구하고, Martin은 PR을 리뷰해 주었고 일주일 뒤 프로덕션에 반영되었습니다.
Organizations v2
여러 난관이 있었지만 조직 시스템은 꽤 잘 작동했습니다. 사용자들도 이를 사용하기 시작했고, 프로젝트 전체를 한 단계 진전시켰습니다. 하지만 저는 여전히 다음 작업들을 수행해야 했습니다:
- 기존의 엉망이었던 부분을 수정하기 위해 행 레벨 보안
- 전체 CLI 지원 추가
- 관리자(admin) 사용자가 소유자와 동일한 권한을 갖도록 보장
이후 수많은 논의 끝에 Martin과 함께, 앞으로 나아갈 최선의 방법은 보안 규칙 전체를 다시 작성하고 모든 리소스 소유권을 사용자가 아닌 조직으로 옮기는 것이라고 결정했습니다. 이렇게 하면 새 조직 시스템과 더 쉽게 통합할 수 있고, 레거시 code도 많이 제거할 수 있습니다.
새 RLS code를 작성하는 건 매우 지루했지만, 일주일 반 만에 마이그레이션 전체가 준비되었습니다.
하지만 이번에는 E2E 테스트를 작성하지 않기로 했고, 그래서 수동으로 테스트해야 했습니다. Martin과 저는 세 차례나 아주 긴 통화를 한 끝에, 결국 프로덕션에 push하고 잘 되기를 바라기로 했습니다 🙏
그렇지 않았습니다... 알고 보니 제가 사용자 등록을 망가뜨려서 신규 사용자가 계정을 만들 수 없었습니다 😅
당황해서 급히 전화를 한 뒤, 서둘러 일부 변경 사항을 prod에 push하고 잠자리에 들었습니다. 불행히도 제 변경 사항은 문제만 더 키웠습니다 😰
자고 일어나 보니 사용자들에게 빈 조직이 잔뜩 생겨 있었습니다. 사용자당 조직은 하나만 허용되어야 하므로 일어나서는 안 될 일이었습니다. 중복된 빈 조직을 모두 제거하는 데 한참 머리를 맞대야 했지만, 그 외에는 변경 사항이 꽤 순조롭게 진행되었습니다.
Organizations v3
이것만으로는 부족했습니다. 아직 거대한 구성 요소가 하나 빠져 있었습니다. 바로 결제(billing)입니다.
지금까지는 소유자만 결제를 관리할 수 있었습니다. 이로 인해 사용자가 조직용 플랜을 구매한다고 착각하고 개인용으로 결제하는 등의 번거로운 문제가 발생하곤 했습니다. 저희는 즉시 수동으로 문제를 해결했지만, 이 과정에서 이러한 방식은 더 이상 용납될 수 없다고 판단했습니다.
마이그레이션은 꽤 순조로웠습니다. 일주일 정도 작업이 필요했지만, V1이나 V2와 비교하면 정말 어려운 작업은 아니었습니다 🚀
Organizations v4 - 미래를 향하여
이 모든 노력을 쏟아부은 만큼, 이제는 잠시 다른 곳에 집중할 시간인 것 같습니다 😎
쉽지 않은 과정이었지만 많은 것을 배웠고, 덕분에 capgo에 매우 멋지고 중요한 기능이 추가되었습니다. 기존 레거시 함수를 제거하고, 웹앱 UX를 개선하며, 버그를 모니터링하는 작업이 남아있지만, 이 시스템의 구조 자체가 크게 바뀔 일은 없을 것입니다.
읽어주셔서 감사합니다 🚀
새로운 조직 관리 시스템에서 계속 읽기
사용 중인 경우 완전히 새로워진 조직 관리 시스템 대시보드와 API 운영을 계획하려면, 이를 다음 항목과 연결하세요: API 개요 API Overview의 구현 상세 내용은 소개 Introduction의 구현 상세 내용은 API 키 API Keys의 구현 상세 내용은 디바이스 Devices의 구현 상세 내용과 번들 Bundles의 구현 상세 내용은