기술 질문

김기태·2021년 12월 17일
0

동기/비동기가 무엇이고 각각의 장단점

  • 동기 : 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) 통합
  • 트래픽 라우팅 및 로드 밸런싱
  • 자동 상태 검사, 모니터링, 롤아웃 및 소프트웨어 복원성 향상을 위한 롤백

프로세스

  • 실행중에 있는 프로그램을 의미
  • 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다

쓰레드

  • 쓰레드는 프로세스 내부의 작업의 흐름, 단위
  • 쓰레드는 한 프로세스 내부에 적어도 하나 존재
  • 멀티스레드에서 각 쓰레드끼리는 프로세스의 일정 메모리 영역을 공유
profile
김개발

0개의 댓글