본문 바로가기

분류 전체보기

(182)
ORM ORM(Object Relational Mapping, 객체-관계 매핑)객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 기술객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하기 때문에 객체 모델과 관계형 모델 간에 불일치가 존재한다.ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.데이터베이스 데이터 ←매핑→ Object 필드객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.Persistant API라고도 할 수 있다.JPA, Hibernate 등ORM의 장단점장점객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로 데이터를 조작할..
Array & LinkedList 자료 구조데이터를 효율적으로 저장, 관리, 처리하기 위해 컴퓨터에 데이터를 조직화하고 관리하는 방법으로 다양한 종류의 자료 구조가 있으며, 각각은 특정 종류의 문제를 해결하기 위해 설계되었다. 기본적인 자료 구조에는 배열, 연결 리스트, 스택, 큐, 트리, 해시 테이블 등이 있다. 배열(Array)배열은 입력된 데이터들이 메모리 공간에서 연속적으로 저장되어 있는 자료구조이다.메모리 상에서 연속적으로 저장되어 있는 특징을 갖기 때문에 index를 통한 접근이 용이하다.고정된 크기를 가지며, 크기 변경이 어렵다, 미리 할당된 메모리 크기를 초과하면 새로운 메모리 공간을 할당하고 데이터를 복사해야 한다.메모리 사용이 효율적으로 추가적인 메모리를 사용하지 않는다.시간 복잡도탐색 : O(1). 단, 접근하려는 인..
TCP / UDP TCP(Transmission Control Protocol)전송을 제어하는 프로토콜(규약)인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜일반적으로 TCP와 IP를 함께 사용하는데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리하게 된다.TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용한다. TCP 특징연결 지향 방식으로 패킷 교환 방식을 사용한다(가상 회선 방식이 아님).3-way handshaking 과정을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.흐름 제어 및 혼잡 제어높은 신뢰성을 보장한다.UDP보다 속도가 느리다.전이중(Full-Duplex), 점대점(Point to Point) 방식TCP가 ..
Redis 사용 동시성 제어 구현 동시성 충돌 문제기존 Indian Frog 웹 게임 프로젝트 코드에서는 한 게임방에서 두 명의 유저가 게임 시작을 위해 요청을 보낼 경우 클라이언트로부터 2개의 요청이 서버로 보내지게 되는데, 서버에서 요청을 처리하는 도중 다른 요청이 서버에서 같이 처리되어 게임 엔티티가 2개 생성되고 유저에게 지급된 카드가 서로 다르게 되는 문제가 발생했다. 문제 해결을 위해 원인을 파악한 결과 기존 코드에서는 동시성 충돌에 대한 고려를 전혀하지 않고 구현된 상태였다. 기존 StartRound 코드@Transactionalpublic StartRoundResponse startRound(Long gameRoomId) { return totalRoundStartTimer.record(() -> { lo..
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..