레이블이 Feature Flag인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Feature Flag인 게시물을 표시합니다. 모든 게시물 표시

2026년 7월 17일 금요일

프로필별 권한 로직을 공통 레이어로 모으는 방법

화면마다 흩어진 권한 분기를 정책 레이어로 옮겨 변경 범위와 테스트 비용을 줄이는 설계 원칙을 정리합니다. 복잡한 기능 이름보다 먼저 확인할 것은 ‘주체’입니다. 로그인 사용자, 역할, 조직, 구독 상태처럼 권한 판단에 필요한 값을 작은 컨텍스트로 정리합니다. 화면이 저장소를 직접 조회하지 않게 합니다.

이 글의 범위
실제 경험이나 측정 결과를 가정하지 않고, 공식 문서로 확인 가능한 개념과 적용 순서를 일반 가이드로 설명합니다. 제품 버전과 서비스 정책은 바뀔 수 있으므로 적용 전 연결된 공식 문서를 다시 확인하세요.

판단의 출발점

공통 권한 레이어의 목적은 조건문을 한 파일로 옮기는 것이 아니라 정책 입력과 결정을 명확히 만드는 데 있습니다. ‘주체’에서 시작해 ‘대상’와의 경계를 정하면 구현할 범위와 실패했을 때 확인할 지점을 구분하기 쉬워집니다.

권한 정책 레이어에 모을 정보

주체

로그인 사용자, 역할, 조직, 구독 상태처럼 권한 판단에 필요한 값을 작은 컨텍스트로 정리합니다. 화면이 저장소를 직접 조회하지 않게 합니다.

대상

화면 이름보다 viewReport, editProfile처럼 기능 행위를 기준으로 권한을 정의하면 UI가 바뀌어도 정책을 재사용하기 쉽습니다.

환경

프로필, 지역, 점검 상태, 기능 플래그처럼 사용자 밖의 조건을 별도 입력으로 둡니다. 역할만으로 모든 예외를 표현하지 않습니다.

결정

허용 여부와 함께 이유 코드를 반환합니다. 로그인 필요, 기능 미제공, 권한 부족을 구분해야 안내 화면과 운영 로그가 정확해집니다.

기본 거부

알 수 없는 기능이나 누락된 컨텍스트를 임의로 허용하지 않습니다. 안전한 기본값을 쓰고 정상 경로에서 누락이 생기면 테스트가 실패하게 합니다.

프로필별 권한 로직을 공통 레이어로 모으는 방법 핵심 판단 흐름 설명용 개념도

그림 1. 프로필별 권한 로직을 공통 레이어로 모으는 방법의 핵심 판단 순서를 정리한 설명용 개념도입니다. 실제 서비스 화면, 운영 로그 또는 측정 결과가 아닙니다.

중앙화가 실패하는 경우

  • 거대한 한 함수에 모든 제품 규칙을 넣기
  • UI 표시 여부와 서버 권한을 같은 것으로 믿기
  • 권한 실패를 일반 네트워크 오류로 처리하기
  • 클라이언트 Guard만으로 민감한 API를 보호했다고 판단하기

화면 조건문을 정책으로 옮기는 순서

  1. 화면별 조건문을 기능 행위와 상태 입력으로 분해합니다.
  2. 중복 규칙을 하나의 정책 함수로 합칩니다.
  3. 정책 결과에 이유 코드와 선택 가능한 대체 행동을 정의합니다.
  4. 화면은 결과를 렌더링하고 정책 결정은 수정하지 않게 합니다.
  5. 프로필·역할·상태의 경계값을 표 기반 테스트로 고정합니다.

운영 전 빠른 점검

확인 항목질문
첫 기준: 주체변경 전에 전제와 목적을 확인했는가?
분리 대상: 대상다른 책임과 섞이지 않게 경계를 정했는가?
피할 패턴: 거대한 한 함수에 모든 제품 규칙을 넣기본문에서 경고한 패턴이 남아 있지 않은가?
오류와 복구정상 경로뿐 아니라 실패와 되돌리기도 확인했는가?

마무리

공통 권한 레이어의 목적은 조건문을 한 파일로 옮기는 것이 아니라 정책 입력과 결정을 명확히 만드는 데 있습니다. 클라이언트는 일관된 UX를 제공하고, 실제 데이터 권한은 서버에서도 같은 원칙으로 검증해야 합니다.


참고한 공식 문서

React Native 멀티 프로필 앱 구조를 한 문서로 설계하는 방법

Profile Registry와 기능 플래그, 권한, 빌드 대상, 초기 라우팅을 하나의 구조로 연결해 설계하는 기준을 정리합니다. 이 주제를 이해할 때 첫 기준은 ‘Profile Registry’입니다. 프로필 ID와 표시 이름, 허용 기능, 시작 경로처럼 제품을 식별하는 최소 설정을 한곳에 둡니다. 화면 컴포넌트가 브랜드 이름을 직접 비교하지 않게 하는 것이 핵심입니다.

이 글의 범위
실제 경험이나 측정 결과를 가정하지 않고, 공식 문서로 확인 가능한 개념과 적용 순서를 일반 가이드로 설명합니다. 제품 버전과 서비스 정책은 바뀔 수 있으므로 적용 전 연결된 공식 문서를 다시 확인하세요.

먼저 구분할 핵심

멀티 프로필 앱은 여러 조건문의 묶음이 아니라 제품 정의, 기능, 권한, 빌드, 라우팅을 연결한 구조입니다. ‘Profile Registry’에서 시작해 ‘기능 플래그’와의 경계를 정하면 구현할 범위와 실패했을 때 확인할 지점을 구분하기 쉬워집니다.

React Native 멀티 프로필 앱 구조를 한 문서로 설계하는 방법 핵심 판단 흐름 설명용 개념도

그림 1. React Native 멀티 프로필 앱 구조를 한 문서로 설계하는 방법의 핵심 판단 순서를 정리한 설명용 개념도입니다. 실제 서비스 화면, 운영 로그 또는 측정 결과가 아닙니다.

하나의 구조도로 연결해야 할 다섯 영역

Profile Registry

프로필 ID와 표시 이름, 허용 기능, 시작 경로처럼 제품을 식별하는 최소 설정을 한곳에 둡니다. 화면 컴포넌트가 브랜드 이름을 직접 비교하지 않게 하는 것이 핵심입니다.

기능 플래그

기능 제공 여부는 프로필 정의와 연결하되 화면 곳곳의 조건문으로 흩어지지 않게 합니다. 기본값과 알 수 없는 프로필의 처리도 명시해야 합니다.

권한 정책

기능이 존재하는지와 사용자가 지금 접근할 수 있는지는 다른 판단입니다. 역할, 로그인 상태, 지역 제한은 별도 정책 레이어가 결정합니다.

빌드 대상

한 번의 배포에 포함할 프로필 목록을 명시적 설정으로 관리합니다. 프로필 리소스와 네이티브 설정이 실제 빌드에 포함됐는지 CI에서 검사합니다.

초기 라우팅

딥링크와 푸시, 기본 시작 화면을 동일한 라우트 규칙으로 정규화합니다. 프로필을 먼저 확정한 뒤 접근 정책을 통과한 경로만 엽니다.

설계 문서를 만드는 순서

  1. 현재 코드의 프로필 조건문과 브랜드별 리소스를 모두 찾습니다.
  2. 공통 기능과 프로필별 기능, 사용자 권한 조건을 서로 다른 표로 분리합니다.
  3. Registry를 단일 출처로 정하고 화면은 프로필 객체만 전달받게 합니다.
  4. 빌드 설정과 런타임 설정 사이의 불일치를 실패 처리하는 검사를 만듭니다.
  5. 프로필별 시작·딥링크·권한 거절 시나리오를 같은 테스트 표에 넣습니다.

멀티 프로필 구조를 약하게 만드는 패턴

  • 화면마다 profileId 문자열을 직접 비교하기
  • 빌드 제외와 런타임 숨김을 같은 기능으로 취급하기
  • 공통 코드에 브랜드별 예외를 계속 추가하기
  • 알 수 없는 프로필이 들어왔을 때 임의의 기본 프로필로 열기

적용 전 마지막 점검

확인 항목질문
첫 기준: Profile Registry변경 전에 전제와 목적을 확인했는가?
분리 대상: 기능 플래그다른 책임과 섞이지 않게 경계를 정했는가?
피할 패턴: 화면마다 profileId 문자열을 직접 비교하기본문에서 경고한 패턴이 남아 있지 않은가?
오류와 복구정상 경로뿐 아니라 실패와 되돌리기도 확인했는가?

정리

멀티 프로필 앱은 여러 조건문의 묶음이 아니라 제품 정의, 기능, 권한, 빌드, 라우팅을 연결한 구조입니다. 각 책임을 분리한 뒤 Registry로 연결하면 새 프로필을 추가할 때 영향 범위를 예측할 수 있습니다.


참고한 공식 문서

데이터 디렉터리 페이지를 저가치 콘텐츠로 만들지 않는 법

시설명과 주소 나열을 넘어 선택 기준과 비교, 데이터 한계와 확인일을 제공하는 리포트형 편집 방법을 설명합니다. 설정부터 시작하기 전에 ‘명확한 질문’을 분리해서 봐야 합니다. 지역 시설 전체를 보여 주는 이유를 사용자의 질문으로 바꿉니다. 예를...