본문 바로가기
320x100

Blog189

[OS] (멀티)프로세스와 (멀티)스레드, 그리고 동시성 프로세스 프로세스란, 실행된(실행되고 있는) 프로그램을 의미한다. 이 프로세스 단위로 OS에서 시스템 자원을 할당받게 된다. 구체적으로 프로세스는 각각 Code영역, Data영역, Stack영역, Heap영역을 할당받는다. 이 프로세스들은 서로 독립된 메모리 영역에 있기 때문에 다른 프로세스에 접근하기 위해서 IPC(Inter-process communication)를 사용해야 한다. 프로그램은 단지 짜여진 코드일 뿐이다. 프로그램이 프로세스가 되기 위해서는 메모리에 필요한 자원들과 함께 자리를 할당받아야 한다. 그때부터 프로그램은 비로소 프로세스가 될 수 있다. 또한 운영체제는 PCB(Process Control Block)에 해당 프로세스의 정보들을 저장한다. 이 정보들에는 PID, Pointer, .. 2021. 12. 10.
[JS] 자바스크립트의 동작 원리 개요 자바스크립트가 어떻게 돌아가는지 알기 위해서, 자바스크립트 엔진에 대해 알아야 한다. Javascript 엔진이란, 자바스크립트를 실행시키는 인터프리터를 일컫는 말이다. 자바스크립트가 처음 나왔을 때는, 단순히 웹 페이지에서 Html Elements를 조작하는데에만 사용했다, 그러나 시간이 지남에 따라 Nodejs 등등 다양한 런타임 환경이 등장하면서 그 쓰임새는 다양해졌다. 현재 가장 유명한 JS 엔진으로 V8 엔진을 들 수 있겠다. V8 엔진은 구글 크롬에서 사용되며 Nodejs의 기반이 된 엔진이다. 구성 요소 자바스크립트의 엔진은 위 그림처럼 메모리 힙과 콜스택을 기반으로 한다. 메모리 힙은 동적으로 생성된 Object 들이 저장되는 곳이다. 콜스택과 다르게 메모리 힙에는 참조 타입들이 저장.. 2021. 12. 9.
[Network] OSI 7계층 정의 OSI(Open Systems Interconnection Reference Model) 7계층이란, 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 나누어 표현한 구조를 일컫는다. 구조 OSI 7계층은 아래에서부터 물리-데이터 링크-네트워크-전송-세션-표현-응용 계층의 구조를 가지고 있다. 이중 위쪽 4개의 계층은 payload(실제 전송 데이터), 아래 3개의 계층은 header를 포함한다. OSI 7계층의 각 계층들은 독립적이지만, 상하구조를 띄고 있기 때문에 상위의 계층이 동작하려면 하위의 모든 계층이 제대로 동작해야만 한다. 왜 이렇게 나누었는가? 초기에 인터넷이 세상에 나오고 사람들이 네트워크 망에 처음 접할 때는 네트워크상의 체계가 없는 상태였으며, 이에 따라 큰 혼란이 있었다고 한.. 2021. 12. 8.
TypeDI를 통한 의존관계 주입과 관심사의 분리 기존 구조와 문제점 현재 내 프로젝트에서, 백엔드 구조는 다음과 같다. 현재 Graphql 을 사용하고 있고, 외부에서 요청이 들어오면 이를 Resolver에서 받아서 알맞는 Service 로직을 호출한다. (REST API 에서 Controller의 역할을 한다) 이후에 Service 로직에서는 비즈니스 로직을 수행하고 필요한 데이터를 얻기 위해 Repository에 접근하며, Repository에서는 DB에 접근한다. 지금은 수정된지 오래되어 꽤 오래전 코드지만, 처음에는 이렇게 구현되어 있었다. UserService에서는 의존하고 있는 UserRepository를 그냥 Import 해서 Static 으로 사용한다(당시에는 TypeORM의 Data Mapper 대신 Active Record 패턴을 사.. 2021. 11. 29.