[TIL-31] API

da.circle·2022년 10월 11일
0

TIL

목록 보기
31/44

웹 서비스의 역사와 발전

1세대 웹

  • HTML, CSS 사용
  • 단순한 정보 제공
  • 서버가 HTML 페이지 전체를 클라이언트에 전송한다.
  • 동적인 로직이 없다. → 정적이다.

2세대 웹

  • 동적인 웹
  • JavaScript 출현
  • Frontend, Backend 구분 없음
  • 하나의 서버로 운영 → HTML,CSS,JS,Data 모두가 같은 서버

3세대 웹

  • SPA(Single Page Application)
  • 단일 HTML 페이지에 메인 JS파일 포함
  • JavaScript가 HTML 요소 생성부터 모든 페이지 및 기능을 동적으로 처리
  • 서버와 데이터를 실시간으로 주고받는다 → 화면을 동적으로 구성
  • Frontend, Backend 구분 → SPA : Frontend → 서버와 통신 : Backend

Modern Web System Architecture

  • 웹서비스의 복잡성 증가 → 접속량, 데이터 양 증가
  • System Architecture 발전 → MSA(Micro Service Architecture) → FE / BE 서버 분리 → 서비스 별 Backend API 서버 세분화

API

  • Application Programming Interface
  • 응용 프로그램(Application)에서 사용할 수 있도록, 운영 체제 혹은 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
  • 응용 프로그램들이 서로 소통하기 위한 접점
  • Application : 운영체제에서 실행되는 모든 소프트웨어(브라우저, 카톡, 엑셀 등등)

Interface

  • 상호간에 소통을 위해 만들어진 접점 → 예시) 손님 ⇆ 점원 ⇆ 주방

User Interface

  • UI
  • 사용자 인터페이스
  • 인간과 컴퓨터 사이에서 의사소통을 목적으로 만들어진 물리적, 가상적 접점(매개체)
  • 종류 : 키보드(하드웨어), 모니터(하드웨어), 마우스 포인터(GUI, Graphical User Interface), 프로그램 아이콘(GUI)
  • Web User Interface(WUI) : 화면 디자인, 검색 버튼, 스크롤 바 등

웹 서비스에서의 API

  • client : 사용자가 사용하는 웹 브라우저 또는 모바일 애플리케이션
  • Database : 서비스 운영에 필요한 데이터, CRUD 기능 등
  • API : 브라우저와 데이터베이스 사이에서 데이터를 읽거나 쓰기 위해 필요한 접점

Advanced API system and Deployment

  • 다양한 서비스 경험을 통해서 실무 수준의 RESTful API 구현
  • 자료구조와 알고리즘을 적용하여 최적화된 코드 작성

Node.js

  • Chrome 브라우저의 V8 Javascript엔진을 탑재
  • 이벤트 기반의 Server Side 오픈소스 Javascript 런타임
  • 내장되어 있는 기능들로 높은 동시 요청 처리 성능을 갖는 HTTP 서버 구축이 가능하다.

장점

⇒ FE / BE 기술 스택 통합

  • 프론트엔드/백엔드 애플리케이션 개발에 동일한 언어(Javascript)를 사용하기 때문에 코드를 모듈로 만들어서 재사용이 가능하다.
  • 프론트엔드 개발자가 서버 프로그래밍을 시작할 때 최소한의 노력만으로도 가능하다.
  • 개발팀 생산성 향상에 도움이 된다.

⇒ 빠른 처리 속도와 동시 요청 처리 성능

  • V8 엔진 : 속도가 빠르다!
  • 지연 없이 동시 요청을 빠르게 처리한다.

⇒ MSA(Micro Service Architecture)에 적합하다.

  • Monolithic Architecture : 하나의 서버에 모든 기능 포함
  • Micro Service Architecture : 서비스를 독립적으로 나누어서 하나의 시스템에서 하나의 기능만 하도록 만들어진 구조

REPL

  • Read Eval Print Loop
  • Javascript, node, js 코드를 실시간으로 처리하는 대화형 쉘(Shell)
  • 사용자가 입력한 코드를 읽음 → 해석 결과 평가 → 결과 출력 → 사용자의 종료신호 전까지 반복
  • 파일을 생성하지 않고 Javascript를 실행할 수 있다.
  • 사용법 : node
  • 종료 : ctrl+c 또는 ctrl+d 또는 .exit 입력

util.inspect()

-객체의 값을 문자열로 표현해 반환한다.

사용법

const util = require("util");

let result = util.inspect(
  객체명,
  (showHidden = false),
  (depth = null),
  (colorize = true)
);

속성 참고 : nodejs.org/api/util

  • 처음에 배열안에 여러 객체를 출력하려고 했다.
const util = require("util");

let person = [
  {
    firstName: "name1",
    lastName: "name11",
    pets: [
      {
        name: "cat1",
        age: 11 
      },
      {
        name: "cat2",
        age: 8 
      },
      {
        name: "cat3",
        age: 5 
      },
    ],
  },
];


console.log(person);

결과

  • pets 배열이 이렇게 [Object]로 뜬다. 여기서 사용하는 함수가 util.inspect()이다.
const util = require("util");

let result = util.inspect(
  person,
  (showHidden = false),
  (depth = null),
  (colorize = true)
);

console.log(person)

결과

wsl 설치해서 Ubuntu 환경에서 코드를 치는데 생각보다 어렵다... 많은 연습이 필요할 것 같다.

profile
프론트엔드 개발자를 꿈꾸는 사람( •̀ ω •́ )✧

0개의 댓글