본문 바로가기

Back-End/Node.js

모듈/패키지/라이브러리/프레임워크/플랫폼/API 용어의 의해

반응형
모듈/패키지/라이브러리 프레임워크 플랫폼 API
jQuery
Socket.io
Express.js
(Node.js 프레임워크)
Node.js
(서버사이드 자바스크립트 플랫폼)
구글 지도 API
페이스북 API

하나씩 차례대로 살펴보자.

 

 

모듈

모듈화란 수 많은 로직을 재사용할 수 있는 단위로 나누어 별도의 모듈이라는 형태로 떼어나 다른 프로그램에 부품으로 사용하는 기법이다. 그리고 그 결과물을 모듈이라 한다. 모듈은 데이터, 함수, 클래스 등이 담겨져 있는 파일이다. 내장 함수가 아닌 외장 함수의 경우 외부의 라이브러리(모듈)을 사용하기 위해서 따로 import하는 작업이 필요하다.

모든 Node.js 모듈은 package.json에 패키지가 등록이 된다. npm install [라이브러리명] 을 입력하면 설치와 동시에 package.json에 자동으로 등록되어 사용할 수 있다. 혹은 라이브러리를 package.json에 등록하고, npm install 명령어를 입력하는 방법으로도 사용할 수 있다.

Javascript에서는 웹 브라우저를 위한 언어(클라이언트)로 시작했으나, 서버 측에서 실행되는 Javascript(자바스크립트 서버 사이드인 Node.js)도 있다. 따라서 호스트 환경에 따라 모듈화하는 방법을 모두 알아야 한다. 클라이언트에서는 script 태그를 통해 파일을 불러오거나 혹은 CDN을 통해 가져오고, 서버에서는 아래 방법을 통해 사용한다.

const fs = require('fs');	// npm 패키지로 설치한 경우
import { fs } from './fs';	// 모듈 파일이 있는 경우

 

 

패키지

패키지는 비슷한 모듈들의 집합이지만 모듈과 거의 동일한 개념으로 생각하면 된다.

 

 

라이브러리

패키지(모듈)와 동일한 개념이다. 특정 패키지를 사용하려면 

사전에 만들어진 코드의 집합으로 주로 클래스나 함수로 이용된다. 재사용성을 높이고 반복적인 코드의 사용을 낮추기 위해서 사용되므로 개발자는 필요시에 공개된 라이브러리를 자신의 프로그램에 호출하여 사용할 수 있다.

▪ 예시

자바스크립트 라이브러리

  • jQuery: 가장 유명하고 오래된 안정적인 자바스크립트 라이브러리인 jQuery가 있다. HTML 파일에 CDN으로 불러오는 코드를 작성하면 jQuery를 사용할 수 있다.
  • Socket.io: 실시간 양방향 이벤트 기반 통신을 위해 설계된 풀 스택 프레임워크로, 실시간 애플리케이션을 쉽고 빠르게 구축할 수 있다.
  • React.js: 사용자 인터페이스를 만들기 위해 사용되는 자바스크립트 라이브러리 중 하나이다. 페이스북에서 사용되고 있으며, 싱글 페이지 애플리케이션이나 모바일 애플리케이션 개발에 사용된다.

▪ NPM

npm은 Node Packaged Manager의 줄임말. Node는 Node.js를 의미하고 Packaged는 패키지로 만들어진 것들을 의미하며 Manager는 관리자를 의미한다. 즉 Node.js로 만들어진 라이브러리(모듈, 패키지)를 쉽게 설치하도록 도와주는 툴이다. Node.js를 설치하면 내장되어 있으므로 따로 설치할 필요가 없다.

이름처럼 npm은 Node.js로 만들어진 모듈을 웹에서 받아 설치하고 관리해주는 프로그램이다. npm 덕분에 개발자는 단 몇 줄의 명령어로 기존에 공개된 모듈들을 설치하고 활용할 수 있다. 또한 이 모듈들을 활용했다면 이후에 그 모듈을 만든 개발자가 모듈을 업데이트 했을 경우에 이를 체크하여 알려준다. 즉 모듈의 버전 관리도 쉬워진다. 이처럼 npm을 사용하면 개발이 훨씬 쉬워진다.

▪ 모듈 vs 라이브러리

모듈이 프로그램의 작은 부품이라고 하면,

라이브러리는 자주 사용되는 부품을 재사용하기 편하게 잘 정리한 코드의 집합이다.

즉 포함관계로 나타내면 라이브러리 ⊃ 패키지 모듈이다.

 

 

프레임워크

프레임워크는 그 자체가 완벽하게 동작할 수 있는 응용 프로그램이다. 사용자가 따로 코드를 작성할 필요 없이 동작하는데에 문제가 없다. 즉 프레임워크 자체가 기본적으로 실행해야 하는 일을 가지고 있다. 

라이브러리와 모듈을 공통적으로 사용하기 위한 부품이라 하면 프레임워크는 기본 뼈대라고 생각하면 된다. 프레임워크 안에는 기본적으로 필요한 기능을 갖추고 있으므로 라이브러리 혹은 모듈이 기본적으로 포함되어 있다.

▪ 예시

Node.js에는 Hapi.js, Express.js, Koa.js, Sails.js, Meteor.js, Derby.js, Total.js, Adonis.js , Nest.js, LoopBack.js 등 다양한 프레임워크가 있다. 그 중에서 Express.js가 대중적이고 가장 인기가 많다. Express.js는 웹 애플리케이션과 API 개발을 위해 설계된 Node.js의 프레임워크이다. 기존 Node.js의 기능에서 라우팅 라이브러리와 HTTP 메소드, 함수 및 미들웨어가 제공되므로 개발자가 쉽고 빠르게 API를 작성할 수 있다. 

$ express [프로젝트명]

콘솔창에 위의 명령을 작성하면 자동으로 프로젝트가 생성되는 것을 생각하면 된다. 따로 코드를 작성하지 않아도 서버가 구동되기 위한 코드와 라우터를 사용하기 위한 구조가 갖춰져 있기 때문에 콘솔창에 npm start를 입력하기만 해도 서버를 실행할 수 있다.

또한 자바스크립트의 대표적인 프레임워크 종류는 아래와 같다.

  • Vue.js
  • Angular.js
  • Ember.js
  • Nust.js

그 외에 자바 개발자에게 Spring이 있고 파이썬 개발자에게는 Django, Flask 등이 있다.

▪ 프레임워크와 라이브러리의 차이

그럼 추가로 라이브러리는 무엇일까? 매번 똑같은 코드 혹은 똑같은 환경이 나왔을 때 편의를 위해 미리 구현된 것이 바로 라이브러리이다.

그렇다면 라이브러리와 프레임워크 둘 다 미리 만들어 놓은 환경을 가져다 쓰는 것인데, 둘의 차이점은 무엇일까? 라이브러리는 개발자가 가져다 쓰면서 구현을 하지만 라이브러리를 언제 쓸지는 개발자가 정할 수 있고 또 호출시기도 개발자 마음대로 할 수 있다. 하지만 프레임워크를 쓴다는 것은 개발자가 프레임워크 위에 설 수 없고, 프레임워크에서 정한 개발 흐름대로 따라야만 한다. 따라서 자유롭고 유연하게 개발하는데에 한계가 있다. 또 프레임워크의 코드는 본인이 짜놓은 것이 아니기 때문에 프레임워크에 있는 코드를 습득하고 이해하는데에는 오랜 시간이 걸리기도 한다.

즉, 프레임워크 주도 하에 개발을 하는 것과 내가 개발을 할 때 필요에 따라 라이브러리를 쓴다는 것은 차이가 있다. 쉽게 말해 자유도의 차이라 할 수 있겠다.

 

 

플랫폼

프로그램 실행 환경.

소프트웨어에서 여러 가지 기능을 제공해주는 실행 환경, 즉 응용 프로그램이 동작하는 환경을 제공하는 것을 플랫폼이라고 한다.

호출받아서 일을 처리하는 곳으로 처리된 결과는 다시 원하는 응용 프로그램으로 전달된다.

종종 플랫폼과 운영체제를 혼동하여 사용되는 경우도 있는데, 운영체제 자체는 하드웨어 자원의 관리를 맡고 있는 소프트웨어일 뿐이고, 확장된 기능과 데이터의 해석 등은 애플리케이션이 담당한다.

파이어베이스, 리눅스, 윈도우, 안드로이드 등이 플랫폼의 예시이다.

▪ 예시

  • Windows, Linux, macOS 등 OS들은 모두 플랫폼이다.
  • 어플을 다운받는 앱스토어, 구글플레이, 원스토어도 모두 플랫폼이다.
  • V8 JavaScript Engine은 자바스크립트에게 큰 힘이 되어주고 있는 플랫폼이다.
  • Java 프로그램은 OS 제약이 없지만, 실행하기 위해서는 해당 OS에 자바 가상 머신(Java Virtual Machine, JVM(위에서 실행되므로 Java 플랫폼이 필요하다.

▪ Node.js : JavaScript, Node.js, Express에 대한 이해

자바스크립트는 언어이다. 원래 웹 사이트를 만들기 위해(프론트엔드) 만들어진 언어였지만, 백엔드 개발을 위해 V8 엔진으로 빌드되는 자바스크립트 런타임인 Node.js가 만들어졌다. 덕분에 이 런타임 위에서 자바스크립트 언어로 개발하면서 서버의 개발도 가능해졌다. 런타임은 언어가 돌아가는 환경이라고 보면 되고 넓게 보면 프로그램이 돌아갈 수 있는 환경이라고 해석할 수 있다. 다시 말하지만 노드가 나오기 전에는 웹 브라우저를 개발하기 위해선 자바스크립트만 이용할 수 있었다.

Node.js가 탄생하고 서버 개발이 가능해지기 시작하면서 쉽게 서버를 개발하기 위한 도구인 프레임워크가 탄생했다. 이 프레임워크는 모두가 쉽게 알아보거나 사용할 수 있고 또 시간을 단축시켜서 셋팅할 수 있게 한다. Node.js를 개발하는 데에 아주 유용한 프레임워크의 종류 중 하나가 Express.js이다.

프레임워크인 Express가 없이도 서버 구축은 가능하다. Node.js에 내장되어 있는 HTTP 모듈이나 다른 유용한 모듈들을 사용해서 말이다. 하지만 서버를 예외 없이 모두가 쉽게 알 수 있고 일정한 규칙에 따라 개발을 하고 싶다면 라우터나 미들웨어 등 일일이 신경해야 할 것이 한 두가지가 아니다. 이 문제점을 Express를 통해 해결하고 효율적으로 편하게 할 수 있도록 도와준다. 즉, 프레임워크란 프로그램을 개발하는데 있어서 편리함을 위해 모아놓은 코드 및 툴의 집합이다.

 

 

API

Application Program Interface의 약자로 인터페이스를 의미한다.

서로 다른 목적으로 개발된 프로그램/라이브러리들의 특정 기능을 호출하기 위해서, 혹은 외부의 다른 프로그램이 개발된 프로그램/라이브러리의 기능을 사용할 수 있도록 하기 위해 기능을 호출해야 하는 사용자를 위

▪ 라이브러리와 API의 차이

보통 라이브러리를 획득하면 해당 라이브러리의 API가 따라온다. 그래야 라이브러리를 쉽게 사용할 수 있기 때문이다. 하지만 API가 라이브러리를 의미하는 것은 아니다.

구글 클라우드에서 제공하는 유투브 API를 예시로 살펴보자. RESTful API의 경우에는 인풋값으로 받은 원하는 데이터를 HTTP 요청으로 보내면 인풋에 맞는 동영상 데이터를 HTTP 응답으로 보내준다. 이는 개발자의 로컬 컴퓨터에 설치된 라이브러리를 통해 제공받는 것이 아니라 외부 서버에서 서비스를 제공받는 것이기 때문에 라이브러리가 아닌 API이다.

 

 

 

하나의 플랫홈(환경) 내에서 애플리케이션을 개발할 수 있다. 여기서 필요한 모듈들 즉 라이브러리를 가져오면서 개발할 것이다. npm을 통해 쉽게 라이브러리 설치 및 관리를 할 수 있다.

프레임워크는 개발 시에 자주 쓰이는 여러 기능을 포함하고 있다. 라이브러리와는 다르게 형식이 정해져 있으므로 그 형식에 맞게 작성해야 해서 자유도가 떨어진다. 프레임워크를 사용하지 않아도 애플리케이션을 개발할 순 있지만 프레임워크를 사용하면 더 쉽고 간편하게 개발할 수 있다.

 

 

 

 


참고 자료

 

[비교]프레임워크(Framework)와 라이브러리(Library)와 플랫폼(Platform)

목표 l  프레임워크란 무엇인가? l 라이브러리란 무엇인가? l  플랫폼은 무엇인가? l  비교 l  프레임워크(Framework)란 무엇인가? 개발 할 때 필수적인 요소에 해당하는 설계와 구현을 재사용하

changun516.tistory.com

 

[ 플랫폼(Platform) vs. 프레임워크(Framework) ]

플랫폼과 프레임워크라는 두 단어는 일반적으로 흔히 소프트웨어와 관련해서 자주 사용된다. 물론, 그 의미...

blog.naver.com

 

[기본] 플랫폼, 프레임워크, 라이브러리의, API 의 이해

 라이브러리 라이브러리는 사전에 만들어진 코드의 집합이라고 할 수 있다. 개발자는 필요시 공개된 라이브러리를 자신의 프로그램에 호출하여 사용할 수 있다. ■ 대표적인 라이브러리 요즘

helloworld-88.tistory.com

모듈과 라이브러리

 

모듈 1.모듈이란? 2.모듈화 3.Node.js 4.라이브러리 5.라이브러리사용하기

1.모듈이란? 프로그램은 작고 단순한 것에서 크고 복잡한 것으로 진화한다. 그 과정에서 코드의 재활용성을 높이고, 유지보수를 쉽게 할 수 있는 다양한 기법들이 사용된다. (아주 좋은 부품을

tjsdudkim.tistory.com

 

[생활코딩] JavaScript 모듈 & 라이브러리

모듈(module) 모듈화(Modularization)란 수 많은 로직을 재사용할 수 있는 단위로 나누어, 별도의 모듈이 라는 형태로 떼어내 다른 프로그램에 부품으로 사용하는 기법이다. 그리고 그 결과물을 모듈이

xiubindev.tistory.com

라이브러리, 프레임워크, 아키텍처, 플랫폼

 

[개발용어] 라이브러리, 프레임워크, 아키텍처, 플래폼이란?

개발 입문자나 혹은 현업 개발자이지만 정의를 내리기 곤란한 라이브러리, 프레임워크, 아키텍처, 플랫폼에 대한 개인적인 생각을 정리했습니다.

blog.gaerae.com

자바스크립트, 노드, 익스프레스에 대한 이해

 

[Express] JavaScript, Node.js, Express 헷갈리는 개념들 정리

JavaScript는 뭐고 Node.js는 뭐고 Express는 무엇일까? 간단히 말해서 JavaScript(이하 자스)는 언어이다. 컴퓨터와 대화하기 위해서 사람이 기본적으로 알아야 하는 소통하기 위한 언어. 자바스크립트는

dunkey2615.tistory.com

반응형