ServBay에서 LoopBack 프로젝트 구성 및 실행하기
LoopBack이란?
LoopBack은 IBM에서 개발한 고도로 확장 가능한 오픈 소스 Node.js 프레임워크로, API와 마이크로서비스를 신속하게 구축할 수 있도록 설계되어 있습니다. 모델 기반 개발(MDD) 방식을 채택하여, 개발자가 데이터 모델을 효율적으로 정의하고, 강력한 RESTful API를 자동 생성할 수 있게 도와줍니다. LoopBack 프레임워크는 다양한 데이터 소스 연결, 사용자 인증 및 권한 부여, API 탐색기 등 풍부한 기능을 내장하고 있으며, 여러 데이터베이스와 프로토콜을 지원합니다.
LoopBack의 주요 특징 및 장점
- 모델 기반 개발 (MDD): 직관적으로 데이터 모델을 정의하면, 프레임워크가 API 엔드포인트와 데이터 검증 로직을 자동 생성합니다.
- 다양한 데이터 소스 지원: MongoDB, MySQL, PostgreSQL, MariaDB 등과 같은 주요 데이터베이스뿐 아니라 RESTful, SOAP 서비스 등 다양한 소스를 손쉽게 연결할 수 있습니다.
- 강력한 CLI 도구: LoopBack CLI(Command Line Interface)는 프로젝트 초기화, 모델 정의, 데이터 소스 구성 등의 개발 작업을 크게 간소화합니다.
- 모듈화 및 확장성: 유연한 아키텍처를 바탕으로, 컴포넌트와 확장 기능을 통해 써드파티 라이브러리·서비스를 쉽게 통합할 수 있습니다.
- 내장 보안 기능: 인증(Authentication) 및 권한 부여(Authorization) 메커니즘을 기본 제공하여, 개발자가 보안이 강화된 API를 빠르게 구축할 수 있도록 도와줍니다.
LoopBack을 이용하면 웹 애플리케이션 백엔드와 API를 효과적으로 구축하여, 고성능이면서도 유지보수가 쉬운 애플리케이션을 빠르게 개발할 수 있습니다.
ServBay를 이용한 LoopBack 프로젝트 설정 및 실행
본 문서에서는 ServBay가 제공하는 Node.js 환경을 기반으로 LoopBack 프로젝트를 생성, 실행하는 과정을 안내합니다. ServBay의 ‘웹사이트’ 기능을 활용하여 로컬 웹 서버를 설정하고, 리버스 프록시로 외부 요청을 LoopBack 애플리케이션의 포트로 전달하여 쉽고 효율적인 로컬 접근 및 개발 디버깅을 실현할 수 있습니다.
LoopBack 프로젝트 생성
LoopBack CLI 설치
시작하기 전에, ServBay에서 Node.js 패키지를 설치 및 활성화했는지 확인하세요. 그런 다음 터미널을 열어, global 영역에 LoopBack CLI를 설치합니다:
bashnpm install -g @loopback/cli
1프로젝트 초기화
ServBay의 권장 웹사이트 루트 디렉토리
/Applications/ServBay/www
로 이동한 뒤, LoopBack CLI로 새 프로젝트를 초기화합니다. 프로젝트 이름은 소문자와 하이픈 사용을 권장하며, 예:servbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2CLI가 안내하는 대로 프로젝트 설정(REST API, 직렬화, 인증 등 기능 선택)과 구조를 구성하세요. 필요에 따라 옵션을 선택하시면 됩니다.
프로젝트 의존성 설치
새로 생성된 프로젝트 폴더로 이동한 뒤, 필요 Node.js 의존성 패키지를 설치하세요:
bashcd servbay-loopback-app npm install
1
2
LoopBack 프로젝트 응답 내용 수정(선택 사항)
ServBay를 통해 애플리케이션에 접근하는 방식을 시연하기 위해, 기본 /ping
엔드포인트를 변경하여 맞춤 응답을 반환하도록 해보겠습니다.
src/controllers/ping.controller.ts
파일 수정프로젝트 내
src/controllers/ping.controller.ts
파일을 아래와 같이 변경하여,/ping
요청 시 "Hello ServBay!" 문자열을 반환하도록 해보세요:typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // 반환 내용을 "Hello ServBay!"로 수정 return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
개발 모드로 프로젝트 실행
개발 단계에서는 LoopBack 자체 개발 서버를 실행해 빠르게 반복 작업 및 디버깅을 진행하게 됩니다. ServBay의 리버스 프록시 기능을 통해 이 개발 서버에 접근할 수 있습니다.
개발 서버 실행
프로젝트 루트 폴더에서 터미널로 LoopBack 애플리케이션을 시작합니다. 기본적으로 지정한 포트에서 대기하므로, 환경 변수
PORT
로 포트 번호를 설정할 수 있습니다(예: 8585포트 사용):bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2실행 후, 터미널에서 "Server is running at http://[::1]:8585"와 유사한 메시지를 확인할 수 있습니다.
ServBay 웹사이트(리버스 프록시) 설정
ServBay 컨트롤 패널에서 ‘웹사이트’ 기능으로 이동한 후, 새 리버스 프록시 웹사이트를 추가하여 외부 도메인 및 포트 요청을 LoopBack 내부 포트로 전달하도록 설정합니다:
- 이름(Name): 예시
My first LoopBack dev site
(ServBay 내 표시용) - 도메인(Domain): 예시
servbay-loopback-dev.servbay.demo
(브라우저에서 접근 시 사용하는 로컬 도메인) - 웹사이트 유형(Type):
리버스 프록시(Reverse Proxy)
선택 - IP 주소(IP Address):
127.0.0.1
입력(LoopBack이 로컬에서 실행됨) - 포트(Port):
8585
입력(LoopBack이 대기하는 포트)
설정을 완료한 뒤 저장하고 변경사항을 적용하세요. ServBay는 자동으로 로컬 DNS(
/etc/hosts
파일 수정 또는 ServBay Helper Tool 사용)와 웹 서버(Caddy 또는 Nginx)를 구성하여, 지정한 도메인으로 접속할 수 있게 합니다.ServBay에서 리버스 프록시 웹사이트를 추가하는 법은 문서를 참고하세요: Node.js 개발 웹사이트 추가하기.
- 이름(Name): 예시
개발 모드 애플리케이션 접근
웹 브라우저에서 지정하신 도메인과 LoopBack 엔드포인트 경로(예:
https://servbay-loopback-dev.servbay.demo/ping
)로 접속해보세요.ServBay는 로컬 웹사이트에 SSL 인증서를 자동(ServBay User CA 또는 Public CA 사용) 적용하기 때문에, HTTPS로 안전하게 로컬 개발 환경에 접근할 수 있습니다. 이는 실제 운영 환경과 동일하게 암호화 및 보안 검증을 사전에 할 수 있도록 도와줍니다. ServBay의 SSL 기능에 대한 자세한 내용은 SSL로 웹사이트 보호하기를 참고해주세요.
운영(프로덕션) 모드 배포(선택 사항)
LoopBack 프로젝트가 배포 준비가 완료되었다면, 운영 환경에서 실행할 수 있습니다. 프로덕션 모드에서는 더 나은 성능과 최소화된 디버깅 출력을 기대할 수 있습니다.
운영 서버 실행
프로젝트 루트에서 터미널로 운영 모드로 LoopBack을 실행합니다. 예를 들어, 8586 포트를 지정하고
NODE_ENV
를production
으로 설정하세요:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2ServBay 웹사이트(리버스 프록시) 설정
ServBay 컨트롤 패널의 ‘웹사이트’에서, 운영 모드 포트로 연결해주는 리버스 프록시 웹사이트를 추가 또는 편집합니다:
- 이름(Name): 예시
My first LoopBack production site
- 도메인(Domain): 예시
servbay-loopback-prod.servbay.demo
- 웹사이트 유형(Type):
리버스 프록시(Reverse Proxy)
선택 - IP 주소(IP Address):
127.0.0.1
- 포트(Port):
8586
(운영 모드 포트)
설정을 저장하고 적용하세요.
- 이름(Name): 예시
운영 모드 애플리케이션 접속
브라우저에서 운영 도메인(예:
https://servbay-loopback-prod.servbay.demo/ping
)으로 접근하여, 정상적으로 운영 환경에서 실행되는지 확인하세요. ServBay는 이 경우에도 HTTPS 지원을 자동으로 제공합니다.
데이터베이스 연결
LoopBack 프레임워크는 데이터 소스 커넥터를 통해 다양한 데이터베이스를 지원합니다. ServBay에서는 MySQL, MariaDB, PostgreSQL, MongoDB, Redis 등 여러 데이터베이스 패키지를 쉽게 실행할 수 있으며, LoopBack 프로젝트에서 이 데이터베이스를 손쉽게 연결 및 구성할 수 있습니다.
아래는 ServBay 제공 주요 데이터베이스와의 연결 예시입니다. 실제 환경에 맞게 적절히 수정해 사용하세요.
중요: 예시의 DB 사용자명과 비밀번호는 임시값입니다. 실제 사용 시 ServBay에서 해당 DB에 설정한 실제 root 사용자 비밀번호 또는 별도 사용자의 인증 정보를 반드시 입력해야 합니다. ServBay 컨트롤 패널에서 DB 사용자와 비밀번호를 관리할 수 있습니다.
MongoDB 연결
우선 ServBay에서 MongoDB 패키지를 설치하고 실행했는지 확인합니다. LoopBack MongoDB 커넥터 설치:
bashnpm install --save @loopback/connector-mongodb
1프로젝트 내 데이터 소스 파일(예:
src/datasources/mongodb.datasource.ts
)을 다음과 같이 작성합니다:typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // ServBay의 MongoDB는 기본적으로 localhost:27017에서 실행됨 url: 'mongodb://localhost:27017/servbay-loopback-app', // 데이터베이스명 교체 host: 'localhost', port: 27017, user: '', // 인증 사용 시 사용자명 입력 password: '', // 인증 사용 시 비밀번호 입력 database: 'servbay-loopback-app', // 데이터베이스명 교체 // 기타 옵션... }; export class MongodbDataSource extends juggler.DataSource { static dataSourceName = 'mongodb'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Redis 연결
ServBay에서 Redis 패키지가 설치·실행 중인지 확인합니다. LoopBack Redis 커넥터 설치(공식 커넥터는 없으며, 일반적으로 커뮤니티의
loopback-connector-redis
나 Node.js의redis
라이브러리+서비스 패턴을 사용):bashnpm install --save loopback-connector-redis # 혹은 호환 가능한 Redis 라이브러리
1데이터 소스 예시는 다음과 같습니다:
typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // ServBay의 Redis는 기본적으로 localhost:6379에서 실행됨 url: 'redis://localhost:6379', // 추가 옵션... }; export class RedisDataSource extends juggler.DataSource { static dataSourceName = 'redis'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17참고: LoopBack 4에서는 데이터 소스 구성 방식이 LoopBack 3와 다를 수 있습니다. 위 코드는 LoopBack 3 기반으로 단순화된 예시이며, 최신 방법은 LoopBack 4 공식문서를 참조해 주세요. 다만 연결에 필요한 host, port, user, password, database 등 파라미터는 그대로 사용합니다.
MariaDB (또는 MySQL) 연결
ServBay에서 MariaDB 또는 MySQL 패키지가 활성화되어 있어야 합니다. LoopBack MySQL 커넥터는 MariaDB와도 호환됩니다. 커넥터 설치:
bashnpm install --save @loopback/connector-mysql
1데이터 소스 예시:
typescript// src/datasources/mariadb.datasource.ts 또는 mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // 또는 'mysql' connector: 'mysql', // mysql 커넥터 사용 // url: '', // url 형태 사용도 가능, 또는 아래 개별 키 사용 host: 'localhost', // ServBay 데이터베이스는 기본적으로 localhost에서 실행 port: 3306, // MariaDB/MySQL 기본 포트 user: 'root', // ServBay의 DB 기본 계정은 root (필요에 따라 변경) password: 'password', // << ServBay에 실제 설정한 DB 비밀번호로 변경 >> database: 'servbay_loopback_app', // 데이터베이스명 교체 // 기타 옵션... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // 또는 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21참고: 예시의
password: 'password'
는 임시값이므로, 반드시 ServBay DB 관리자 화면에서 실제 사용 중인 MariaDB/MySQL 계정의 비밀번호로 교체해야 합니다.PostgreSQL 연결
ServBay에서 PostgreSQL 패키지가 설치·실행 중인지 확인하세요. LoopBack PostgreSQL 커넥터 설치:
bashnpm install --save @loopback/connector-postgresql
1데이터 소스 예시:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // url로도 지정 가능, 또는 host/port 등 개별 지정 host: 'localhost', // ServBay의 PostgreSQL은 기본적으로 localhost에서 실행 port: 5432, // PostgreSQL 기본 포트 user: 'user', // << ServBay에서 실제로 사용하는 PostgreSQL 사용자명 입력 >> password: 'password', // << 실제 비밀번호로 교체 >> database: 'servbay_loopback_app', // 데이터베이스명 교체 // 기타 옵션... }; export class PostgresqlDataSource extends juggler.DataSource { static dataSourceName = 'postgresql'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21참고: 예시의
user: 'user'
,password: 'password'
는 임시값이므로, ServBay 데이터베이스 관리자 패널에서 PostgreSQL 계정과 비밀번호를 직접 확인해 입력하세요.
요약
위와 같은 단계별 안내를 따라, ServBay 로컬 개발 환경에서 LoopBack Node.js 프로젝트를 생성, 구성, 실행하는 전체 과정을 성공적으로 마칠 수 있습니다. 또한 ServBay의 ‘웹사이트’ 기능을 통한 리버스 프록시 접근, 그리고 다양한 데이터베이스 연결 구성을 실습해 보았습니다.
ServBay는 LoopBack을 비롯한 Node.js 프레임워크에 안정적이고 강력한 로컬 개발 환경을 제공합니다. 웹 서버, 데이터베이스, 다양한 런타임을 통합하여 개발자의 워크플로우를 크게 단순화해 줍니다. ServBay의 웹사이트 관리, SSL 지원, 데이터베이스 통합 기능으로 더 효율적이고 안전하게 로컬에서 개발 및 테스트를 진행할 수 있습니다.