간단 CS정리

00_8_3·2021년 6월 17일
0

Node 간단하게

  • 브라우저에서만 사용하는 것이 아닌 밖에서도 사용하기 위해 만들어진
    자바스크립트 런타임기 입니다.
  • 논블록킹으로 이전 작업이 멈추지 않아도 다음 작업을 수행합니다.
  • LIBUV (이벤트 루프와 싱글스레드)로 비동기적 작업을 수행합니다.

쓰기 적합한 곳

  1. 데이터의 실시간 처리가 필요한 어플
  2. 데이터 스트리밍 어플

넷플릭스나 우버같은 회사에서 사용하고 있다.

Http란

  • 인터넷에서 데이터를 주고 받을수 있는 프로토콜.
  • 클라이언트의 요청과 서버의 응답으로 구성. (비연결성 프로토콜)
  • tcp를 사용하는 응용 프로토콜.

헤더 바디 start line으로 구성되어 있다.

Restful api란

REST = Representational State Transfer

  • 자원을 이름으로 구분하여 상태를 주고 받는 모든 것.
  • 웹의 기존 기술과 HTTP 프로토콜을 활용하는 아키텍처이다.
  • URI를 통해 자원을 명시하고 HTTP 메소드를 이용한 CRUD를 적용한다.

구성 요소

  • 자원
  1. 모든 자원에는 고유한 ID가 있고 이 자원은 서버에 존재한다.
  2. 클라에서 URI를 통해 자원일 지정하고 서버에 자원의 상태에 대한 조작을 요청한다.
  • 행위
  1. Http 메소드를 사용한다.(GET POST PUT DELETE)
  • 표현
  1. 클라의 요청에 대한 응답을 보낸다.
  2. 응답은 json xml text 등으로 나타나는데
    보통 json을 많이 사용한다.

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

sql vs nosql (mysql vs mongo)

sql

구조화된 쿼리 언어

  • 정해진 스키마를 따라 테이블에 저장됩니다.

    • 스키마를 준수하지 않으면 레코드를 추가할 수 없습니다. (스키마 수정의 힘듬)
  • 데이터는 관계를 통해 여러개의 테이블로 분산됩니다.

    • 데이터의 중복을 피할 수 있습니다.
  • 수직적 확장만 가능 (단순한 서버 성능 확장. cpu 업그레이드)

nosql

기본적으로 sql과 반대되는 접근방식, 스키마와 관계 없음
쿼리도 사용할 수 있다는 의미에서 Not only sql이라고도 불린다.

  • no 관계형
    • 관계형 db에서 여러개로 나뉘었을 테이블을 한번에 저장가능. (복잡한 조인 사용 안해도됨)
  • 수직/수평적 확장 가능
    • 수직 : 컴퓨팅 파워(cpu 또는 램) 업그레이드
    • 수평 : 더 많은 서버 추가로 분산 (하나의 db 여러 서버)

그래서 언제사용?

  • sql

조인된 데이터가 자주 변경 될 경우
데이터구조가 극적으로 변경되지 않을 경우
데이터가 크게 쌓이게 될 여지가 별로 없는경우

  • nosql

지속적으로 새로운 기능이 추가변경되어 데이터구조를 사전정의 하기 힘든경우
데이터가 자주 변경하지 않는경우 (한번의 변경으로 수십개의 문서를 수정 할 필요가 없는 경우)
데이터가 너무 많을 경우

Docker container 사용 이유?

사용이유

  • 격리된 서비스로써 더많은 소프트웨어를 더 빨리 제공
  • 컨테이너 사용으로 손쉽게 배포하고 문제 파악 가능
  • 로컬에서 배포의 용이성
  • 비용 절감 가능

이미지란

도커에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리,
컴파일된 실행 파일을 묶는 형태이다.

  • 예를들어 우분투 이미지는, 우분투를 실행하기 위한 모든파일을 가지고 있다.

  • VM에 비해선 이미지 용량이 적다.

  • 이미지는 변하지 않는 값이여서 하나의 이미지로 여러컨테이너를 생성할 수 있고, 컨테이너가 삭제되더라도 이미지는 변하지 않는다.

  • 이미지는 여러 개의 레이어로 구성되어 있고
    파일이 추가되면 새로운 레이어가 생성된다.

오케스트레이션이란

도커를 이용하면
vm과 비교하여 컨테이너 생성이 쉬워 효율적이고
이미지를 통해 배포와 롤백이 간단해진다.

하지만 컨테이너가 진짜 많아지게 된다면?
모든 서버에 접속해서 명령어를 실행 해야한다.

오케스트레이션

클러스터 (Cluster)

  • 중앙 제어 (master-node)
    기존에는 서버 관리자가 각 서버 스펙, 리소스 상태, 어플리케이션 구동 등을 체크
    관리해야 되는 컨테이너가 많아지면서 물리적인 관리 보다는 추상화 된 클러스터로 관리
    클러스터 관리를 위한 마스터 노드를 두고 마스터 노드가 클러스터에 명령을 내리는 방식
    관리자는 마스터 노드를 관리하는 것 만으로 클러스터를 관리할 수 있어야 함
  • 네트워킹
    클러스터 내에서는 가상 네트워킹 등을 통해 노드 간에 네트워킹이 원활하게 이뤄져야 함
  • 노드 스케일
    클러스터 내에 컨테이너가 무한히 증가 하더라도 관리가 가능해야 함

상태 (State) 관리

  • 원하는 상태(예: 컨테이너 수량)를 설정하는 것 만으로 별도의 명령 없이 해당 상태로 변경될 수 있어야 함
  • 장애로 인해 상태가 변경 된 경우 설정 된 상태를 유지하기 위한 명령이 자동 실행되어야 함

배포 관리 (Scheduling)

  • 유휴 리소스를 관리하여 새로운 컨테이너 생성 시 알맞은 서버에 배치 시킬 수 있어야 함
  • 추가 리소스가 필요 한 경우 리소스를 할당하여 컨테이너를 배치 시킬 수 있어야 함

배포 버전관리 (Rollout / Rollback)

  • 배포 시 개별 배포가 아닌 중앙에서 자동 배포가 진행될 수 있어야 함
  • 롤백의 경우에도 중앙에서 관리하며 일괄적으로 롤백이 진행될 수 있어야 함

서비스 등록 및 조회 (Service Discovery)

  • 새로운 서비스가 추가 된 경우 자동으로 해당 서비스에 대한 설정이 추가 되어야 함
  • 프록시 서버는 설정 저장소를 바라보며 설정이 변경 된 경우 프로세스 재시작을 통해 새 설정을 반영해야 됨

볼륨 스토리지 (Volume)

  • 각 컨테이너 별 볼륨 관리를 추상적인 레벨에서 손쉽게 관리할 수 있어야 함

리액트 DOM이란?

DOM이른 Document Object Model 약자로
객체를 통한 구조화된 문서를 표현하는 방법입니다.
쉽게 말해 html의 태그들을 트리구조로 변환하고
자바스크립트가 접근하게 도와줍니다.

서버사이드 랜더링이란?

서버에서 페이지를 그려 클라로 보낸 후 화면에 표시하는 기법.

CSR에서 브라우저의 네트워크 탭을 보면
html의 태그들이 안채워져 있지만

SSR의 경우 html을 서버에서 그려던져주기 때문에
첫화면 로딩 속도가 빠르다

왜쓸까?

  • 검색 엔진 최적화 (SEO)

  • 빠른 페이지 랜더링

0개의 댓글