SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Redis
로소셜게임개발자구출하기

                   CTO,SUNDAYTOZ
                                    임현수
                                  @fribirdz
소셜게임(서버)의특성

쓰기(Create,Update,Delete)가읽기(Read)보다훨씬
많다.
데이터는계속변한다.
하나의인스턴스를여러명이갱신하는경우가많다.
트랜잭션단위의요청이많다.
서비스중인
소셜게임서버의어려움
업데이트=부하상승

 업데이트가계속되면게임의기능도추가되거나보강된
 다.
 기능이보강되는경우기존기능+추가요소or기존기
 능+소셜기능일때가많다.
 그럴수록게임의복잡도는늘어나고,계산해야할양도지
 수적으로늘어날수있다.
업데이트=부하상승


                                                                                                    작물심기+
                                                        작물심기+
               작물심기+                                             친구작물축복하기+하
                                               친구작물축복하
작물심기   친구작물축                                                     루에한번내작물에물
                                               기+하루에한번
                복하기                                                                      주기+작물도둑vs경
                                               내작물에물주기
                                                                                                            찰기능
서버부하해결의어려움


 (웹서버의부하를해결하고난뒤에남은)대부분의부하
 는DB부하이다.
 DB부하는최적화와튜닝만으로는처리에한계가있다.
DBReplication

 소셜게임서버의DB읽기/쓰기비율은3:7~5:5
 Replication을해도,쓰기의부하는줄어드지않는다.
 게임데이터는계속변한다.
 Master-Slave동기화의시간차가커지면게임로직의오
 류로전파될수있다.
DBSharding

 나눠진DB간의Join,Transaction의어려움
 공평하게분산하는것도쉽지않음
    최근가입한회원들이더요청을많이함
    Hash를통해분산한다면,서버를추가했을때처리가
    복잡해짐
 서버설계단계부터고려되어야함
ScaleUp?


 SATA-SAS-SSD-FusionIO-그이후엔?
 AWS와같은클라우드서버는I/O성능이매우떨어진다.
NoSQL로교체!



 “매일수십만명에게서비스하는게임의DB를어떻게뒤
 엎어요.ㅎㄷㄷㄷ잘못되면사tothe망”
Memcached

영구적이지않음.
   MemcacheDB,Membase와같은해결책은있음
읽기를줄일수는있지만,쓰기를줄일수는없음
   DB를memcached로교체하면해결할수있음.
   하지만....
       “매일수십만명에게서비스하는게임의DB를어떻게
       뒤엎어요.ㅎㄷㄷㄷ잘못되면사tothe망”
전략


MySQL의쓰기작업중
   부하가심한데Memcached나NoSQL로떼어낼수있
   는작업은없을까?
소셜게임의특성

 하루에N번씩할수있는행동
 N분마다1번씩할수있는행동
 내작물에1번씩할수있는행동
 내친구한테1번씩할수있는행동
 내친구작물에1번씩할수있는행동...
Redis


고성능
PersistanceStorage
다양한DataStructures지원
다양한DataStructures!


 String
 SET,SortedSET
 LIST
 Hash
유용한기능들

 KEYS
 INCR,INCRBY
 DECR,DECRBY
 TTL
 SDIFF
명령어

공통
 exists,del,type
 keys,randomkeys
 flushdb
 ttl,expire
명령어

String
  get,set,getset
  mget,mset
  incr,incrby
  decr,decrby
명령어

List
  pop,pop
  index
  lrange,ltrim,llen
  blpop,brpop
  rpoplpush,brpoplpush
명령어

SET
 sadd,srem,spop,smove
 scard,sismember,smembers,srandmember
 sinter,sinterstore,sunion,sunionstore
 sdiff,sdiffstore
명령어

SET
 sadd,srem,spop,smove
 scard,sismember,smembers,srandmember
 sinter,sinterstore,sunion,sunionstore
 sdiff,sdiffstore
장점


RDBMS에서N번의쿼리로해야할일을1번의쿼리로수
행할수있다.
RDBMS에서N개의row를검색해서얻어야하는결과를
적절한datastructure를사용해서적은cost로수행할
수있다.
유용한기능들
 INCR,INCRBY
        redisSETvisitors10
        OK
        redisINCRBYvisitors5
        (integer)15
 내농장오늘/전체방문자수
 (오늘)선물보낸횟수
 소셜에너지카운팅(withexpire)
유용한기능들:SET

 하루에한번만할수있는행동들에사용
 Key에expire를주거나,dailyDB를flush


 SADD(set에member추가)
 SCARD(count)
 SRANDMEMBER(랜덤member추출)
 SISMEMBER(특정member가set안에존재하는지확인)
유용한기능들:SET
 친구의농장에서보물상자를열수있다.

      친구1명당하루에1번열수있다.

 UserB가보물상자를연친구들의목록

      SMEMBERSOPEN_BOX:USER_B

 UserB가보물상자를연횟수(일일제한)

      SCARDOPEN_BOX:USER_B

 UserA가UserB의농장에서보물상자를열었는지

           SISMEMBEROPEN_BOX:USER_AUSER_B
유용한기능들:LIST


 LLEN(getthelengthofalist)
 LPUSH(prependavluetoalist)
 LREM(removeelementsfromalist)
 LTRIM(trimalisttothespecifiedrange)
유용한기능들:LIST


 최근내농장에서친구들이취한액션들
    최근30개
    최근순서대로
MysqlvsRedis



 TBD
Redis의단점

 sharding을직접구현해야한다.
    REDIS3.0에서는Clustering지원예정
 데이터사이즈가커지면(특히string)메모리사용량이
 급격히늘어난다.
 메모리의데이터를Disk로snapshotting할때I/O가급
 격히상승한다.데이터의크기가커질수록더심하다.
004. 소셜앱 개발 노하우 선데이토즈 임현수 cto

Weitere ähnliche Inhalte

Mehr von Cyworld AppStore (SK Communications)

Mehr von Cyworld AppStore (SK Communications) (20)

Cyworld AppStore Weekly Report 2012-02-14
Cyworld AppStore Weekly Report 2012-02-14Cyworld AppStore Weekly Report 2012-02-14
Cyworld AppStore Weekly Report 2012-02-14
 
Cyworld AppStore Weekly Report 2012-02-07
Cyworld AppStore Weekly Report 2012-02-07Cyworld AppStore Weekly Report 2012-02-07
Cyworld AppStore Weekly Report 2012-02-07
 
Cyworld AppStore Weekly Report 2012-01-31
Cyworld AppStore Weekly Report 2012-01-31Cyworld AppStore Weekly Report 2012-01-31
Cyworld AppStore Weekly Report 2012-01-31
 
Cyworld AppStore Weekly Report 2012-01-24
Cyworld AppStore Weekly Report 2012-01-24Cyworld AppStore Weekly Report 2012-01-24
Cyworld AppStore Weekly Report 2012-01-24
 
Cyworld AppStore Weekly Report 2012-01-17
Cyworld AppStore Weekly Report 2012-01-17Cyworld AppStore Weekly Report 2012-01-17
Cyworld AppStore Weekly Report 2012-01-17
 
Cyworld AppStore Weekly Report 2012-01-10
Cyworld AppStore Weekly Report 2012-01-10Cyworld AppStore Weekly Report 2012-01-10
Cyworld AppStore Weekly Report 2012-01-10
 
Cyworld AppStore Weekly Report 2012-01-03
Cyworld AppStore Weekly Report 2012-01-03Cyworld AppStore Weekly Report 2012-01-03
Cyworld AppStore Weekly Report 2012-01-03
 
Cyworld AppStore Weekly Report 2011-12-27
Cyworld AppStore Weekly Report 2011-12-27Cyworld AppStore Weekly Report 2011-12-27
Cyworld AppStore Weekly Report 2011-12-27
 
Cyworld AppStore Weekly Report 2011-12-20
Cyworld AppStore Weekly Report 2011-12-20Cyworld AppStore Weekly Report 2011-12-20
Cyworld AppStore Weekly Report 2011-12-20
 
Cyworld AppStore Weekly Report 2011-12-13
Cyworld AppStore Weekly Report 2011-12-13Cyworld AppStore Weekly Report 2011-12-13
Cyworld AppStore Weekly Report 2011-12-13
 
Cyworld AppStore Weekly Report 2011-11-22
Cyworld AppStore Weekly Report 2011-11-22Cyworld AppStore Weekly Report 2011-11-22
Cyworld AppStore Weekly Report 2011-11-22
 
Cyworld AppStore Weekly Report 2011-11-15
Cyworld AppStore Weekly Report 2011-11-15Cyworld AppStore Weekly Report 2011-11-15
Cyworld AppStore Weekly Report 2011-11-15
 
Cyworld AppStore Weekly Report 2011-11-01
Cyworld AppStore Weekly Report 2011-11-01Cyworld AppStore Weekly Report 2011-11-01
Cyworld AppStore Weekly Report 2011-11-01
 
Korean social game market trend report (2011Q2) Eng
Korean social game market trend report (2011Q2) EngKorean social game market trend report (2011Q2) Eng
Korean social game market trend report (2011Q2) Eng
 
Cyworld AppStore Weekly Report 2011-10-18
Cyworld AppStore Weekly Report 2011-10-18Cyworld AppStore Weekly Report 2011-10-18
Cyworld AppStore Weekly Report 2011-10-18
 
Cyworld AppStore Weekly Report 2011-10-11
Cyworld AppStore Weekly Report 2011-10-11Cyworld AppStore Weekly Report 2011-10-11
Cyworld AppStore Weekly Report 2011-10-11
 
Cyworld AppStore Weekly Report 2011-09-27
Cyworld AppStore Weekly Report 2011-09-27Cyworld AppStore Weekly Report 2011-09-27
Cyworld AppStore Weekly Report 2011-09-27
 
Cyworld AppStore Weekly Report 2011-08-09
Cyworld AppStore Weekly Report 2011-08-09Cyworld AppStore Weekly Report 2011-08-09
Cyworld AppStore Weekly Report 2011-08-09
 
Cyworld AppStore Weekly Report 2011-07-26
Cyworld AppStore Weekly Report 2011-07-26Cyworld AppStore Weekly Report 2011-07-26
Cyworld AppStore Weekly Report 2011-07-26
 
Korean Social Game Market Trend Q1 2011
Korean Social Game Market Trend Q1 2011Korean Social Game Market Trend Q1 2011
Korean Social Game Market Trend Q1 2011
 

004. 소셜앱 개발 노하우 선데이토즈 임현수 cto