동기/비동기가 무엇이고 각각의 장단점
- 동기 : Call하고 응답 올때까지 기다렸다가 다음 로직 실행
-장점:안전성 보장, 순서 보장
-단점:느리다
- 비동기 : Call하고 응답 오지않아도 다음 로직 실행
-장점:빠르다
-단점:처리하기 까다로움, 순서 보장x
Node.js는 무엇인가?
- Node.js는 클라이언트의 브라우저 외부에서 웹 애플리케이션을 실행하기위한 오픈 소스, 자바 스크립트 런타임 환경
- 싱글 쓰레드
- Non-Blocking I/O: 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되도록 하고, 그 함수가 다시 태스크 큐를 거쳐서 호출 스택에 올라오기를 기다리는 방식이 논블로킹 I/O
- Event-LOOP: 이벤트 기반이란? 이벤트가 발생할 때 미리 지정해둔 작업을 처리하는 방식.
⇒ NodeJS는 이벤트 리스너에 등록해둔 콜백 함수를 실행하는 방식으로 동작한다.
⇒ 이벤트 루프가 이를 가능하게 해줌.
Node.js를 사용하는 이유?
- 멀티 스레드 방식에 비해 적은 컴퓨터 자원
- I/O 작업이 많은 서버로 적합
- 웹 서버가 내장되어 있어 별도의 웹서버를 설치할 필요가 없다
- 자바스크립트를 사용하기 때문에 JSON 형식과 쉽게 호환
Node.js가 단일 스레드인 이유?
- 일반적인 웹로드에서 단일 스레드에서 비동기 처리를 수행하면 일반적인 스레드 기반 구현 대신 더 많은 성능과 확장 성을 얻을 수 있습니다
I/O?
- I/O라는 용어는 매체간에 데이터를 전송하거나 다른 매체로 또는 다른 매체로 데이터를 전송하는 프로그램, 작업 또는 장치를 설명하는 데 사용
도커란?
- 도커는 컨테이너 기반의 가상화 도구이며, 어플리케이션을 환경에 구애받지 않고 실행하는 기술이라고 할 수 있습니다.
도커의 장점
- 편리한 개발 (도커 컨테이너는 Host OS 위에서 실행되는 격리된 공간. 독립된 개발 환경을 보장)
- 쉬운 배포 (서비스를 개발했을 때 사용했던 환경을 다른 서버에서도 컨테이너로서 똑같이 복제할 수 있기 때문에 개발/운영 환경의 통합이 가능)
- 독립성과 확장성 (마이크로서비스 구조의 개발읠 통해서 어플리케이션들을 독립적으로 관리하여 편리한 유지보수가 가능)
쿠버네티스란?
- 컨테이너 배치 자동화 및 관리를 위해 Google이 개발한 오케스트레이션 툴
쿠버네티스 사용 이유?
- 더욱 쉬운 자동화 및 데브옵스(DevOps) 통합
- 트래픽 라우팅 및 로드 밸런싱
- 자동 상태 검사, 모니터링, 롤아웃 및 소프트웨어 복원성 향상을 위한 롤백
프로세스
- 실행중에 있는 프로그램을 의미
- 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다
쓰레드
- 쓰레드는 프로세스 내부의 작업의 흐름, 단위
- 쓰레드는 한 프로세스 내부에 적어도 하나 존재
- 멀티스레드에서 각 쓰레드끼리는 프로세스의 일정 메모리 영역을 공유