당신의 서비스가 확장하지 못하는 이유 - 통합 인가와 재사용성

인가는 더 이상 도메인 안에 있어선 안 됩니다
“인가 로직은 도메인 내부에 두지 않습니다. 우리는 인가를 하나의 플랫폼으로 분리합니다.”
flex가 전사 서비스를 확장 가능하게 만들기 위해 선택한 전략입니다. 이번 flexible 에서는 그 구조적 해답으로 선택한 ReBAC 기반 통합 인가 플랫폼과, 그 위에 쌓은 재사용 가능한 권한 구조를 소개했습니다.
서비스 안에 갇힌 인가, 어떻게 풀었을까
많은 팀들이 MSA를 도입하고 있지만, 인가는 여전히 각 서비스 내부에 머물러 있는 경우가 많습니다. 비즈니스 로직 곳곳에 흩어진 권한 체크는 재사용이 어렵고, 변경에도 취약하며, 테스트하기조차 복잡한 구조를 만듭니다. flex는 이 문제를 해결하기 위해 인가를 아예 도메인 바깥의 독립된 플랫폼으로 분리하는 방식을 선택했습니다.
우리는 ReBAC 기반의 OpenFGA를 활용해 인가 시스템을 구현하고, 각 도메인에서 위임받아 권한 판단을 수행하는 인가 서버를 구축했습니다. 권한 모델은 .fga 스키마로 정의해 버저닝하며 관리하고, Kafka 기반의 이벤트를 통해 도메인 상태와 권한 관계를 지속적으로 동기화하고 있습니다.
인가 플랫폼으로 얻은 변화들
인가를 구조적으로 분리한 결과, flex 내부에서는 인가 체크를 각 도메인에서 직접 구현할 필요가 없어졌습니다. Scoped access 같은 고급 권한 기능도 단일 시스템에서 일관되게 처리할 수 있게 되었고, UI나 API 등 다양한 계층에서도 동일한 방식으로 권한 판단이 가능해졌습니다. 기존 기능 코드도 재사용 가능한 공통 권한으로 추상화할 수 있어, 전체 시스템의 유지보수성과 확장성, 실험 속도가 모두 크게 향상되었습니다.
인가 시스템은 지금도 진화 중입니다
flex는 조직, 부서, 사용자 간의 복잡한 관계를 .fga 파일로 선언하고, Kafka 이벤트를 통해 수신한 데이터를 기반으로 OpenFGA에 저장해 인가 모델을 구성합니다. 모든 API 요청은 인가 서버에 권한 여부를 질의하며, 도메인은 그 결과에 따라 동작만 분기하면 되므로 인가 로직으로부터 완전히 자유로울 수 있습니다.
초기에는 단순한 관계 모델에서 출발했지만, scoped access 등 고급 권한 기능과 멀티 계층 구조를 유연하게 다루기 위해 인가 시스템은 지속적으로 진화해왔습니다.
이러한 구조적 접근은 단순한 속도 개선을 넘어, 유지보수성과 확장성, 실험 속도까지 고려한 설계 선택입니다. flex는 앞으로도 변화하는 요구에 맞춰 인가 플랫폼을 고도화해 나갈 예정입니다.
기술 설계를 넘어, 문화의 전환으로
이러한 접근은 단순한 설계 변경이 아닙니다. 이는 기술 문화의 전환에 가까우며, flex 플랫폼디비전은 팀 전체가 빠르게 실험하고 안전하게 확장할 수 있는 구조를 목표로 아키텍처를 설계하고 있습니 다.
기능이 추가되어도 권한 구조가 깨지지 않고, 정책이 바뀌더라도 각 서비스를 수정하지 않아도 되며, 전체 시스템의 복잡도는 낮추면서 속도는 유지될 수 있도록 설계합니다. 이러한 고민들은 결국 “팀의 난이 도를 낮추고 제품의 속도를 지키는 일”로 이어집니다.
구조를 바꾸면, 더 많은 조직을 품을 수 있습니다
flex는 사람과 조직 사이에서 발생하는 복잡한 문제를 기술로 해결합니다. 세상에는 수많은 조직이 존재하고, 각기 고유한 문화와 개성을 지니고 있기에, 우리는 구조부터 다르게 설계합니다.
아직 발견되지 않은 수많은 조직의 사용 방식을 품기 위해, 그리고 빠르게 변하는 환경 속에서도 유연하게 진화할 수 있도록 하기 위해 우리는 계속해서 구조를 고민합니다.
앞으로도 flexible을 통해, 변화에 유연하게 대응하는 우리의 여정을 지속적으로 공유하겠습니다. 다음 행사에서 또 뵙길 기대합니다.
플렉스팀과 함께하고 싶다면
flex는 아직도 성장 중입니다. 우리는 ReBAC/ABAC 기반 설계, OpenFGA 운영, 멀티 테넌시 구조와 같은 복잡한 문제를 기술적으로 풀어가고 있습니다.
권한 체크를 넘어서 구조적인 접근으로 문제를 풀고 싶은 Product Engineer, 도메인 간 권한 통합, scoped access, 분산 환경 속 consistency 문제에 깊이 있게 몰입하고 싶은 분이라면, 지금 플렉스팀에 합류해 주세요.
플렉스팀과 더 이야기 나눠보세요Product Engineer (Backend) 바로 지원하기