분류 전체보기60 [API 개발] DB Model을 그대로 반환하면 안 되는 이유 (DTO와 Serializer로 응답 계약 고정하기) 웹이랑 모바일 앱, 서버까지 이래저래 같이 잡고 운영하다 보면 API 응답 구조 때문에 꼭 한 번씩 골치 아픈 일이 생깁니다.처음 API 만들 때는 그냥 DB에서 조회한 모델(Model) 객체를 그대로 JSON으로 던지는 게 가장 편합니다. 코드 한두 줄이면 끝나고 개발 속도도 엄청 빠르니까요. 저도 예전에는 초기 빌드할 때 종종 그렇게 고집을 부렸습니다.하지만 모바일 앱과 연동되는 API라면 이 방식은 머지않아 시한폭탄이 됩니다. DB 컬럼 하나 바꿨다고 이미 배포된 앱이 죽어버리거나, 관리자용 내부 메모 같은 민감한 필드가 앱 패킷에 그대로 노출되는 사고가 터지기 때문입니다.자꾸 까먹기도 하고, 다음 프로젝트에서 실수하지 않기 위해 DTO와 Serializer를 활용해 API 응답 형식을 안전하게 고.. 2026. 5. 20. [백엔드 설계] 관리자 CMS와 모바일 앱 API 코드를 처음부터 분리해야 하는 이유 웹이랑 앱, 서버를 같이 만지며 운영하다 보면 꼭 마주치는 상황이 있습니다. 바로 공지사항, 관광지 정보, 배너, 카테고리 같은 데이터를 관리자 CMS에서 등록하고, 모바일 앱에서 API로 조회해서 보여주는 구조입니다.처음에는 "어차피 똑같은 DB 데이터 긁어다 쓰는 건데 대충 같이 쓰면 안 되나?" 하고 Controller나 Query를 같이 재사용하고 싶어집니다. 코드가 줄어드니까 처음엔 속도가 빠른 것처럼 느껴지거든요. 하지만 이거 귀찮다고 대충 섞어 쓰면 나중에 운영 중에 무조건 사고가 터지거나 고치느라 고생하게 됩니다.관리자는 수정, 삭제, 내부 메모나 검수 상태 확인이 필요하지만, 앱은 외부 사용자가 보는 거라 공개 가능한 데이터만 안정적인 형태로 받아야 하기 때문입니다. 저도 자꾸 까먹고 실.. 2026. 5. 20. React Native 통합 앱에서 프로파일별 딥링크와 푸시 라우팅 안전하게 검증하기 하나의 코드베이스로 여러 브랜디드 앱이나 프로파일을 빌드하는 통합 앱을 운영하다 보면, 딥링크와 푸시 알림 처리가 생각보다 까다로워집니다. 어떤 앱(프로파일)에서는 지도 상세 화면이 잘 열려야 하지만, 다른 앱에서는 지도 기능 자체가 아예 빠져 있을 수 있기 때문입니다.저의 경우도 처음에는 단순히 외부 URL을 파싱해서 화면 이동만 시켜주면 끝날 줄 알았는데, 이래저래 운영을 하다 보니 특정 프로파일에서 열리면 안 되는 화면이 열리거나 params 타입이 안 맞아 앱이 뻗는 문제가 발생하곤 했습니다.외부에서 들어오는 값은 언제든 바뀔 수 있고 오류가 섞이기 쉽기 때문에, 무작정 navigation.navigate()에 던지면 위험합니다. 나중에 또 까먹을까 봐 안전하게 라우팅을 검증하는 흐름을 정리해 둡.. 2026. 5. 20. React Native 통합 앱 프로파일별로 단말기 권한 분리해서 요청하기 하나의 코드베이스로 여러 개의 앱 프로파일을 분리해서 빌드하다 보면 꼭 권한 문제가 발목을 잡습니다. 어떤 앱은 지도가 들어가서 위치 권한이 필요한데, 어떤 앱은 알림 기능만 있으면 되거든요.처음에는 귀찮아서 공통 초기화 함수 하나 만들고 앱 켤 때 필요한 권한을 한꺼번에 다 띄우도록 짜놓기 쉽습니다. 저도 처음엔 그렇게 편하게 가려 했습니다. 하지만 실제로 앱을 운영하고 스토어 심사를 넣다 보면 바로 문제가 터집니다. 지도가 없는 앱인데 위치 권한을 물어보니 사용자는 당황하고, 구글이나 애플 심사에서도 불필요한 권한 요구로 리젝트 먹기 딱 좋습니다.나중에 제가 다시 보거나 작업할 때 까먹지 않으려고, 기능 플래그(Feature Flag)와 권한 정책(Permission Policy)을 분리하고 기능 진.. 2026. 5. 20. [React Native] 통합 앱 프로파일별 Feature Flag 설계 기법 (딥링크, 권한 처리 오류 막기) 하나의 코드 베이스로 여러 프로파일의 앱을 묶어서 운영하다 보면, 앱마다 기능을 다르게 켜고 꺼야 할 때가 많습니다. 어떤 앱은 지도가 들어가고, 어떤 앱은 단순 공지사항 알림판 역할만 하기도 하죠.처음에는 단순히 화면에서 버튼 하나 숨기면 끝날 줄 알았는데, 이래저래 운영하다 보니 UI만 막는다고 해결될 일이 아니었습니다. 메뉴에서는 숨겼는데 딥링크로 뚫고 들어오거나, 쓰지도 않는 위치 권한 팝업이 갑자기 뜨는 등 신경 쓸 게 한두 가지가 아니더군요.나중에 제가 또 까먹지 않으려고, 실무에서 놓치기 쉬운 통합 앱 Feature Flag 설계 기준을 코드로 정리해 둡니다.UI만 숨기면 터지는 문제들Feature Flag 기준이 흐트러지면 운영 중에 아래와 같은 귀찮은 일들이 터집니다.메뉴에서는 숨겼는데,.. 2026. 5. 20. React Native 통합 앱 여러 프로파일 진입점 복잡할 때 정리하는 방법 (Composition Layer) 이래저래 React Native로 통합 앱을 운영하다 보면, 하나의 코드베이스에서 여러 프로파일(브랜드별 또는 업체별 앱)을 관리해야 할 때가 있습니다. 프로파일별로 파일은 잘 나눠놨는데, 막상 앱이 시작되는 진입점(App.tsx 등)에서 코드가 다시 복잡해지더군요.저의 경우도 처음에는 파일만 분리해두면 구조가 다 정리된 줄 알았습니다. 그런데 막상 앱 시작 흐름을 짜다 보니 현재 프로파일 조회하고, 컨트롤러 고르고, 라우트 접근 기준 체크하고, 예외 처리(Fallback)까지 연결하느라 진입점 코드가 금방 지저분해졌습니다.이 부분을 한 곳에서 정리하지 않으면 화면이나 네비게이션 코드가 다시 복잡해집니다. 자꾸 까먹어서 나중에도 바로 참고하려고 정리해 둡니다.내가 겪은 문제 (조립 진입점이 없을 때)시작.. 2026. 5. 20. 이전 1 2 3 4 5 6 7 ··· 10 다음