1. BackEnd
▷ BackEnd 란?
- FrontEnd를 클라이언트라 하고 BackEnd를 서버라고도 함
- BackEnd는 웹 애플리케이션의 사용자가 보지 못하는 영역인 원격인 프로그램 및 데이터베이스를 관리하는 기술
- 일반적으로 BackEnd라고 하며 데이터베이스와 연동하여 동작하는 것을 말함
▷ BackEnd 대표적인 개발 언어
Java | - 대표적인 객체지향언어(OOP)로 가장 인기있는 서버 개발 언어 - 웹 개발 이외에도 모바일, 임베디드 등 다양한 분야에 사용 |
Python | - 파이썬은 개발자들이 시스템을 효율적으로 통합하고, 빠르게 작업할 수 있게 해주는 프로그래밍 언어로 많은 사용자에게 선택받고 있는 추세 - 비교적 자연어와 유사하기 때문에 개발을 처음 접하는 사람도 용이하게 이용가능 - 인공지능 영역에서 빠르게 점유율을 높여가고 있음 |
PHP | - 하이퍼텍스트전처리기(Hypertext Preprocessor)의 약자로 웹 개발 중에서 서버 측에서 주로 사용하는 프로그래밍 언어 - 러닝커브(학습속도)가 짧은 편으로 초보자에게 사랑 받고 있음 |
Ruby | - 일본 개발자 유키히로 마츠모토가 개발한 스크립트 형식의 개발 언어 - 사람이 보기 쉬운 형식으로 코드의 가독성이 높아 파이썬과 비교되곤 함 |
Node.js(JavaScript) | - Javascript 개발 언어를 사용하여 서버 프로그램을 가능하게 한 프레임워크 - Node + Express 프레임워크의 조합을 통해 서버 개발 가능 - 즉, Node.js로 인해 FrontEnd 개발 언어였던 Javascript 언어를 서버 영역으로 확장한 아주 큰 역할을 한 프레임워크 |
▷ 기타용어 정리
API | - HTTP 요청을 백엔드 컴퓨터에 보냈을 때 실행되는 백엔드 기능 |
REST-API | - API를 보다 실용성 있게 잘 정리하여 표준화한 웹 요청 호출 방식 |
axios | - FrontEnd에서 BackEnd로 데이터를 주고 받기 위한 통신 라이브러리 |
express | - Node에서 쉽게 웹서버를 개발 할 수 있도록 도와주는 프레임워크 - FrontEnd에서 BackEnd API를 요청/응답 시 도움을 주는 도구 |
koa | - express 개발팀이 훨씬 가볍고, 편리하게 사용 가능 하도록 개선하여 오픈 소스로 공개한 node.js용 백엔드 프레임워크로 장점 중 하나인 async/await를 편리하게 이용 가능 하도록 지원함 |
2. Node.js
▷ Node.js 란?
- Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임
- 즉, 노드를 통해 다양한 자바스크립트 애플리케이션을 개발 실행 할 수 있으며 특히 서버를 개발하고 실행하는데 가장 많이 사용되는 프로그램이다.
- 클라이언트인 FrontEnd 쪽과 서버인 Node.js 서로 간에 데이터를 통신하면서 요청과 응답을 통해 화면을 보여주고 하는 것이다.
- 서버 쪽에서 HTML 파일을 만들어 응답으로 보내주는 것은 서버에게 부담이 되므로 FrontEnd에서 화면을 만들고 필요한 데이터만을 서버 쪽에서 받아오는 쪽으로 하는 방법도 있다.
- Node.js는 express 프레임워크와 한 세트로 움직이며 Node.js보다 express 프레임워크를 배움으로 서버를 사용할 수 있다.
▷ Node.js 특징
- 자바스크립트 언어를 활용한 개발 및 실행 환경을 제공
- Non-blocking I/O와 단일 쓰레드 이벤트 루프를 통해 높은 처리 성능을 갖음
- 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등 별도의 소프트웨어 없이 동작 가능하도록 하는 것이 큰 장점(Java 서버는 Tomcat Apache가 따로 필요)
- Node.js가 탄생하기 전에는 일반적으로 서버 개발 Java 언어로 클라이언트 개발은 Javascript로 개발하는 것이 당연했다.
- 하지만, 자바스크립트로 서버를 개발 가능하도록 만들어준 덕분에 FrontEnd 개발자의 영역이 서버 개발자의 영역으로 넘어가게 해준 가장 큰 전환점을 제공
▷ sysn(동기) vs async(비동기)
- sysn(동기)
- Java, C++ 등 객체지향언어가 일반적으로 대표적인 동기 방식 개발언어로 이전 작업(로직 또는 함수 수행)이 완료되어야 다음 작업을 수행할 수 있는 언어를 말함 - async(비동기)
- 동기 방식의 개발 언어와 반대로 이전 작업이 완료되지 않아도 다음 작업을 수행해 동시에 작업을 수행 가능하도록 하는 방식
- 자바스크립트가 대표적인 비동기 방식의 개발 언어로 Node.js가 서버에서 이 방식을 아주 잘 동작하도록 환경을 제공
- 이를 비동기 방식으로 Non-blocking이라고 함
- 위와 같이 일반적으로 동기 방식인 Java, C++ 등에서는 동시 작업을 위해 쓰레드(멀티쓰레드)라는 프로그래밍 기술을 사용해 동시 작업을 수행함
- 하지만 쓰레드 기술은 큰 장점이 있지만 개발 난이도 및 사용상 많은 어려움으로 인해 고급 기술을 가진 사람도 다루기 쉽지 않았음
- 그러나 Node.js는 하나의 쓰레드, Non-blocking 모델로 하나의 쓰레드가 알아서 여러개의 요청을 잘 관리하여 멀티 쓰레드처럼 동작하게 하는 기술 덕분에 많은 개발자에게 쉽게 접근할 수 있게 해 줌
'FrontEnd > Node.js' 카테고리의 다른 글
[Node] Node 내장 객체, console, timer 객체 (0) | 2022.11.23 |
---|---|
[Node] 모듈(module) (0) | 2022.11.17 |
[Node] RestAPI, URI 고려사항, 응답 상태 코드 (0) | 2022.11.16 |
[Node] FrontEnd & BackEnd 연동 (0) | 2022.11.16 |
[Node] Node.js 초기 설치, 설정, 용어, 동작 (0) | 2022.11.11 |