본문 바로가기

전체 글

(186)
Database Transation 트랜잭션데이터베이스와 데이터 스토리지 시스템이라는 맥락에서 트랜잭션이란 한 단위의 작업으로 취급되는 모든 작업을 말한다.트랜잭션은 완전히 완료되기도 하고 전혀 완료되지 않을 수도 있으며, 스토리지 시스템을 한결같은 상태로 둔다. ACIDACID(Atomicity, Consistency, Isolation, Durability)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다. 데이터베이스 작업에 ACID 속성이 있다면 이를 ACID 트랜잭션이라고 부르면 되고, 이런 작업을 적용하는 데이터 스토리지 시스템을 트랜잭션 시스템이라고 한다. 원자성 : AtomicityAll or Nothing : 트랜잭션은 모두 실행하거나 모두 실행하지 않음 두 가지 상태만 있다.단일 ..
OSI 7계층 인터넷 모델 구조현재 인터넷은 OSI 모델이 아닌 TCP/IP 모델을 따른다. OSI 7 계층(Layer)1984년 국제표준화기구(ISO)에서 개발한 모델로 네트워크 프로토콜 디자인과 통신 과정을 7개의 계층으로 구분해 만든 "표준 규격"이다. 초창기의 네트워크는 각 컴퓨터마다 시스템이 달랐기 때문에 하드웨어와 소프트웨어의 논리적인 변경 없이 통신할 수 있는 표준 모델이 나왔다. 특징통신이 일어나는 과정을 7단계로 크게 구분하여, 단계 별로 파악가능OSI(Open System Interconnection) : 개발형 시스템은 누구나 참조 및 부가적인 추가 가능하다.컴퓨팅 장치나 네트워킹 장치를 만들 때 이 모델을 참조해서 모든 통신 장치를 만든다.각 계층은 독립적인 모듈로 구성되어 있으며, 상하 계급 구..
WIL - 12 Fact : 이번주 있었던 일, 내가 한 일월 : Prometheus 설정 마무리화 : Query 성능 측정(데이터 10~100만 건 사용)수 : 게임 로직 수정(유저 포인트, 베팅 금액 관련 수정)목 : 게임 중 플레이어 1명 되면 게임 종료되도록 로직 수정금 : 게임 시작 로직 수정(동시성 충돌 문제 방지)토 : Redis Sorted Set 도입(동시성 충돌 문제 방지)Feeling : 나의 감정적인 반응, 느낌생각보다 문제가 많이 발생되서 프로젝트 진행도가 많이 더뎌졌다.초기 설계 부분에서 모르는 부분으로 인해 놓친 부분이 많은 것 같다.Finding : 그 상황으로부터 내가 배운 것, 얻은 것잘 모르는 기술이나 분야에 대해 개발을 할 때는 많은 사항을 고려하고 충분한 지식을 갖추는 것이 좋다는 ..
멀티 프로세스 & 멀티 스레드 Multi Process 와 Multi Thread멀티 프로세스와 멀티 스레드는 한 애플리케이션에 대한 처리방식으로 멀티  프로세스와 멀티 스레드는 여러 개의 프로세스, 스레드가 동작하는 것이다. Multi Process멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술.하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러 개의 프로세스를 생성하는 것이다.멀티 프로세스 vs 멀티 프로세서프로세스(Process)는 프로그램의 실행 상태를 말하고, 프로세서(Processer)는 CPU 코어를 말한다.멀티 프로세스는 하나의 프로그램에서 여러 개의 프로세스를 실행하는 것을 의미하고,멀티 프로세서는 여러 개의 C..
프로세스, 스레드 프로세스 & 스레드 개념프로세스(Process) : 운영체제로부터 자원을 할당받은 작업의 단위스레드(Thread) : 프로세스 할당받은 자원을 이용하는 실행 흐름의 단위정적 프로그램(Static Program)프로그램은 윈도우의 *.exe 파일이나 Mac의 *.dmg 파일과 같은 컴퓨터에서 실행할 수 있는 파일을 통칭한다.아직 파일을 실행하지 않은 상태이기 때문에 정적 프로그램(Static Program) 줄여서 프로그램이라고 한다. 프로그램 개발을 위해서는 C, Java 등과 같은 언어를 사용해 코드를 작성해야 한다(프로그램은 쉽게 말하면 코드 덩어리 인 것). 프로세스(Process)프로세스는 프로그램을 실행 시켜 프로그램이 동적으로 변하여 프로그램이 돌아가고 있는 상태를 말함. 즉, 컴퓨터에서 작업..
RDBMS의 정규화 정규화(Normalization)관계형 데이터베이스(RDBMS)의 설계에서 데이터를 중복 없이 효율적으로 저장하기 위한 과정정규화를 통해 데이터베이스 구조는 불필요한 중복을 최소화하고 데이터의 일관성과 무결성을 유지할 수 있게 된다. 정규화를 통해 DB는 이상 현상(Anomaly)를 방지할 수 있다. 이상 현상(Anomaly)정규화를 적절히 하지 않은 DB 또는 Relation(Table)에 데이터가 중복되고 이 Table에 어떠한 작업을 할 때 비합리적인 문제들이 발생하는 현상이다.Relation : Rows(행)과 Columns(열)로 구성된 테이블이상 현상 종류삽입 이상 : 데이터를 테이블에 저장할 때, 불필요한 데이터도 넣어야 하는 경우삭제 이상 : 데이터를 테이블에서 삭..
Web Game 코드 설계 정리 기술 스택 결정 WebSocket 과 WebRTC 사용 목적 WebSocket : 주로 양방향 통신을 위해 주로 사용 WebRTC : 브라우저 간의 실시간 통신을 가능하게 하며, 주로 비디오, 오디오, 데이터 스트리밍에 사용 웹 게임에서 실시간 오디오, 비디오 통신 또는 피어-투-피어 데이터 교환을 구현하고자 할 때 WebRTC를 사용하게 되며, 이 경우 시그널링 서버가 필요함 WebRTC를 사용하지 않고 순수하게 게임 로직이나 상태 정보 교환 등을 WebSocket만으로 처리하는 경우, 시그널링 서버는 필요하지 않음 WebSocket은 실시간 양방향 통신을 가능하게 하여, 서버와 클라이언트 간에 실시간 메시지 교환이 필요한 웹 기반 게임에 적합하며, 턴제 게임에서 요구되는 기능들을 효과적으로 구현할 수..
프로젝트 코드 분석 Spring Web Game Project Code Review Controller package com.service.indianfrog.domain.game.controller; import com.service.indianfrog.domain.game.dto.GameBetting; import com.service.indianfrog.domain.game.dto.GameDto.StartRoundResponse; import com.service.indianfrog.domain.game.dto.GameInfo; import com.service.indianfrog.domain.game.dto.GameStatus; import com.service.indianfrog.domain.game.dto.Use..