본문 바로가기
스토리

완전히 새로운 조직 관리 시스템

capgo 팀이 조직 관리 시스템을 도입하게 된 비하인드 스토리

완전히 새로운 조직 시스템

소개

안녕하세요, 저는 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과 논의 끝에, 보안 규칙을 전면 재작성하고 모든 리소스 소유권을 사용자가 아닌 organization 단위로 이전하는 것이 최선의 방법이라고 결론 내렸습니다. 이를 통해 새로운 organization 시스템과 더 쉽게 통합할 수 있으며, 기존의 수많은 code 문제도 해결할 수 있기 때문입니다.

새로운 RLS code를 작성하는 과정은 매우 지루했지만, 일주일 반 만에 모든 마이그레이션을 마칠 수 있었습니다.

하지만 이번에는 E2E 테스트를 작성하지 않기로 결정했고, 결국 수동으로 테스트해야 했습니다. Martin과 세 차례에 걸친 긴 회의 끝에, 우리는 마침내 운영 환경에 배포하며 모든 것이 잘 되기를 기도했습니다 🙏

하지만 결과는... 알고 보니 제가 사용자 등록 기능을 망가뜨려 놓아서, 신규 사용자가 계정을 생성할 수 없는 상태였습니다 😅

당황해서 급히 통화를 마친 뒤, 서둘러 수정 사항을 prod에 push하고 잠자리에 들었습니다. 하지만 안타깝게도 제 수정 사항은 오히려 더 큰 문제를 일으켰습니다 😰

자고 일어나 보니 사용자들에게 수많은 빈 organization이 생성되어 있었습니다. 사용자당 하나의 organization만 허용되어야 하기에 결코 일어나서는 안 될 일이었습니다. 중복된 빈 org들을 모두 제거하는 데 꽤 많은 고민이 필요했지만, 그 외의 변경 사항들은 대체로 순조롭게 진행되었습니다.

Organizations v3

이것만으로는 부족했습니다. 여전히 핵심적인 요소인 billing이 빠져 있었기 때문입니다.

지금까지는 소유자만 결제를 관리할 수 있었습니다. 이로 인해 사용자가 조직용 플랜을 구매한다고 착각하고 개인용으로 결제하는 등의 문제가 발생하곤 했습니다. 저희는 즉시 수동으로 문제를 해결했지만, 이 과정에서 이러한 방식은 더 이상 용납될 수 없다고 판단했습니다.

마이그레이션은 꽤 순조로웠습니다. 일주일 정도 작업이 소요되었지만, V1이나 V2와 비교하면 정말 어려운 작업은 아니었습니다 🚀

Organizations v4 - 미래를 향하여

이 모든 노력을 쏟아부은 만큼, 이제는 잠시 다른 곳에 집중할 시간인 것 같습니다 😎

쉽지 않은 과정이었지만 많은 것을 배웠고, capgo에 매우 멋지고 중요한 기능이 추가되었습니다. 기존 레거시 함수를 제거하고, 웹앱 UX를 개선하며, 버그를 모니터링하는 작업이 남아있지만, 이 시스템의 구조 자체가 크게 바뀔 일은 없을 것입니다.


읽어주셔서 감사합니다 🚀

A brand new organization system 계속 읽기

사용 중이라면 새로운 조직 관리 시스템 대시보드 및 API 운영을 계획하려면, 이를 다음과 연결하세요 API 개요 구현 세부 사항은 API 개요에서 소개 구현 세부 사항은 소개에서 API 키 구현 세부 사항은 API 키에서 기기 구현 세부 사항은 기기에서, 그리고 번들 Bundles의 구현 세부 사항은

Capacitor 앱용 Live updates

웹 레이어 버그가 라이브 상태라면, 앱 스토어 승인을 며칠씩 기다리지 말고 Capgo를 통해 수정 사항을 배포하세요. 네이티브 변경 사항은 정상 리뷰 절차를 그대로 따르는 반면, 사용자는 백그라운드에서 업데이트를 받습니다.

블로그 최신 글

Capgo는 정말 프로페셔널한 모바일 앱을 만드는 데 필요한 최고의 인사이트를 제공합니다.