앞으로의 목표 👍


  1. javascript 능력 및 고난도 알고리즘 풀이 능력
  2. Nest, Graphql등 최신 기술 스택 활용 능력
  3. 기초 미니프로젝트 포트폴리오
  4. 로그인, 결제기반 심화프로젝트 포트폴리오
  5. 배포를 위한 네트워크 및 CI/CD 배포자동화 능력
  6. 120% 백엔드 개발 지식

오늘부터 꾸준히 해야할 일 👍


  • 영타실력 늘리기
  • 단축키 사용 익숙해지기
  • 코드리딩 실력 키우기
  • 데일리 퀴즈
  • 포트폴리오 작성
  • 독스에 친숙해지기
  • MDN 보는 연습하기

오늘의 수업 👍



📝 프론트, 백엔드, 데이터베이스 컴퓨터

  • 백엔드(서버)에서 브라우저(유저)로 JSON을 서빙하고,

  • 프론트(서버)에서 브라우저(유저)로 HTML을 서빙한다.

  • 프론트(관리자)에서 브라우저(관리자)로 HTML을 서빙한다

  • 모든 브라우저가 프론트(서버), 백엔드(서버)를 공유하는 것은 아니다, 하지만 모든 브라우저가 데이터베이스는 공유한다.

  • 데이터 베이스의 종류에는 SQL, NoSQL 등이 있다.

📝 SQL


  • 엑셀처럼 표에 저장한다.

  • 관계형데이터베이스(RDB)라고도 불린다.(두개의 테이블이 관계가 있다.)

  • 가로한줄을 행(row)이라고 부른다.

  • 세로한줄을 열(column)이라고 부른다.

  • 표를 테이블(table)이라고 부른다.

  • 사용하는 프로그램은 Oracle, MySQL, PostgreSQL 등이 있다.

  • 조회하는 명령어 : select 이메일 from User where 아이디

📝 NOSQL


  • 서류 봉투에 담아둔다.

  • 객체(key: value)형태로 적는다.

  • 서류봉투를 컬렉션(collection)이라고 부른다.

  • 문서 한장을 document라고 부른다.

  • 가로 한줄을 필드(field)라고 부른다

  • 사용하는 프로그램은 mongodb, firebase, redis 등이 있다.

  • SQL, NoSQL은 혼용해서 쓰는 것이 일반적이기 때문에 장단점을 알아야 한다.

  • 조회하는 명령어 : db.user.find({id:아이디})

📝 ORM(Object Relation Mapping)


  • 조회하는 명령어 : User.find({id:아이디})

  • swqualize(가장 유명한 js ORM), typeorm(가장 유명한 ts ORM), prisma 등

📝 ODM(Object Document Mapping)


  • NoSQL 조회하는 명령어 : db.User.find({id:아이디})

  • mongoose 등

📝 MongoDB


  • mongoDB는 문서지향(Document-Oriented) 저장소를 제공하는 NoSQL 데이터베이스 시스템입니다.

  • 이외에도 NoSQL 데이터베이스 10gen, Couchbse, CouchDB 등이 있지만 인지도 1위를 유지하고 있습니다.

  • mongo - 몽고DB 실행 명령어

  • sudo systemctl status mongod - 실행되고 있는 몽고DB 확인

  • show databases; - 무슨 데이터베이스를 사용하는지 보여주는 명령어

  • use local; - local 데이터베이스로 들어감

  • show collections; - 무슨 봉투가 있는지 보여주는 명령어

  • db.startup_log.find(); - 무슨 데이터가 있는지 보여주는 명령어(배열안에 객체로 들어가 있음)

  • 그냥 보기에는 너무 복잡하기 때문에 mongodb-compass를 사용함

  • 몽고DB 포트포워딩

    • docker-compose.yaml
    version: '3.7'
    
    # 컴퓨터들
    services:
    
    # 컴퓨터이름
    my-backend: # express
      build:
        context: .  # 현위치에 같이 있어요
        dockerfile: Dockerfile  # 실행할 파일명
      ports:
        - 4000:4000
    
    # 컴퓨터이름
    my-database: # mongodb
      image: mongo:5 # Dockerfile.mongo 삭제 후 작성
      ports:
        - 27017:27017

📝 MongoDB-Compass


  • mongo의 조회본이다

  • mongodb-compass에서 폴더를 생성했다고해서 mongo에 보내주는 것이 아니라 mongo에서 폴더를 생성해서 mongodb-compass에 보여주는 것이다.

  • ADD DATA로 A4용지를 하나 추가해 줄 수 있다.

📝 MongoDB와 Docker-Compose


  • 도커를 실행시켜서 하나는 몽고DB, 하나는 익스프레스 실행

  • 두개의 도커를 한번에 실행

  • docker-compose.yml - 띄여쓰기가 중요한 설정 파일

  • 부모 자식폴더간 들여쓰기 간격을 맞춰야한다.

▷ MongoDB와 Docker-Compose 실습

  1. sudo docker-compose build

  2. sudo docker-compose up

  3. sudo docker ps

  4. docker exec -it 컨테이너ID /bin/bash

  5. mongo

  6. show databases;

  7. use local;

  8. show collections;

  9. 몽고DB 컴패스에서 접속 // 접속이 안되면 docker-compose.yaml 포트포워딩 확인

📝 Docker-Compose 컴퓨터 이어주기


  • 컴퓨터가 2개가 이어지지 않을 것이다.

  • 네임리졸루션을통해 해결할 수 있다.

  • index.js

mongoose.connect('mongodb://localhost:27017/mydocker') 
-> mongoose.connect('mongodb://my-database:27017/mydocker')
  .then(() => console.log('DB 접속에 성공하였습니다.'))
  .catch(() => console.log('DB 접속에 실패하였습니다.'))
  • docker-compose.yaml
version: '3.7'

# 컴퓨터들
services:

  # 컴퓨터이름
  my-backend: # express
    build:
      context: .  # 현위치에 같이 있어요
      dockerfile: Dockerfile  # 실행할 파일명
    ports:
      - 4000:4000

  # 컴퓨터이름
  my-database: # mongodb
    image: mongo:5 # Dockerfile.mongo 삭제 후 작성
    # ports:
    #   - 27017:27017
    # 네임리졸루션으로 두 컴퓨터가 연결이 되었기 때문에 포트포워딩 해줄 필요가 없어짐

  • docker-compose.yaml파일이 수정되었을때는 다시 빌드할 필요는 없고 서버를 껐다가 키면 된다.

📝 정리 ppt


오늘의 마무리 👍



  • 복습
  • github 공부
  • 블로그 포스팅
  • 데일리 퀴즈
  • 알고리즘 문제 풀기

항상 겸손한 자세로 배우면서 성장하자, 할 수 있다!! 💪


출처 : 코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글