개발자
저는 저번 회사에서 인턴을 하면 리액트 장고로 웹 개발만 해본 경험이 있습니다. 이번에 앱을 만들어 보려고 하는데 개발 흐름 자체가 어떻게 되는지 궁금하여 고수님들께 조언을 구하고자 글을 씁니다. 저는 크로스 플랫폼으로 제작하려 해서 프론트는 리액트 네이티브로 만들고 백앤드는 똑같이 장고로 작업을 하려고 생각하고 있습니다. 그런데 여기서 의문점이 웹에서는 프론트, 리버스 프록시, 백앤드를 한꺼번에 한 파일에서 관리해서 서버에 올렸었는데 앱은 따로 플레이스토어나 앱스토어에 apk파일을 올려야하지 않습니까....? 그렇다면 앱에서 서버 데이터베이스 등을 이용하려면 백앤드만 따로 아마존 ec2같은 서버에 배포해 놓는 걸까요? 되도록이면 파이어베이스는 알람 기능 구현에만 사용하고 서버 쪽을 직접 짜보려고 합니다. 제가 이해한 바로는 apk파일에는 리액트네이티브(프론트)와 장고(백)을 빌드한 파일이 들어가고, 서버는 또 따로 장고 등을 사용해서 만들어서 ec2 등에 배포해서 그 둘이 통신하는 구조가 맞을까요? 도움 주시면 열심히 경청하도록 하겠습니다. 감사합니다 :) 다들 좋은 연말 되세요!
답변 1
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 12월 19일
웹과 앱의 개발 흐름은 비슷하지만 몇 가지 핵심 차이점이 있습니다. 웹에서는 클라이언트와 서버가 동일한 파일에서 관리될 수 있지만, 모바일 앱 개발에서는 일반적으로 클라이언트(앱)와 서버를 별도로 관리하게 됩니다. React Native를 사용해서 앱을 만든다면, JavaScript로 작성된 코드는 사용자의 기기에 APK 혹은 IPA 파일 형태로 배포됩니다. 이것은 애플리케이션의 '클라이언트' 부분에 해당합니다. React Native는 JS 코드를 네이티브 코드로 변환해주며, 이렇게 만들어진 애플리케이션을 Google Play Store나 Apple App Store에 배포할 수 있습니다. 서버 측면에서 Django를 사용한다면, 웹서버(Amazon EC2 등)에 이 백엔드 코드를 배포하게 됩니다. Django 백엔드는 데이터베이스와 같은 리소스를 관리하고, 클라이언트 요청(API 호출 등)을 처리하는 역할을 합니다. 즉, 단말기(안드로이드나 iOS 기기)에서 실행되는 React Native 앱과 웹 서버에서 실행되는 Django 서버 사이에 데이터 교환이 이루어집니다. 이 때 주로 HTTP(S) 기반의 REST API나 GraphQL 등을 통해 앱-서버 간에 데이터를 주고 받습니다. 따라서, 당신이 이해하신 것이 맞습니다. APK 파일에는 React Native로 개발한 프론트엔드 코드가 빌드되어 들어가고, EC2 등의 새로운 서버에서 Django 백엔드가 동작하게 됩니다. 사용자의 요청은 이 둘 사이에서 주고받아집니다. 저는 파이어베이스를 메시지를 보내거나 연결 유지와 같은 추가기능으로 활용하는 것이 좋다고 생각합니다. 물론 그 외에도 인증, 실시간 데이터베이스 등 다른 기능을 사용하는 것도 고려해보세요. 하지만 전체적인 서버 로직을 직접 구현하고 싶다면 Django와 같은 백엔드 프레임워크를 활용하는 것도 좋은 선택입니다. 마지막으로, 배포 과정 중 발생할 수 있는 보안 관련 이슈에 대해서도 충분히 고민해보시길 권장합니다. HTTPS, JWT 토큰 등 보안 관련 기술을 활용하여 사용자 데이터의 안전성을 최대한 확보할수록 좋습니다. 다시 한번 강조하자면, 웹 개발에 경험이 있다면 모바일 앱 개발도 충분히 해낼 수 있습니다. 새로운 기술을 배우는 과정이 힘들수록 배움의 보람도 크니까요! 행운을 빕니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!