Inflearn brand logo image

인프런 커뮤니티 질문&답변

jaesung님의 프로필 이미지
jaesung

작성한 질문수

350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법

클라이언트를 안드로이드만 하는 이유

앱 다작 관련해서 질문드립니다.

해결된 질문

작성

·

142

0

안녕하세요!

다작 관련된 부분 수강 중에 추가로 노하우 궁금한 점이 있어 문의드립니다.

회원 관리는 어떻게 하는지 아래 사항들이 궁금합니다.

  1. 회원들이 가입해서 사용하는 서비스들도 하시는것같은데, SNS 로그인 등 외부 api를 사용해서 하는지 궁금합니다.
    (하신다면 효율적으로 어떻게 관리하는지, 안하신다면 어떤 식으로 가입시키는지)

  2. 회원들의 데이터들도 전부 한 DB를 사용해서 하는지 궁금합니다.
    (각 서비스별 디비 칼럼이 다 다를것같아요)

  3. DB를 하나로 300개 이상의 앱을 했을 때 회원 테이블은 어떻게 구분해서 사용하는지 궁금합니다.

     

답변 2

1

프로그래밍좀비님의 프로필 이미지
프로그래밍좀비
지식공유자

안녕하세요~! 관련 내용 답변 드리겠습니다.

 

  1. 저의 경우 회원가입을 둔 서비스의 경우 많은 비중이 구글 로그인으로 이루어져있고, 간혹 카카오톡 로그인도 제공하고 있습니다. 실제 구현은 아래 문서를 참고해보시면 좋을것 같습니다. 공식 문서에도 충분히 잘 설명되어있기 때문에 그대로 따라만 해도 구현에는 큰 어려움이 없을거라 생각됩니다.

    1. Google OAuth - https://developers.google.com/identity/protocols/oauth2?hl=ko

    2. Kakao 로그인 - https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api

  • 별도의 user 테이블을 만들고, 로그인 이후 나온 고유 키값과 app_id(앱마다 고유 값)을 함께 묶어서 유저 테이블에서 관리하고 있습니다.

  • 현재 회원 가입이 필요한 서비스의 비중은 그리 높지는 않습니다. 저의 경우 회원가입이 필요한 경우 커뮤니티 기능이 있는 경우가 많은데, 커뮤니티 기능이 있다는것은 분명 리텐션(앱 재방문)에 좋은 요소이긴 하나, 앱이 많아지거나 사용자가 증가할수록 관리 포인트 또한 늘어나게 됩니다.

  • 잘 발생되진 않지만, 커뮤니티에 악의적인 욕설이나 선정적인 내용을 유저가 올리게 되고 만약 이를 관리하지 않을시, 사용자가 구글에 신고하거나 구글의 검수에 걸리게 되면 앱이 삭제 또는 정지 당할 수도 있습니다.

  1. 회원들도 하나의 테이블에서 관리합니다.(1번 답변에서 다뤘듯이, app_id 값을 함께 저장하면 됩니다.)

  2. 아래는 제가 관리하고 있는 테이블 일부를 발췌하여 가져온 것입니다.

CREATE TABLE `user` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `app_id` bigint NOT NULL, # 앱마다 고유 값
  `auth_id` varchar(255) DEFAULT NULL, # OAuth 로그인 이후 발급받은 고유 키 값
  `image_thumbnail_url` varchar(255) DEFAULT NULL, # 유저 썸네일
  `name` varchar(20) DEFAULT NULL, # 닉네임
  `role` varchar(30) DEFAULT NULL, # ADMIN, NORMAL, etc..
  `sign_up_type` varchar(30) DEFAULT NULL, # GOOGLE, APPLE, EMAIL, etc..
  `created_date` datetime DEFAULT NULL,
  `updated_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uni_user_1` (`app_id`,`auth_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

만약 해당 유저가 특정 게시판에 글을 작성한다면 위에서 생성된 user의 userid와 appId값을 아래 community 테이블에 함께 넣어주면 되겠죠. 이렇게 되면 앱이 300개가 아닌 3,000개라도 두개의 테이블로만으로도 게시판과 회원을 관리할 수 있습니다. (인덱스나, 연관관계 같은 부분들은 생략되었습니다. )

CREATE TABLE `community` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `app_id` bigint NOT NULL, # 앱 고유 ID
  `user_id` bigint DEFAULT NULL, # 특정 유저 ID
  `content` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL, # 내용
  `is_active` bit(1) NOT NULL, # 삭제 여부
  `menu_id` bigint NOT NULL, # 어느 게시판인지 구분자
  `title` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL, # 게시판 타이틀
  `created_date` datetime DEFAULT NULL,
  `updated_date` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

답변이 도움이 되셨길 바래요! 추가 적인 궁금한 사항있으시면 언제든 질문주세요 🙂

1

안녕하세요, 인프런 AI 인턴입니다. jaesung님.

앱 다작 관련하여 회원 관리에 대한 질문을 주셨군요. 여러 앱을 동시에 운영하면서 회원 관리와 관련된 고민은 많은 개발자들이 겪는 문제입니다. 아래에서 관련된 내용을 간단히 설명드리겠습니다.

1. SNS 로그인 및 회원 가입 관리

  • SNS 로그인 활용: SNS 로그인은 회원 가입 프로세스를 단순화하고, 사용자 편의성을 높이는 데 큰 도움이 됩니다. 일반적으로 Facebook, Google과 같은 외부 API를 활용할 수 있습니다. 이를 사용하면 이용자의 기본 정보를 쉽게 연동할 수 있으며, 보안적인 측면에서 사용자의 신뢰를 얻을 수 있습니다.

  • 회원 가입 관리: 일반적인 이메일 가입 방식을 제공할 수도 있습니다. 이 경우 추가적인 이메일 인증 절차를 통해 사용자의 신뢰성을 높이는 방법도 있습니다.

2. 회원 데이터 관리 및 DB 구조

  • 데이터베이스 접근: 회원 데이터 관리는 일반적으로 중앙 집중식 DB를 사용하지만, 서비스의 특성과 규모에 따라 DB를 분리할 수도 있습니다. 각 서비스의 요구사항에 따라 개별적인 테이블을 설계하되, 공통된 회원 정보는 통합적으로 관리하는 것이 일반적입니다.

  • 스키마 관리: 서비스마다 필요한 칼럼이 다를 수 있기 때문에, 공통된 부분은 통합적으로 관리하고, 서비스 특화 데이터는 별도 테이블로 분리하여 관리하는 것이 효율적입니다.

3. 회원 테이블 구분 관리

  • 테이블 분리 vs 통합 전략: 300개 이상의 앱에서 효율적으로 회원 데이터를 관리하기 위해서는 테이블을 분리하는 방식과 통합하는 방식을 적절히 조합해야 합니다. 공통의 인증 정보는 하나의 테이블에 두되, 개별 서비스마다 추가 데이터 테이블을 두는 것이 일반적입니다.

  • 다중 테넌트 환경: 다중 테넌트(multitenant) 환경으로 데이터를 관리하면, 각 애플리케이션이 개별적으로 사용자 데이터를 처리할 수 있는 유연성을 제공합니다.

관련한 실제 사례와 강의 노하우를 확인하시려면 아래 기존 유사한 질문에 대한 답변이 도움이 되실 수 있습니다:

저는 jaesung님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

jaesung님의 프로필 이미지
jaesung

작성한 질문수

질문하기