ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데브시스터즈 컨퍼런스
    글또 2022. 11. 1. 23:22

    안녕하세요. 이번 글은 NDC21/22에서 발표한 데브시스터즈의 발표 영상들을 시청하였습니다.

    흥미롭고 대단하다고 느껴지는 부분이 많아 정리하게 되었습니다.

     

    [NDC21-프로그래밍] 〈쿠키런: 킹덤〉 서버 아키텍처 뜯어먹기!

    처음 알게 된 개념들이 많았습니다. 액터 모델, akka 클러스터링 등의 재밌어 보이는 기술을 사용하고 있습니다.

    해당 개념들을 사이드 프로젝트로 구현해보고 싶은 마음이 생겼습니다.

    게임 서버는 stateful하게 유저를 관리하는데 이때 사용된 방법들이었습니다.
    
    액터 모델은 스레드 + 큐라고 볼 수 있다고 하고
    
    akka 클러스터의 코디네이터를 통해 엑터가 어디에 있던지 쉽게 stateful을 유지할 수 있다고 합니다.
    
    단점은 운영과 배포가 어렵다고 합니다.
    
    
    
    
    
    상태 저장은 이벤트 소싱방식을 선택했습니다.
    
    crud방식은 DB테이블에 의존적인 설계를 하게되고 어플리케이션 코드와 스키마 간에 매핑이 잘 되지 않습니다. 
    
    
    
    이벤트 소싱 저장 방식은 kafka를 사용할 때 봤던 방식입니다. log들을 리플레이하면 결과를 얻을 수 있는 것 처럼 같은 개념입니다.
    
    근데 매번 읽을 때는 불합리하니 스냅샷과 함께 사용하도록 합니다.
    
    
    
    이벤트 소싱으로 하면 select와 insert밖에 없기에 확장성이 좋고 액터 모델과 궁합이 좋습니다.
    
    리플레이를 큐에 때려 밖으면 되기에..
    
    
    
    여러 유저의 상호작용의 구현은 액터 모델로 구현했습니다.
    
    두개의 액터의 일관성이 있어야하는데요, saga 패턴으로 구현하는 것이 아닌 2pc 방법으로 구현 했습니다.
    
    액터는 API를 각각호출하고 API는 요청을 모아서 하나의 트랜잭션으로 처리하도록 합니다.
    
    
    
    조회 API는 항상 액터를 리플레이하기에는 너무 비효율적! -> view용 DB를 사용

     

     

     

    [NDC22-프로그래밍] 쿠키런: 킹덤, 총 56시간의 긴급 점검 회고

     

    먼저 데브옵스 엔지니어팀의 작업 내용입니다.

    79회의 부하 테스트와 여러 방어 체계를 만들고 7중 리플리카까지 인상 깊습니다.

    DB의 데이터를 옮기는 과정을 최적화하기 위해 직접 DB의 소스 코드를 커스텀도 합니다.. 

     

     

    [NDC22-커리어] 그때 알았더라면 좋았을 것들

    단순 기술에 대한 이야기만 하는 것이 아닌 인간 개발자를 위한 내용입니다.

    코딩만 잘하는 것이 아닌 설계, 글쓰기가 중요해진다.
    
    논쟁에서 이기려고 하지 말기.
    
    팀원에게 화내지 말기.
    
    말하지 않으면 모른다.
    
    누구에게나 한계는 있다.

    개발을 잘하는 것도 중요하지만 주위 사람에게 친절하고, 좋은 사람이 되는 것도 중요하다고 생각하는 요즘입니다..

    댓글

Designed by Tistory.