소개
안녕하세요, 저는 WcaleNieWolny - Capgo의 리드 소프트웨어 엔지니어입니다.
지난 8개월 동안, 저는 조직 시스템을 개발해 왔습니다. 그리고 4월 14일부터는 시스템이 완료되었습니다 🎉 🎊
마침내, 8개월 만에 Capgo의 모든 부분이 조직 구성원에게 접근할 수 있습니다. 이에는:
- 앱
- statistic
- billing
- 전체 CLI 지원
- 그리고 더 많은 것들이 있습니다!
여기까지 오기에는 쉽지 않았습니다. 시스템의 3대 주요 개정까지 거쳤습니다.
Organizations v1
시작은 어려웠습니다... 프로젝트에 합류한 2주 후에 이 작업을 시작했습니다. 당시에는 코드베이스에 대한 지식이 거의 없었습니다. 큰 아이디어도 없었기 때문에.
이것은 앱, 채널, 버전만 접근할 수 있는 가장 비정상적인 해결책을 구현하게 만들었습니다. 초대된 사용자가 통계를 볼 수 없었습니다.
그런 다음 마틴이 이 코드를 검토하라고 기다렸습니다. 기다리다 기다리다, 그러나 아무런 변화도 없었다. 3개월 후에, 이 코드를 다시 고치기로 결정했습니다. 또한 테스트를 하기로 결정했습니다. 그러나 테스트 결과, 비정상적인 해결책은 완전히 실패했습니다. 그 순간, 모든 버그를 고치고 E2E 테스트를 작성하기로 결정했습니다. 과거의 나의 많은 잘못된 결정과 함께, 매우 깨진 code와 함께 2주간의 어려운 작업을 거쳐야 했습니다. 그러나 결국에는 작동되었습니다.
그러나 완벽하지는 않았습니다. 조직의 소유자는 초대된 사용자보다도 더 많은 접근 권한을 가지고 있었고, 사용자 경험도 매우 부족했습니다. 초대된 사용자는 애플리케이션 통계를 볼 수 없었습니다. billing을 관리할 수 없었습니다. CLI는 업로드만 가능했습니다.
그러나 이러한 모든 어려움에도 불구하고, 마틴은 PR을 검토하고, 1주 후에 프로덕션에 푸시되었습니다.
Organizations v2
프로젝트 전체가 앞으로 나아가기 위해 사용자가 시스템을 사용하고 있었지만, 여전히 많은 어려움을 겪고 있었기 때문에 조직 시스템은 어느 정도 잘 작동하고 있었다. 사용자가 시스템을 사용하고 있었고, 프로젝트 전체가 앞으로 나아가고 있었지만, 여전히 나는:
- fix the mess made in row level security
- CLI에 대한 전체 지원을 추가합니다.
- 관리자 사용자에게 동일한 접근 권한을 보장하십시오.
After 많은 토론 Martin과 함께 우리는 앞으로 나아가기 위해 가장 좋은 방법이 전체 보안 규칙을 다시 작성하고 사용자 대신 조직에 리소스 소유권을 이동하는 것이었다. 이 방법은 새로운 조직 시스템과 더 쉽게 통합할 수 있도록 해주고, 또한 많은 전통적인 code를 제거할 수 있었다.
새로운 RLS code을 작성하는 것은 매우 지루했지만, 일주일 반만에 전체 마이그레이션은 준비되었다.
이번에는 E2E 테스트를 작성하지 않고, 직접 테스트를 해야했습니다. 마틴과 함께 3번이나 긴 회의를 하면서, 결국 프로덕션에 푸시하고 잘 될 거라고 믿었습니다.
사용자 등록이 깨졌다는 걸 알게 되었습니다. 새로운 사용자는 계정을 만들 수 없었습니다.
빠른 긴급 전화 후에 나는 프로덕션에 몇 가지 변경 사항을 빠르게 푸시하고 잠에 들었다. 그러나 나의 변경 사항은 더 많은 문제만 만들었다.
아침에 일어나서 사용자가 많은 빈 조직이 발견되었습니다. 이건 사용자당 1개의 조직만 허용되어야 하는데 발생하지 않아야 하는 일입니다. 모든 중복된 빈 조직을 제거하기 위해 몇 시간 동안 브레인스토밍을 하였지만, 그 외의 변경은 비교적MOOTH하게 진행되었습니다.
조직 v3
이것도 충분하지 않았습니다. 아직까지 대단한 컴포넌트가 누락되어있었습니다 - 청구.
현재까지는 소유주만 청구를 관리할 수있었습니다. 이것은 사용자가 조직을 구매한 것으로 생각했지만 실제로는 사용자 자신이 구매한 것으로 생각하는 문제를 발생시켰습니다. 이 문제를 수동으로 수정하였고, 이때 우리는 이 문제가 불가피한 문제라고 결심하였습니다.
이전 버전과 비교하여 이 마이그레이션은 비교적MOOTH하게 진행되었습니다. 1주일의 노력만 필요하였습니다.
조직 v4 - 미래
이제는 더이상 힘들게 할 필요가 없다고 생각합니다.
It was not easy but I learned a lot and capgo has received a very nice and important feature I still have to deprecate the legacy functions, improve the webapp user experience, monitor for bugs, but there should not be any major changes to this system.
A brand new organization system으로 계속 가세요.
현재 사용중인 경우
새로운 조직 시스템 새로운 조직 시스템 계획 대시보드와 API 운영을 계획하고 API 개요 API Overview에 대한 구현 세부 정보 소개 소개에 대한 구현 세부 정보 API 키 API Keys에 대한 구현 세부 정보 장치 for the Devices implementation detail and Bundles 패키지