220118_TIL_07

최다슬·2022년 5월 17일
0

⭐️Today I Learend

목록 보기
8/8
  • 일반적인 방식 : 껍데기 받아오고 데이터 2차적으로 받아와서 채워주는것
  • 데이터까지 같이 채워지는 방법? SSR(서버사이드렌더링) 방식으로 존재
  • storage : DB에 저장할 용량이 클 경우 외부 클라우드 서비스(NHN 등)에서 저장하게됨

DB

: 브라우저에서 백엔드 서버로 API 요청을 보내고 요청을 받은 백엔드가 DB로 데이터를 저장하거나, 가져오는 등의 행동을 하기 위해 ORM이나 ODM(Object-Document Mapper)을 사용

ORM(Object-Relational Mapper)
: 표(table)로 이루어진 데이터베이스를 다룰 때 사용하는 SQL을 다른 언어에서 쉽게 사용하도록 해주는 역할

  • ORM의 종류 : sequalize, typeorm, prisma

ODM(Object-Document Mapper)
: 문서(document)와 collection으로 이루어진 NoSQL 데이터베이스를 다룰 수 있도록 해줍니다.

  • ODM의 종류 : mongoose

표(Table) (SQL)

  • 표에 한줄 한줄(row) 쌓이는 형식(ORM : Object Relation Mapping )

  • RDB : 표 간에 관계가있는 관계형 DB

  • ex) Oracle, MySQL, Postgresql

서류(Collection) (NoSQL: not only sql)

  • 하나하나의 document로 저장되어있으며 그 document는 객채형태로 저장되어있음

  • 하나의 객체가 하나의 문서에 저장이되는 형식 (ODM : Object Document Mapping 객체를 문서로 맵핑해준다는 의미 )

  • SQL + 추가적 기능

  • ex) MongoDB


도커

도커가 나오게 된 이유

: 버전까지 맞춰서 설치를 했는데 안되면? 프로그램이 운영체제에 따라서 작동환경이 달라져서 -> 가상머신으로 설치가능(윈도우 컴퓨터 안에 가상머신으로 리눅스 설치하는것) -> 컴퓨터 안에 컴퓨터를 또 설치하니 속도가 느려짐 => 가벼운 Docker 가 나오게됨!

도커란?

: 마우스, 키보드 등 불필요한 운영체제는 공유해서 같이 쓰고 필요한 운영체제들만 설치하는것! -> 부팅 등 운영체제의 핵심기능을 공유하는 가상머신 => 따라서 os 전체를 설치하지 않아도 되는것!

  • 불필요한 추가적인 운영체제 설치를 하지 않도록 설정 가능
  • 컨테이너를 구축, 배포, 복사하고 한 환경에서 다른 환경으로 이동하는 등 유연하게 사용 가능
  • ✓ 개발/ 배포환경 통일 , 프로그램 미리 설치해놓을수있음(어떤것들을 설치해야할지 목록 셋팅되어서 명령어 한번이면 모두 설치가 완료되게됨), 가벼운 가상 컴퓨터 라는 장점
  • Docker = container(컨테이너) 로 비유 많이 함

어떻게?

: 개발 환경 요소들이 설치된 모습을 이미지로 저장하고 저장한 이미지를 클라우드에 올려 이미지들이 서로 연결되서 동작하는 설정을 문서(Dockerfile)로 저장합니다. 새 컴퓨터에 가서 복사한 문서의 내용대로 이미지를 다운받아 설치할수있도록 해주는 기능


도커 설치 및 확인

  • 도커 설치 : https://www.docker.com/ 도커 홈페이지에 들어가서 자신에게 맞는 사양으로 설치
  • 도커 설치 확인 : 터미널에서 docker --version 명령어 입력 으로 확인 가능

Docker 사용

Dockerfile 생성

FROM node:16 
WORKDIR /myfolder/
COPY . /myfolder/
CMD node index.js
  • FROM node:16 → node, npm, yarn이 모두 깔린 리눅스 컴퓨터가 하나 생성되는것
  • WORKDIR /myfolder/ → 작업폴더 생성 및 지정
  • COPY . /myfolder/ → (. 은 내컴퓨터 /myfolder/ 는 도커컴퓨터) 내컴퓨터안에있는 모든 폴더를 myfolder 복사해달라는 의미
  • CMD node index.js → 복사해서 넣은 파일을 도커 실행

즉, 실행시키게되면 node16버전이 깔려있는 리눅스 컴퓨터가 실행되고 그 안에 마이폴더라는 폴더가 있고 그 안에 index.js가 카피되어있는데 CMD node index.js 를 하면 자동으로 node index.js가 실행되는 원리
⇒ 이미지 빌드

이미지 빌드를 가지고 실행시킬것 📌 즉, 아직 실행이 된것아닌상태


Docker build

: Dockerfile을 기반으로 이미지를 생성하는 작업
▶︎ docker build . : 폴더 파일이 있는 위치에서 진행 -> 포장이 완료됨!(한줄씩 따로 포장이 진행) = 이미지(포장된 결과)가 구워진것(이미지가 생성된것)

▶︎ docker images. : 이미지가 구워진것들 뭐가 있는지 확인(우리가 만든 이미지 확인 가능)

Docker run

: 포장된 이미지를 가지로 하나의 컴퓨터를 실행시키는것 (컴퓨터를 새로 만드는것)

  • 도커를 실행시키는것

▶︎ docker run 이미지ID : 이미지(도커) 실행

  • 이미지 ID - docker images에서 확인가능!
    (=> 복사된 index.js 파일이 실행되면서 안녕하세요!! 도커 안에서 index.js 파일을 실행했군요!!! 결과가 나옴)

📌 docker 는 실행을하고나면 컴퓨터가 자동으로 종료가되므로 주의할것!

  • api 서버를 만든다는것은 24시간 컴퓨터가 실행되야하므로 종료가 안되게 만들어야됨!
  • 따라서, 안쪽에서 while(true)/ for() / express.listen(3000) 등으로 무한반복되게 반복문등 작성해줘야됨

▶︎ docker ps : 현재 실행중이거나 있는 가상 컴퓨터(도커) 확인(종료됬는지 확인가능) 방법

  • ps = process
  • 도커 프로그램이 아무것도 없으면? 실행중인 도커가 종료되어 아무것도 뜨지 않는것

▶︎ docker ps -a : 종료된 컴퓨터까지 모두 보여주는 실행키

  • 언제 종료되었는지도 알수있음

  • 종료된것 계속 보관할 필요없기에 삭제해줘도됨.

  • docker ps -a 를 실행하면 실행된 이미지 앞에 실행된 컨테이너 즉 새로운 컴퓨터 아이디가 나타나는것 확인 가능

  • docker ps -a 하면 컨테이너는 삭제되었지만 이미지는 삭제되지 않는것!!! (docker images 로 이미지 확인해보면 알수있음)

▶︎ docker stop 컨테이너아이디 : 실행중인 컨테이너 중지 명령어

▶︎ docker rm 컨테이너 아이디 : 종료된 컴퓨터 삭제

▶︎ docker rmi 이미지 아이디 : 도커 이미지 삭제

  • docker images 로 삭제되서 없는것 확인 가능

▶︎ docker rmi ``docker images -a -q`` (백틱으로감싸서) : 모든도커 이미지 삭제


Docker 내부 접속

: 실행중인 도커 터미널은 그대로 둔 상태에서 새로운 터미널에서 진행

  • 내 컴퓨터 -> 도커 컴퓨터로

▶︎ docker exec -it 컨테이너아이디 /bin/bash : 도커에서 돌아가고 있는 가상 컴퓨터의 터미널로 들어온 것

  • 도커로 실행하는데 -i (수정할수있겠금 권함을 줘 standard input (stdin)약자)
  • t(컨테이너 터미널에 접속한다) bin/bash 쉘이 도커 컴퓨터 안에 열림
  • => codecamp-backend-01에서 root@37df2a7659d3: 로 위치가 바뀌는것 확인(root@37df2a7659d3: => 다른쉘 즉 다른 컴퓨터로 들어온것! = 도커 컴퓨터!)

root@37df2a7659d3:/myfolder# => myfolder 에 현재 들어와있는것 (WORKDIR /myfolder/ 작업디렉토리를 마이폴더로 했기에!) -> ls (마이폴더안에 모두 카피된것 보임!- node modules가 설치된것도 확인가능! 분명 폴더 목록에는 없는데 ls안에 보면 있으니!) -> 상위폴더로 올라가서 ls 로 확인해보면 내가 만든 마이폴더도 확인가능

▶︎ mkder aaa : aaa 폴더 생성 -> 다시 ls 로 보면 aaa 폴더 생성 확인 가능

▶︎ top : 현재 실행되고있는 프로그램 목록들 나옴(command탭 보면 node도 실행되고있는것 확인가능)

0개의 댓글

관련 채용 정보