Open-API & DB // 220204

김기범·2022년 2월 7일
0

백엔드

목록 보기
1/1

Open-API

API란?

-API(Application Programming Interface, 응용프로그램 프로그래밍 인터페이스)는 응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다[출처:wikipedia]

API는 레스토랑의 '점원'

-레스토랑에서 손님에게 주문 가능한 메뉴판을 보여주고 손님이 고른 메뉴를 주방에 전달해준다.

  • 전달 받은 메뉴를 주방에서 요리한 후 음식이 나오면 고객에게 전달하는 '점원'이 API이다.

그럼 Open-API란?

  • 간단하게 말하자면 누구나 사용할 수 있도록 공개된 API를 말한다.

브라우저 요청 순서

  1. 브라우저에서 프론트엔드서버로 요청
  2. 프론트엔드에서 보내준 데이터를 브라우저에서 다운로드
  3. 다운받은 데이터를 브라우저에서 그려주기
  4. 백엔드서버로 useQuery 요청
  5. 백엔드서버에서 DB쪽으로 데이터 꺼내오기 요청
  6. 백엔드서버에서 요청받은 데이터를 백엔드서버로 보내주기
  7. DB에서 받아온 데이터를 백엔드서버 API에서 브라우저로 보내고 보여주기

- 프론트엔드서버(next)

  • 프론트엔드에서는 브라우저에서 사용자가 주소를 입력하고 엔터까지 입력하기를 기다리고 있다
  • HTML,CSS,JS를 브라우저에 그려준다
  • 그려주는 동안 백엔드서버에 요청할 useQuery는 아직 미실행 상태이다
  • 고정값을 가진 HTML,CSS,JS(하드코딩)들은 useQuery가 미실행 상태여도 브라우저에 그려주게 된다
  • 그 후에 백엔드서버로 useQuery가 요청이 된다

- 백엔드서버(node.js)

  • 백엔드서버는 API를 만들고 API요청을 기다리고 있으며 24시간 켜져 있어야한다(포트번호가 필요)
  • 어떤 특정 프로그램이 실행되고 있다(백엔드서버프로그램: 4000,8000,8080) => 24시간동안 프로그램이 실행되고 있다
  • 프론트엔드서버에서 받은 useQuery 요청을 DB로 보내준다

- 데이터베이스(DB)

  • 데이터베이스 서버프로그램을 설치해줘야 한다(포트가 필요함)
  • 포트번호는 마음대로 바꿀 수 있다
  • 종류 : Postgres(5432), Oracle, MySQL, MsSQL
  • 백엔드의 접속을 기다린다(24시간 실행되어 있는 상태)

현대 웹서비스

  • 웹서비스를 개발하고 운영하기 위해선 최소 3대의 컴퓨터가 필요하다
  • 한대의 컴퓨터에 3개의 프로그램(Front-end, Back-end, DB)을 설치해서 사용이 가능하나, 포트번호는 각각 다르게 중복되지 않게 활용해줘야 한다.
  • 하지만 cpu, mem의 과부하를 방지해주기 위해 3대 이상으로 나눠서 사용해주는게 보편화 되었다
  • 대형 서비스같은 경우 사용자가 접속을 하게 되면 해당하는 접속을 처리해줘야 하며
  • 백엔드에 API요청이 왔다면 그 요청을 받고 DB쪽에서 요청에 해당하는 부분을 찾아줘야 한다
  • 위 요청을 처리해주는 과정에서 cpu, mem가 사용이 된다(1번의 요청을 받을 때마다 사용)
  • 하지만 동시 접속자가 많게 되면 cpu, mem가 과부하가 일어나게 된다

웹서비스 처리 과정

  1. 브라우저에서 프론트엔드서버로 접속해서 다운로드 시작
  2. 다운로드가 시작되면 프론트엔드서버에선 HTML,CSS,JS를 브라우저로 보내준다
  3. 받아온 데이터들(HTML,CSS,JS)로 브라우저 화면에 그림을 그려준다
  4. 브라우저에선 백엔드서버쪽으로 useQuery API 요청을 한다
  5. 백엔드서버에선 API 요청을 받고 DB에 useQuery 데이터를 요청하고 DB에서 받아온 데이터들을 브라우저로 다시 보내준다

데이터베이스 종류

1. SQL 데이터베이스(관계형데이터베이스: RDB)

  • 종류 : MySQL, Oracle, Postgres, MsSQL
  • 표를 여러개 만들고 표와 표사이에 관계를 이어줄 수가 있다.

2. NoSQL

  • 종류 : MongoDB, Firebase
  • 각 표마다 관계가 없고 독립된 속성을 가진다

3. 서버 사이드 렌더링(프론트엔드)

1) ODM(Object-Dcument-Mapping)

  • document형 DB를 사용할 때
  • MongoDB를 사용할 때 설치해준다
  • 대표적인 프로그램: Mongoose

2) ORM(Object-Relation-Mapping): 관계형 데이터베이스를 사용할 때 설치해준다

  • 대표적인 프로그램: typeorm(타입스크립트), sequalize(자바스크립트에서 제일 많이 쓰인다), prisma

DB 관리프로그램

  • DBeaver(설치프로그램): 데이터베이스가 아니며 데이터베이스를 보여주는 관리프로그램이다
  • MySQL-workbench

💥PostgresSQL을 선택한이유

  • 데이터베이스에 이미 postgres가 설치 되어있다
  • 24시간동안 작동하고 있다

깨알 지식

  • ts-node : 소스코드가 완성되고 사용할 때(소스코드가 바뀌어도 리프레쉬 안됨)
  • ts-node-dev : vscode 개발중일 때
profile
코시국에 성장하는 코린이

0개의 댓글