소개
안녕하세요, 저는 WcaleNieWolny - Capgo의 리드 소프트웨어 엔지니어입니다.
지난 8개월 동안, 저는 __CAPGO_KEEP_0__의 조직 시스템을 개발해 왔습니다. 4월 14일 현재, 저는 시스템이 완성되었다는 것을 기쁘게 알리게 되었습니다. 🎉 🎊 8개월이 지난 후에야 __CAPGO_KEEP_0__의 모든 부분이 조직 구성원에게 접근할 수 있습니다. 이에는: 8개월 동안, 저는 __CAPGO_KEEP_0__의 조직 시스템을 개발해 왔습니다. 4월 14일 현재, 저는 시스템이 완성되었다는 것을 기쁘게 알리게 되었습니다. 🎉 🎊
8개월이 지난 후에야 Capgo의 모든 부분이 조직 구성원에게 접근할 수 있습니다. 이에는:
- 앱
- 통계
- 결제
- 전체 CLI 지원
- 그리고 더 많은 기능이 있습니다!
여기까지 오르기 위해 많은 노력을 기울였습니다. 시스템의 3대 개정판이 있었고, 그 과정에서 많은 어려움을 겪었습니다.
Organizations v1
시작은 어려웠습니다. 프로젝트에 합류한 지 2주 만에 이 프로젝트에 착수했습니다. 당시에는 코드베이스에 대한 지식이 거의 없고, 이 프로젝트를 구현하는 큰 아이디어도 없었습니다.
이로 인해 가장 간단한 앱, 채널, 버전만 접근할 수 있는 가장 간단한 해결책을 구현했습니다. 심지어 초대된 사용자는 통계를 볼 수조차 없었습니다.
And then I waited for Martin to review this. I waited and waited, but nothing really happened. 3 months later, I decided to come back to this and fix all the merge conflicts. I also decided to test, which turned out to be a great idea. To no surprise, the hacky solution completely failed. At that moment, I decided to fix all bugs and write an extensive E2E test. I had to work with very broken code and a lot of bad decisions made by the past me, but after 2 hard weeks, I finally got it to function.
That does not, however, mean that it was perfect. The owner of the organization still had a lot more access than even the highest invited user. User experience also was quite lacking. The invited user could not even see the application statistics, manage billing, and the CLI was limited to upload only.
그러나, 완벽한 것은 아니었습니다. 조직의 소유자는 초대된 사용자보다도 더 많은 권한을 가지고 있었고, 사용자 경험도 매우 부족했습니다. 초대된 사용자는 앱 통계를 볼 수조차 없었습니다. 결제를 관리할 수조차 없었습니다. __CAPGO_KEEP_0__도 업로드만 가능했습니다.Only.
조직 v2
어떤 어려움에도 불구하고 조직 시스템은 잘 작동하고 있었다. 사용자는 그것을 사용하고, 그것은 프로젝트 전체를 앞서가게 했다. 그러나, 나는 여전히 해야 할 일들이 있었다.
- __CAPGO_KEEP_0__의 난장치를 고치기 행 단위 보안
- CLI에 대한 전체 지원을 추가하기
- 관리자 사용자가 소유자와 동일한 접근 권한을 가질 수 있도록 보장하기
이후 마틴과 많은 토론을 거쳐 code의 보안 규칙을 다시 작성하고, 모든 리소스 소유권을 조직으로 옮기는 것이 가장 좋은 방법이라고 결정했다.
이것은 새로운 조직 시스템과 더 쉽게 통합할 수 있도록 해주고, 또한 많은 code의 유산을 제거할 수 있었다.
__CAPGO_KEEP_0__를 작성하는 것은 매우 지루했지만, 1주半 만에 전체 마이그레이션을 준비했다.
이번에는 __CAPGO_KEEP_0__를 작성하지 않기로 결정했기 때문에, 우리는 수동으로 테스트해야 했다. 마틴과 나는 3번의 매우详尽한 통화를 통해, 결국 프로덕션에 푸시하고 잘 될 것이라는 희망을 가지고야 했다 😅
급히 연락하고, 몇 가지 변경 사항을 프로덕션으로 푸시하고, 잠에 들었습니다. 불행히도, 내 변경 사항은 더 많은 문제를만들었습니다 😰
내가 잠에서 깨자, 사용자가 많은 빈 조직이 있었다. 이것은 사용자가 1개의 조직만 허용되어야 하는데, 발생하지 않아야 하는 일이다. duplicated, 빈 orgs를 모두 제거하는 데 시간이 걸렸지만, 그 외에는 변경 사항이 비교적MOOTH하게 진행되었다.
조직 v3
이것조차도 충분하지 않았다. 아직도 하나의 거대한 구성 요소가 빠져있었다 - 청구.
현재는 오너만 청구를 관리할 수 있었다. 이것은 사용자가 조직을 구매한 것으로 생각했지만, 실제로는 조직에 구매한 것이었다는 문제가 발생했다. 이 문제를 수동으로 수정하고, 이 문제가 불가피하다고 판단한 것이었다.
이번 마이그레이션은 비교적 smooth하게 진행되었다. 1주일의 노력이었지만, V1과 V2에 비해 정말로 어려운 것이 아니었다 🚀
조직 v4 - 미래
이 모든 어려운 노력 끝에, 이제는 다른 것에 집중할 시간이 된 것 같다 😎
쉽지 않았지만, capgo는 매우 중요한 기능을 받았다 이제는 아직도 레거시 함수를 deprecated하고, 웹 앱 사용자 경험을 개선하고, 버그를 모니터링해야 하지만, 이 시스템에 대한 주요 변경 사항은 없을 것 같다.
읽어주셔서 감사합니다 🚀
A brand new organization system에서 계속하세요
이미 사용 중이라면 새로운 조직 시스템 대시보드와 API 운영을 계획하고 연결하는 데 사용하는 API 개요 API 개요의 구현 세부 정보에 대해 소개 소개의 구현 세부 정보에 대해 API 키 API 키의 구현 세부 정보에 대해 기기 기기의 구현 세부 정보에 대해 패키지 패키지의 구현 세부 정보에 대해