분류 전체보기

Websocket은 단순한 통신구조를 갖고 있기 때문에, 순수 Websocket만으로는 해당 메시지가 어떤 요청인지, 어떻게 처리해야하는지를 처리하는데 있어 까다로움을 가지고있다.What is Stomp?STOMP(Simple Text Oriented Messaging Protocol)은 메세징 전송을 효율적을 하기 위해 탄생한 웹 소켓 프로토콜 중 하나이다.웹 브라우저에서 발행 구독 패턴(Pub-Sub Pattern)을 기반으로 실시간 메시징을 지원할 수 있기 때문에 이점이 있어 이번 프로젝트에서도 테트리스들의 블록에 대한 Canvas의 위치값을 전송하기 위해 사용하게 되었다.또한, STOMP를 사용하여 메세지의 헤더에 값을 줄 수 있어 헤더 값을 기반으로 통신 시 인증처리에 대한 이슈를 해결할 수 있..
· JVM
도입최근 Prometheus로 운영서버의 JVM 관련 Metric을 수집하는 기능을 만들었다. 이때 GC가 메모리를 얼마나 회수해가는지에 대한 지표를 확인할 수 있었는데 "GC가 어떻게 버려진 객체들을 회수하지?" 라는 의문점이 들어 본격적인 Posting을 하게되었다. 그럼 우선적으로 JVM이 무슨 일을 하는가? JVM이 해주는 작업중 Core 한 기능들은 여러가지가있다.클래스 파일 실행JIT 컴파일러 사용GC(Garbage Collector)를 통한 메모리 관리우리는 이 중 GC에 대해서 Deep Dive 해보자 💡What is GC(Garbage Collector)?GC(Garbage Collector)는 우리가 인풋으로 준 클래스파일을 실행하는 도중에 실행되며, Heap 메모리에서 동작하고 JV..
🤔 그핸뭐?(그래서 HandTris가 뭔가요?)😀 웹에서 즐기는 핸드모션 기반 테트리스 대결 게임입니다!사용자 접근성이 좋은 웹에서 조이스틱으로 즐기던 테트리스 게임을 컨트롤러없이 내 손이 조이스틱이 되어 게임을 즐길 수 있다는 점에서 차별점이 존재하는 웹 게임 서비스입니다. 😙 어디서 영감을 받았냐면요제가 평소에 감명깊게 플레이하던 게임 중 '뿌요뿌요테트리스'라는 게임과 'Tetris 99'라는 게임이 있습니다.   두 게임의 공통점은 모두 테트리스의 기존 틀을 깨트렸다는 점에 있었습니다.테트리스는 직관적으로 봤을 때는 그저 블록을 효율적으로 잘쌓으면서 오랫동안 버티는 수동적인 게임이었습니다. 하지만, 두 게임 모두 다른 유저들과의 대결이라는 키워드를 가지고 인터랙티브한 요소들을 추가하여 테트리스..
덕타이핑객체의 본질을 갖게 본다 = 메서드의 동작이 같아도된다실행 시간 (런타임)에 객체의 속성과 메서드를 검사하여 타입을 결정한다.interface People { talk(): void; whoAmI: string;}class Human implements People { whoAmI = "human" talk = () => { console.log(`say ${this.whoAmI} : 말할 수 있어요`); }}class Robot { whoAmI = "robot" talk = () => { console.log(`say ${this.whoAmI} : 말할 수 있어요`); }}const humanInstance = new Huma..
엔드 포인트 간의 실시간 스트리밍을 가능하게 해주는 통신 프로토콜이다.초기 시그널링 서버에서 두 엔드 포인트의 정보가 교환되고, 교환된 정보를 바탕으로 P2P 연결을 맺게 된다.엔드 포인트 간의 실시간 스트리밍을 가능하게 해주는 통신 프로토콜이다.초기 시그널링 서버에서 두 엔드 포인트의 정보가 교환되고, 교환된 정보를 바탕으로 P2P 연결을 맺게 된다.WebRTC에는 어떤 통신 종류가 있는가?P2P(Peer-to-Peer)SFU(Selective Forwarding Unit)MCU(Multipoint Control Unit)P2PICE(Interactive Connectivity Establishment)두 peer간 데이터 송수신시 최적의 경로를 찾아주는 프레임워크두 Peer간 연결 테스트를 위해 SD..
· PintOS
대망의 마지막 핀토스 발표주제는 Swap Out 시 차용할 수 있는 페이지 교체 알고리즘의 정책들을 소개하고 비교해보는 것이었다. 우선 Memory의 Frame을 왜 Swap Out하며, 애초에 Swap Out이란 무엇일까?이 부분부터 짚고 넘어가자 Swap Out?Swap Out은 우리가 실제 물리메모리를 Frame 단위로 관리하고 이를 메인 메모리인 RAM에 적재하는 과정에서 더 이상 RAM에 적재할 수 없을때(용량이 다 차서) Page Fault를 일으키며, 발생하게된다. 그래서 페이지 교체가 어떻게 일어난다는건데! 🧐그걸 위해 희생자 Frame을 만든다. 이때 어떠한 정책을 선택하느냐에 따라 Swap Out의 효율성이 갈리게 된다.그래서 지금부터 어떠한 정책이 존재하고 각 이점을 설명하도록하겠다..
시작에 앞서 다중화란?**💡 DB 다중화?- 단일 데이터베이스 구조로 사용할 경우 단일 데이터베이스에 문제가 발생할 경우 계속해서 서비스가 제공되지 못하며, 서버 데이터 분산을 통해 copy본을 만들어놓는 등의 작업을 위해 다중화를 사용한다.💡 다중화시 유의점- 간단히 병렬화해서 대수를 증가시키는 웹 서버나 애플리케이션 서버와 비교하면 다중화에 대해 고민해야할 부분이 많은데 그 이유는 DB 서버가 데이터를 보존하는 영속(Persistence) 계층이기에 별도의 대처가 필요. 💡 DB와 다른 서버의 차이- 데이터베이스는 데이터를 장기간 보존하는 매체가 필요하다. 이 점은 데이터를 일시적으로 처리할 뿐인 웹 / 앱 서버와 다른 점이다.- 결국 DB 서버의 아키텍처는 서버와 저장소를 묶어..
· PintOS
이번 핀토스 프로젝트 3에서는 페이지 폴트를 다뤄야 하는 상황이 많았는데, 해당 Case들을 전부 다뤄보고자 한다. 크게 Fault가 발생하는 경우는 3가지가 존재한다. 프로세스가 요청한 가상 메모리 페이지가 물리 메모리에 적재되지 않았을 경우 발생하는 페이지 폴트쓰기 권한이 없는 페이지(읽기 전용, read-only)에 write 작업을 수행할 경우유효하지않은 주소에 대한 접근 요청인 경우 각각의 Case들을 살펴보도록하자1. Demand Paging요구 페이징에는 각각 3가지의 케이스에서 Page Fault가 발생할 수 있다. 1. LazyLoading2. Swap Out3. Stack Overflow Lazy Loading lazy loading 방식에서는 프로그램이 처음 실행될 때, 운영체제가 ..
LEE티씨
'분류 전체보기' 카테고리의 글 목록