본문 바로가기

전체 글60

[Backend/API] DTO와 serializer로 응답 형식을 고정하는 방법 Backend 앱 API에서 DTO와 serializer로 응답 형식을 고정하는 방법Backend 앱 API를 만들 때 가장 편한 방식은 DB model을 그대로 JSON으로 반환하는 것입니다. 이게 처음에는 빠르고 단순해 보일지 몰라도 모바일 앱과 연결되는 API라면 이 방식은 금방 문제가 될 수 있습니다. DB 컬럼이 바뀌면 앱 응답도 같이 바뀌고, 내부 관리 필드가 앱에 노출될 위험도 커지기 때문입니다.이럴 때 DTO와 serializer를 사용하면 API 응답 형식을 고정할 수 있습니다. DTO는 앱에 내려줄 데이터 구조를 정의하고, serializer는 DB model이나 내부 객체를 DTO 형태의 배열 또는 JSON으로 바꾸는 역할을 합니다. 이렇게 분리하면 DB 구조와 앱 응답 계약을 나눌 .. 2026. 5. 20.
[Backend/CMS] 프로젝트에서 관리자 화면과 앱 API를 분리하는 기준 Backend/CMS 프로젝트를 만들다 보면 관리자 화면과 모바일 앱 API가 같은 데이터를 다루는 경우가 많습니다. 예를 들어 공지사항, 관광지 정보, 배너, 카테고리, 사용자 문의 같은 데이터는 관리자 CMS에서 등록하고 앱에서는 API로 조회하게 됩니다.처음에는 같은 controller나 같은 query를 재사용하고 싶어질 수 있습니다. 그렇지만 관리자 화면과 앱 API는 목적이 다릅니다. 관리자는 수정, 삭제, 내부 상태 확인이 필요하고, 앱은 공개 가능한 데이터만 안정적인 응답 형태로 받아야 합니다.이 차이를 분리하지 않으면 내부 필드가 앱에 노출되거나, 관리자 인증 기준이 API와 섞이는 문제가 생길 수 있습니다. 처음에는 같은 코드를 재사용하는 쪽이 빠르게 느껴지지만, 실제로 정리해보면 관리.. 2026. 5. 20.
[React Native] 통합 앱에서 딥링크와 푸시 클릭 라우팅을 프로파일별로 검증하는 방법 통합 앱에서 딥링크와 푸시 알림 클릭은 단순한 화면 이동 기능처럼 보일 수 있습니다. 하지만 여러 프로파일을 하나의 코드베이스에서 관리하다 보면 생각보다 조심해야 할 부분이 많습니다.어떤 앱에서는 지도 상세 화면이 열려야 하지만, 다른 앱에서는 지도 기능 자체가 없을 수 있습니다. 또 어떤 프로파일은 알림은 사용하지만 특정 상세 화면 접근은 막아야 할 수도 있습니다.이 때 딥링크 URL이나 푸시 payload를 그대로 navigation.navigate()에 넘기면 위험할 수 있습니다. payload에 들어온 route 이름이 현재 프로파일에서 허용되는지, 필요한 feature flag가 켜져 있는지, params 형식이 맞는지 반드시 확인해야 합니다. 처음에는 URL을 파싱해서 route로 바꾸는 정도.. 2026. 5. 20.
[React Native] 통합 앱에서 프로파일별 권한 요청 정책을 분리하는 방법 여러 프로파일을 하나의 코드베이스로 관리하면 앱마다 필요한 권한이 달라집니다. 어떤 앱은 지도 기능 때문에 위치 권한이 필요하고, 어떤 앱은 알림 기능만 필요할 수 있습니다. 또 어떤 프로파일은 카메라나 파일 접근이 전혀 필요하지 않을 수도 있습니다.이때 권한 요청을 공통 앱 시작 지점에서 한 번에 처리하면 사용자 경험이 나빠질 수 있습니다. 지도 기능이 없는 앱에서 위치 권한을 묻거나, 알림 기능이 꺼진 프로파일에서 알림 권한을 요청하면 사용자는 왜 필요한지 이해하기 어렵습니다. 심사나 운영 관점에서도 불필요한 권한 요청은 리스크가 됩니다.처음에는 권한 요청 코드를 공통 함수 하나로 만들어 앱 실행 시 호출하면 편하기야 하지만 실제로 적용해보면 권한은 기능 진입 시점과 연결해서 요청하는 편이 더 안전한.. 2026. 5. 20.
[React Native] 통합 앱에서 프로파일별 feature flag를 설계하는 방법 여러 프로파일을 통합앱에서 관리하다 보면 앱마다 켜야 하는 기능과 숨겨야 하는 기능이 달라집니다. 어떤 앱은 지도 기능이 필요하고, 어떤 앱은 알림만 필요할 수 있습니다. 또 어떤 앱은 설정 화면은 있지만 외부 링크 이동은 막아야 할 수도 있습니다.이때 feature flag를 사용하면 프로파일별 기능 노출 기준을 한 곳에서 관리할 수 있습니다. 처음에는 단순히 버튼을 보이게 하거나 숨기는 값 정도로 생각하기 쉽지만 실제로 정리해보면 기능 하나를 켜고 끄는 일은 UI, route guard, 권한 요청, 딥링크, 푸시 알림, 테스트 범위까지 함께 연결되는 문제였습니다.이번 글에서는 React Native 통합 앱에서 프로파일별 feature flag를 설계할 때 확인하면 좋은 기준을 정리해보겠습니다. 통.. 2026. 5. 20.
[React Native] 통합 앱에서 프로파일, controller, model을 조립하는 진입점 만들기 React Native 통합 앱에서 여러 프로파일을 하나의 코드베이스로 관리하다 보면 파일은 나눴는데, 실제 앱이 시작되는 지점에서 다시 복잡해지는 경우가 있습니다. profile registry, selectedProfiles, controller, model builder, route guard를 각각 만들었더라도 어디에서 어떤 순서로 조립할지 정하지 않으면 앱 진입점이 금방 지저분해지더라구요.처음에는 각 파일을 분리해두면 구조가 정리된 것처럼 보였는데 막상 앱 시작 흐름을 생각해보면 현재 프로파일을 찾고, controller를 고르고, route 접근 기준을 만들고, fallback 기준까지 연결해야 했습니다. 이 부분을 한 곳에서 정리하지 않으면 화면이나 네비게이션 코드가 다시 복잡해지는 것 같습.. 2026. 5. 20.