1. Node.js based API Server_10.26

송철진·2022년 10월 26일
0

Simple API server with http module(1)

요약

  • 현대 웹 시스템 아키텍처 구조: Client / API / Database
  • API는 API의 역할을 하는 물리적인 서버 또는 서버 안에서 실행되고 있는 애플리케이션이 될 수 있다. (보통은 물리적인 서버를 의미)
  • API를 만들기 위해 필요한 것:
    • 프로그래밍 언어
    • 런타임(Runtime): 프로그래밍 언어가 실행되는 환경
    • 운영체제가 설치되어 있는 물리적인 하드웨어(물리적인 서버).
  • 컴퓨터 간 통신: IP 주소, 포트 번호 사용
  • Node.js에 내장되어 있는 http 모듈을 사용해 API(http 서버)를 만들 수 있다.
    • server = http.createServer() 메서드: HTTP 서버 객체를 생성
    • httpRequestListener 함수: HTTP 요청(”request” 이벤트)가 발생하면 실행시키는 함수
    • server.on() 메서드: “request” 이벤트, httpRequestListener 함수를 이벤트로 등록.
    • server.listen() 메서드: server가 IP:PORT 로 들어오는 http 요청을 수신을 대기하도록 서버를 실행.
  • 만든 API에 서버의 상태를 확인하는 ping 엔드포인트와 회원가입 엔드포인트를 추가해서 발전시켰다.

1. Node.js based API Server

1-1. Client <-> API <-> Database 구조

현대 웹 시스템 아키텍처 구조: (기본 3티어) Client, API, Database

  • API: API의 역할을 하는 물리적인 서버 또는 서버 안에서 실행되고 있는 애플리케이션. (보통은 물리적인 서버)
  • Client, API, Database가 각각 담당하고 있는 역할을 잘 수행함으로써 웹 서비스가 온전하게 사용자들에게 서비스가 될 수 있게 된다.
  • Client
    : 사용자가 웹 서비스를 이용하기 위해서 사용하는 웹 브라우저(Chrome, Safari), 모바일 앱, 데스크탑 프로그램, 그리고 다른 서버에 요청을 보내는 애플리케이션
  • Database
    : 웹 서비스에서 사용자가 읽고, 쓰고, 수정하고, 그리고 삭제하는 모든 데이터를 영구적으로 저장하고 있는 시스템
  • API 서버
    : Client와 Database 사이에서 Client의 복잡한 요청을 해석해서, 데이터베이스에 데이터를 읽거나 쓰는 작업을 수행하고 그 결과를 다시 한번 가공해서 Client에게 전달.

1-2. API 만드는 방법

API 서버를 어떻게 만들까?

API 서버는 WAS(Web Application Server)와 같은 개념이다.
👉 WAS: Database와 데이터 작업을 수행하기 위해 동적인 컨텐츠를 제공하기 위해서 만들어진 서버.

  1. 도구를 준비한다
  • 프로그래밍 언어
    : Javascript, Python, Java, PHP 등..
  • 프로그래밍 언어가 실행될 수 있는 환경인 런타임(Runtime)
    : Browser, Node.js, PVM, JVM 등..
  • 운영체제가 설치되어 있는 물리적인 하드웨어(물리적인 서버)
    : MacOS 서버, Ubuntu 서버 등..
  1. 물리적인 서버(Linux) 한 대에 Node.js 런타임 설치
  2. API 역할을 할 수 있는 javascript 코드를 Node.js 런타임에서 실행

(API 서버 완성!)

클라이언트크롤링 스크립트API 서버
JS코드 실행 환경BrowserNode.js 런타임Node.js 런타임
하는 일화면 랜더링, 필요 데이터를 요청크롤링네트워크 요청을 처리

그외 Python과 PVM(Python Virtual Machine), Java와 JVM으로도 API서버를 만들 수 있다.

1-3. Node.js 기반 API의 이점

방법은 다양한데, 왜 Node.js로 API 서버를 구현해야 하는가?

  1. 자신이 가장 잘 이해하고 사용할 수 있는 언어를 선택해서 구현하는 것이 가장 좋다.
  2. 아직 익숙한 언어가 없거나 새로운 서비스를 만들 때 무엇으로 시작하는게 좋을지 고민일 때
    : 이하 Node.js 기반의 API 서버가 갖는 장점을 참조

1-3-1. Frontend / Backend 기술 스택 통합

  1. 프론트엔드와 백엔드 양쪽에 동일 언어 사용: 코드를 모듈로 만들어서 재사용 가능
  2. (Javascript로 훈련된 개발자) 최소한의 노력으로 서버 측 프로그래밍을 시작
  3. 개발팀의 전반적인 생산성 향상 도움.

1-3-2. 빠른 처리 속도

1-3-3. MSA (Micro Service Architecture)에 적합

(<-> monolithic 방식: 하나의 서버에 결제, 인증, 스트리밍 등의 모든 기능이 포함되어 있는 구조)
MSA: 결제 기능, 인증 기능을 분리해서 하나의 시스템에서 하나의 기능만 하도록 만들어진 구조

MSA의 특징

  • 가벼운 시스템을 새롭게 구축하는 방법으로 확장.
  • Node.js는 상대적으로 가벼운 런타임이기 때문에 MSA와 아주 잘 조화

1-3-4. 그외 장점

  • 풍부한 생태계(라이브러리 약 80만개)
  • JSON 형식을 그대로 사용할 수 있다.
profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글