*IPC란 프로세스 간 통신(Inter-Process Communication)을 뜻하는 용어이다. *IPC에 대해서 설명을 하기 앞서, 프로세스가 무엇인지에 대해서 간략하게 설명을 해보려고 한다. 실행 파일을 실행시키는 과정을 설명해보면, 실행 파일은 DISK에 저장이 되어 있고 이를 실행시키면 특정 메모리에 올라가고 이 메모리가 CPU에 올려서 실행이 된다. 그 후 해당 실행 파일은 '프로세스'가 된다. 만약 A라는 실행 파일과, B라는 실행 파일을 실행하게 되면, 메모리의 특정 부분을 A 프로세스가 차지하고, 다른 특정 부분을 B 프로세스가 차지하게 된다. 이 때 프로세스는 독립적으로 움직이기에 프로세스끼리는 서로 영향을 주지 않는다. 즉, A 프로세스가 하는 일에 대해서 B 프로세스는 관여하지 않..
서버 트래픽이란? 인터넷상에서 서버와 클라이언트 간에 데이터가 교환되는 과정에서 발생하는 통신량을 의미한다. 이 통신량은 웹 페이지 요청, 파일 전송, 데이터베이스 조회 등 다양한 형태로 나타난다. 서버 트래픽은 웹 사이트나 애플리케이션의 인기도, 사용자 수, 콘텐츠 크기 등에 영향을 받는다. *서버 트래픽 과부하란? -서버가 동시에 처리해야 할 요청이나 데이터 전송량이 과도하게 증가하여 서버의 처리 능력을 초과하는 상황을 의미한다. 서버 트래픽은 파일 크기, 페이지 요청 수, 동시 접속자 수 등 다양한 요소에 영향을 받는다. 일반적으로 웹 사이트나 어플리케이션의 인기도가 높아서 사용자가 많아짐에 따라 서버 트래픽이 증가하게 된다. 서버 트래픽 과부하가 발생하면, 서버의 응답 속도가 느려지거나 서비스 중..
본 내용에 들어가기에 앞서 웹을 사용할 때 발생하는 여러 데이터들이 어떤 방식으로 저장이 되고 관리가 되는지에 대해 설명을 하려고 한다. 웹 사이트를 이용하다보면 영구적으로 저장해야 하는 데이터가 있고, 그렇지 않은 데이터가 존재한다. 크롬 브라우저를 사용하는 사용자의 입장을 예로 들어서 몇가지를 설명하려고 한다. -크롬 브라우저를 통해 구글 사이트에 접속한 뒤, 구글 계정에 '가입'을 한다고 가정해보자. 이 때 사용자는 아이디, 비밀번호, 이메일 등의 내용을 기입하게 된다. 이러한 데이터는 영구적으로 저장을 해야 하는 데이터이다. 브라우저를 껐다 다시 켰을 때, 컴퓨터를 종료한 뒤 다시 켰을 때마다 매번 가입을 해야한다면 구글을 이용하려는 사람은 없을 것이다. 이렇게 영구적으로 저장되어야 하는 데이터의..
Node.js의 특징 1. JS runtime 환경에서 동작한다. 2. Single Thread 이다. 3. Non-blocking I/O 이다. 4. Event-driven 방식이다. (참고로 2, 3, 4번은 JS의 특징이기도 하다.) 대표적으로 위 4가지의 특징을 가지고 있다. 이를 기반으로 하나씩 설명을 해보려고 한다. 1. JS runtime 환경에서 동작한다. -Node에서 JS를 사용할 수 있다는 의미이다. Node.js는 JS를 브라우저 밖에서 사용할 수 있는데 이 특징 덕분에 가능한 것이다. -이렇게 JS를 브라우저 밖에서 사용할 수 있기 때문에 서버를 만들 수 있게 된다. JS는 클라이언트를 만들 때도 사용 가능하기 때문에 JS와 Node.js를 통해 클라이언트와 서버를 같은 언어를 사..
Index의 개념 index란 책의 색인과 비슷한 개념으로서 DB에 있는 데이터를 더욱 빠르게 검색 할 수 있도록 해주는 데이터 구조이다. 책에서 특정 단어를 찾고 싶을 때 처음부터 끝까지 정독하면서 찾아야 하는 것을 색인 이라는 도구를 이용해 쉽고 빠르게 찾을 수 있는 것처럼, 특정 데이터를 찾고 싶을 때 index를 통해 더욱 빠르게 찾을 수 있게 된다. SQL을 통해 만든 DB에 name과 age가 있는 테이블이 있다고 가정해보자. 이 때 age에는 1억개의 값이 있고 age가 20인 행을 찾고자 한다면 1행부터 1억행 까지 20이 나올 때까지 탐색을 해야할 것이다. 이 때 index를 사용하면 훨씬 더 빠르고 쉽게 찾아낼 수 있게 된다. index는 기존 테이블에 있는 열의 값을 따로 빼내서 값을..
컴퓨터 구조 CPU / MEM(메모리) / DISK ⇒ 폰노이만 구조 이렇게 크게 3가지로 나눌 수 있다. *CPU가 가장 비싸고 그 다음이 MEM 그 다음이 DISK *I/O는 이들과 연결된 모니터나 마우스나 키보드 같은 입출력장치를 뜻한다. 운영체제(OS)는 이 3가지(하드웨어)들의 역할을 수행시킨다. DISK에 있는 실행파일을 MEM에 올리고 MEM는 이를 CPU로 보내서 프로세스를 만들어 수행을 시키는 과정을 운영체제가 관리 감독을 하게 되는 것이다. 막힘 없이, 효율적으로 수행시킨다. 운영체제 말 그대로 운영을 한다는 것이다. *확장자가 exe인 파일을 실행시킨다고 예를 들어보자. 실행파일(exe)인 파일을 다운로드 받으면 DISK에 저장이 된다. 이 실행파일은 ‘코드’와 ‘리소스’로 구성이 되..
브라우저가 웹페이지를 읽을 때 HTML을 순서대로 읽으면서 CSS와 병합해서 DOM 요소로 변환을 하게 된다. 이 과정을 거쳐 만들어진 DOM을 JS를 통해 사용할 수가 있다. (자세한 내용은 DOM에 대해 올린 글을 참조하면 된다.) 쉽게 설명하자면 HTML을 작성한 뒤 JS를 통해 코드를 작성하고자 할 때는 HTML과 JS를 연결시켜야 한다는 것이다. HTML과 JS를 연결하는 방식은 아래와 같다. -body 안에 script 태그를 넣기. -head 안에 script 태그를 넣기. -head 안에 async를 사용하기. -head 안에 defer을 사용하기. body 안에 script 태그를 넣기 아래 코드와 같이 HTML의 script 태그를 사용해서 src에 JS 파일의 경로를 작성하면 HTML..
Node.js를 통해 코드를 작성하다보면 import를 매우 많이 사용하게 된다. 이는 외부에서 만든 모듈 또는 개발 과정에서 만든 모듈을 가져올 때 사용하는 문법이다. (추가적으로 모듈의 개념에 대해서는 처음 프로그래밍을 하는 사람이라면 모호한 개념일 수 있는데 이 글을 통해 어느정도 모듈이란 무엇인지에 대해서 이해할 수 있게 될 것이다.) import를 많이 사용하면서 중괄호({ })를 쓰는 경우가 있고 안 쓰는 경우가 있는데 어떤 상황에서 각각 사용되는지에 대해 궁금증을 갖고 찾아보게 되었다. 모듈은 외부에서 만든 모듈(대표적으로 express)을 사용하는 경우와, 개발하는 과정에서 내가 모듈을 만들어서 사용하는 경우가 있다. 이렇게 만들어진 모듈은 export를 통해 내보내기를 할 수 있고 내보내..
DOM(Document Object Model) *JS는 HTML 문서를 조작하기 위해 만들어진 언어이다. 그리고 HTML 만으로는 정적인 콘텐츠만을 만들 수 있지만 JS를 통해 동적인 콘텐츠를 만들 수 있게 되었다. -먼저 브라우저가 HTML, CSS, JS의 코드를 받았을 때 이를 파싱, 렌더링을 하여 HTML의 경우 DOM을 생성하고, CSS의 경우 CSSOM을 생성하게 된다. 그 후 HTML, CSS, 정적인 JS 코드를 바탕으로 사용자에게 보여주게 된다. (브라우저는 HTML을 DOM으로 형성한뒤 → 렌더링을 통해 사용자에게 보여준다.) -이 때 브라우저가 HTML을 파싱, 렌더링을 해서 JS를 통해 접근이 가능하도록 HTML 요소(태그)들 하나하나를 '객체화' 시키는데 이걸 DOM이라고 하는 ..
Internet Protocol IP는 컴퓨터 같은 장치 자체의 식별 번호가 아니다. 해당 장치가 연결된 네트워크의 끝단 주소를 뜻한다. 장치가 인터넷에 접속한 곳의 네트워크상 위치를 뜻한다. (⇒ 장치가 네트워크에 연결이 되면 장치에 주소가 부여가 된다.) 그렇기 때문에 내가 사용하는 컴퓨터의 IP는 언제든 바뀔 수 있다. (노트북을 집에서 사용할 때의 IP와 카페에서 사용할 때의 IP는 다르다.) 그렇다고 집에서만 노트북을 사용한다고 가정했을 때 IP가 항상 똑같은 것은 아니다. IP가 바뀌는 경우도 있다. IP는 바뀌지 않는 ‘고정 IP’, 바뀌는 ‘유동 IP’로 나뉜다. 유동 IP로 인해 같은 장소에서만 노트북을 사용하더라도 IP가 바뀌는 경우가 생긴다. 또한 IP는 '공인 IP', '사설 IP'..