본 포스팅은 개인적 필요에 의해 기재되었습니다.


원노트에서 서식 복사하여 그대로 기재되었으므로

보시기에 불편할 수 있습니다.

필요하신 부분이 있다면 발췌하여 자유롭게 쓰시면 됩니다.


참고 출처와 댓글은 달아주세요~





생각해야 할 부분


카카오톡 친구 목록은 283명이다.

 

보통의 경우 200명을 넘기며 사업을 하는 사람의 경우 1000명도 넘길것이다.

 

친구목록이 10만명이라고 상상해보자.

이렇게 되면 한번에 많은 데이터를 서버로 요청해야 한다.

 

유저가 어플리케이션을 사용하는 흐름 , User Flow( 이하 플로우 ) 생각해 보자.

 

  1. 어플리케이션을 설치한다.
  2. 이전에 가입하였던 아이디가 있는가?
    1. 있다. 이전사용자
      1. 만약 어플리케이션이 기존에 설치되어 있고 데이터가 존재한다면
         SharedPreFerence ( 이하 SPF )에서 친구 목록 데이터를 불러온다.
      2. 클라이언트는 이전에 친구 추가했던 db ( server ) 요청( Request )한다.
        1. 해당 아이디(userID) USER 테이블에서 검색하자( SELECT ).
        2. userID 검색되면, Friends 테이블에서 해당 userID friendsID SELECT 하자.
        3. 이렇게 나온 friendsID 클라이언트로 전달( Response )한다.
    1. 없다. 처음사용자
      1. USER테이블에 userID 추가( INSERT) 된다.
      2. regDate ( 등록일 ) 칼럼에 년월시분초 ( ms 이하 단위 생략 ) 입력된다.
        ( MySQL date 기능을 사용 or PHP에서 UTC시간을 이용 등등.. )

+@ regLocation( 등록 지역) 입력하자. 클라이언트의 Network 정보 ( IP ) 기준으로.

  1. 서버에서 Response friendsID ArrayList 담는다.
  2. 이후 친구추가가 이루어 질때
    1. ( 어플 메모리상에서 ) ArrayList 추가한다.
    2. 서버 DB 등록 한다.
    3. SPF에도 추가 등록 한다. ( 생명주기를 신경써서 작업한다. )

 

 

플로우를 정리하면

 

1. 신규 유저일 경우 -> 회원가입 -> 아이디를 DB 추가한다

-> 친구 추가를 하면 DB friends테이블에 userId, friendId 칼럼에 각각 등록한다.

userId

friendId

userA

userB

userA

userC

userB

userA

userB

userC

userC

userA

userC

userB

"userA" 친구 목록 => userB, userC

"userB" 친구목록 => userA, userC

"userC" 친구목록 => userA, userB

 2. 기존 유저일 경우

-> 로그인한 유저 아이디를 기준으로한 key값으로 SPF에서 친구목록을 가져온다.

-> SPF 데이터가 존재하지 않을경우 ( 어플리케이션 재설치등 )

Server DataBase ( RDBMS. ex: MySQL )에서 데이터를 가져온다.

-> 가져온 데이터는 SPF 저장하고 어플리케이션이 완전히 종료되고 다시 시작될 우선적으로 SPF에서 불러오도록 한다. ( ,     우선순위를 로컬로 후순위를 서버로 )


+ Recent posts