728x90

Computer 120

컴파일/트랜스파일/인터프리터

컴파일/트랜스파일/인터프리터컴파일(Compile)한 언어로 작성된 소스 코드를 다른 언어로 변환하는 것이 컴파일이다.C언어를 기계어로 옮기는 것, Java를 Bytecode로 옮기는 것 모두 이 정의에 따르면 Compile에 해당한다. 심지어 TypeScript를 JavaScript로 옮기는 것 역시 이 범주안에 속한다고 할 수 있기도 하다. (엄밀히 말하면 트랜스파일링이다.)고수준의 언어를 바이트 단위의 기계어로 변환해야 컴파일이라고 말하는 것이 아니다. 컴파일은 한 언어로 작성된 코드를 다른 언어로 옮기는 일 자체를 통칭한다고 보면 된다.트랜스파일(Transpile)한 언어로 작성된 소스 코드를 비슷한 수준의 추상화를 가진 다른 언어로 변환하는 것이 트랜스파일이다.Transpile은 Compile의 ..

Computer/CS 2024.08.16

프리징(Freezing)

프리징(Freezing)세션의 상태가 일시적으로 정지되거나 멈춘 상태를 의미한다.일반적으로 세션과 관련된 처리나 업데이트가 중단됨을 나타낸다.발생 원인네트워크 문제클라이언트와 서버 간 연결 불안정서버 과부하처리할 수 있는 용량을 초과한 경우버그 또는 예외 상황예상치 못한 오류로 인한 처리 중단의도적인 일시 정지유지보수나 특정 작업을 위한 일시적 중단특징데이터 업데이트 중단세션 관련 데이터가 더 이상 업데이트되지 않는다.클라이언트 응답 지연서버가 클라이언트 요청에 응답하지 않을 수 있다.게임 상태 불일치클라이언트와 서버 간 게임 상태의 차이가 발생할 수 있다.영향플레이어 경험 저하게임이 멈추거나 지연되는 것처럼 보일 수 있다.데이터 무결성 위험프리징 중 발생한 변경사항이 손실될 수 있다.서버 리소스 낭비프..

ProfileSnapshot

ProfileSnapshot특정 시점의 플레이어 프로필 또는 게임 상태의 스냅샷(순간적인 캡처)을 의미한다.플레이어의 현재 상태, 진행 상황, 통계 등을 포함하는 데이터의 집합이다.주요 구성 요소플레이어 기본 정보게임 내 진행 상황인벤토리 상태능력치 및 스킬 레벨업적 및 통계 데이터사용 목적데이터 저장 및 복원게임 세션 간 플레이어 상태를 유지한다동기화클라이언트와 서버 간 데이터 일치를 확인한다백업 및 복구문제 발생 시 이전 상태로 복원할 수 있다.분석 및 통계플레이어 행동과 게임 진행을 분석한다.활용 사례자동 저장주기적으로 스냅샷을 생성하여 진행 상황을 저장한다.멀티플레이어 동기화다른 플레이어와의 상호작용 시 상태를 확인한다.리더보드 업데이트플레이어의 최신 상태를 리더보드에 반영한다.롤백 메커니즘버그나..

세션 끊김 문제

세션 끊김 문제게임에서 세션이 일시적으로 끊기는 경우는 여러 가지 원인에 의해 발생할 수 있다. 이러한 원인들은 네트워크 상태, 서버 문제, 클라이언트 문제 등 다양한 요인에 의해 발생할 수 있다.네트워크 관련 문제네트워크 연결 불안정Wi-Fi 신호가 약하거나 간헐적으로 끊기는 경우.모바일 데이터 사용 시 신호가 약한 지역을 지나는 경우네트워크 혼잡으로 인해 일시적인 패킷 손실이 발생하는 경우방화벽 및 라우터 설정방화벽 설정이 세션 유지에 필요한 포트를 차단하는 경우NAT(Network Address Translation) 문제로 인해 세션이 끊기는 경우인터넷 서비스 제공업체(ISP) 문제ISP의 일시적인 서비스 중단 또는 지연ISP가 특정 트래픽을 제한하는 경우서버 관련 문제서버 과부하동시에 접속하는 ..

Redis

Redis빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어이다.보통 데이터베이스는 하드디스크나 SSD에 저장한다. 하지만 Redis는 메모리(RAM)에 저장해서 디스크 스캐닝이 필요없어 매우 빠르다.캐싱도 실시간으로 가능하며 실시간 채팅에 적합하다. 세션 공유를 위해서 세션 클라스터링에도 활용 가능하다.저장 공간이 RAM 이라면 휘발성 문제는?백업 과정이 존재한다.Snapshot : 특정 지점을 설정하고 디스크에 백업한다.AOF(Append Only File) : 명령(쿼리)들을 저장해두고, 서버가 셧다운 되면 재실행해서 다시 만들어 놓는 것이다.데이터 구조는 key/value 값으로 이루어져 있다. 따라서 Redis는 비정형 데이터를 저장하는 비관계형 데이터베이스 관리 시스템이다.value 5가지S..

Computer/CS 2024.07.16

Database - 트랜잭션 격리 수준(Transaction Isolation Level)

트랜잭션 격리 수준(Transaction Isolation Level)Isolation Level트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준이다.Isolation level의 필요성데이터베이스는 ACID 특징과 같이 트랜잭션이 독립적인 수행을 하도록 한다.따라서 Locking을 통해, 트랜잭션이 DB를 다루는 동안 다른 트랜잭션이 관여하지 못하도록 막는 것이 필요하다.하지만 무조건 Locking으로 동시에 수행되는 수많은 트랜잭션들을 순서대로 처리하는 방식으로 구현하게 되면 데이터베이스의 성능은 떨어지게 될 것이다.그렇다고 해서, 성능을 높이기 위해 Locking의 범위를 줄인다면, 잘못된 값이 처리될 문제가 발생하게 된다.Isolation level의 종류Read Uncommitted(레벨 ..

Computer/CS 2024.07.11

Database - 정규화(Normalization)

정규화(Normalization)데이터의 중복을 줄이고, 무결성을 향상시킬 수 있는 정규화에 대해 알아보자Normalization중복된 데이터를 허용하지 않는 것이다.중복된 데이터를 만들지 않으면, 무결성을 유지할 수 있고, DB 저장 용량 또한 효율적으로 관리할 수 있다.목적데이터의 중복을 없애면서 불필요한 데이터를 최소화시킨다.무결성을 지키고, 이상 현상을 방지한다.테이블 구성을 논리적이고 직관적으로 할 수 있다.데이터베이스 구조를 확장에 용이해진다.과정정규화에는 여러가지 단계가 있지만, 대체적으로 1~3단계 정규화까지의 과정을 거친다.제 1정규화(1NF)테이블 컬럼이 원자값(하나의 값)을 갖도록 테이블을 분리시키는 것을 말한다.만족해야 할 조건어떤 릴레이션에 속한 모든 도메인이 원자값만으로 되어 있..

Computer/CS 2024.07.10

Database - Index

IndexDB Index목적RDBMS에서 검색 속도를 높이기 위한 기술Table의 Column을 색인화 한다.(따로 파일로 저장한다)과정Table을 생성하면, MYD, MYI, FRM 3개의 파일이 생성된다.FRM : 테이블 구조가 저장되어 있는 파일이다.MYD : 실제 데이터가 있는 파일이다.MYI : Index 정보가 들어가 있는 파일이다.Index를 사용하지 않는 경우, MYI 파일은 비어져 있다. 그러나, 인덱싱하는 경우 MYI 파일이 생성된다.이후에 사용자가 Select 쿼리로 Index를 사용하는 Column을 탐색 시, MYI 파일의 내용을 검색한다.단점Index 생성시, .mdb 파일 크기가 증가한다.한 페이지를 동시에 수정할 수 있는 병행성이 줄어든다.인덱스 된 Field에서 Data를 ..

Computer/CS 2024.07.09
728x90