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 엔드포인트와 회원가입 엔드포인트를 추가해서 발전시켰다.
현대 웹 시스템 아키텍처 구조: (기본 3티어) Client, API, Database
API 서버를 어떻게 만들까?
API 서버는 WAS(Web Application Server)와 같은 개념이다.
👉 WAS: Database와 데이터 작업을 수행하기 위해 동적인 컨텐츠를 제공하기 위해서 만들어진 서버.
- 도구를 준비한다
프로그래밍 언어
: Javascript, Python, Java, PHP 등..- 프로그래밍 언어가 실행될 수 있는 환경인
런타임(Runtime)
: Browser, Node.js, PVM, JVM 등..- 운영체제가 설치되어 있는
물리적인 하드웨어(물리적인 서버)
: MacOS 서버, Ubuntu 서버 등..
- 물리적인 서버(Linux) 한 대에 Node.js 런타임 설치
- API 역할을 할 수 있는 javascript 코드를 Node.js 런타임에서 실행
(API 서버 완성!)
클라이언트 | 크롤링 스크립트 | API 서버 | |
---|---|---|---|
JS코드 실행 환경 | Browser | Node.js 런타임 | Node.js 런타임 |
하는 일 | 화면 랜더링, 필요 데이터를 요청 | 크롤링 | 네트워크 요청을 처리 |
그외 Python과 PVM(Python Virtual Machine), Java와 JVM으로도 API서버를 만들 수 있다.
방법은 다양한데, 왜 Node.js로 API 서버를 구현해야 하는가?
(<-> monolithic 방식: 하나의 서버에 결제, 인증, 스트리밍 등의 모든 기능이 포함되어 있는 구조)
MSA: 결제 기능, 인증 기능을 분리해서 하나의 시스템에서 하나의 기능만 하도록 만들어진 구조
MSA의 특징