|
- 저작권 침해가 우려되는 컨텐츠가 포함되어 있어
글보내기 기능을 제한합니다.
네이버는 블로그를 통해 저작물이 무단으로 공유되는 것을 막기 위해, 저작권을 침해하는 컨텐츠가 포함되어 있는 게시물의 경우 글보내기 기능을 제한하고 있습니다.
상세한 안내를 받고 싶으신 경우 네이버 고객센터로 문의주시면 도움드리도록 하겠습니다. 건강한 인터넷 환경을 만들어 나갈 수 있도록 고객님의 많은 관심과 협조를 부탁드립니다.
|
[이렇게 사용하세요!] Cloud Functions 서비스와 Cloud DB를 활용하여 애플리케이션 서버 없이 API 제공하기_1편
NAVER Cloud Platform
・
2020. 11. 27. 19:49
안녕하세요, 네이버 클라우드 플랫폼 팀입니다. 개발자가 직접 알기 쉽게 설명해드리는 클라우드, [이렇게 사용하세요!] 시리즈! 오늘은 Cloud Functions와 Cloud DB for MySQL를 활용하여 애플리케이션 서버 없이 API 제공하는 방법을 알아보겠습니다. *본 포스팅은 Serverless Platform 개발 오세춘 님이 작성해 주셨습니다.
nodejs 8버전 이상의 개발 환경을 준비해 주세요. (linux 사용자는 nvm을, windows 사용자는 nvm windows를 이용하여 설치해 주시면 됩니다.)
Cloud Functions는 서버리스 플랫폼으로, 별도의 서버 생성 없이 사용자가 작성한 비즈니스 로직이 담긴 코드를 확장성 있게 실행하는 서비스입니다. 따라서 사용자는 서버 관리에 대한 부담은 덜고 비즈니스 로직에만 집중할 수 있습니다. [영상] 2분이면 충분한 Cloud Functions 이해하기
네이버 클라우드 플랫폼의 Cloud Functions는 올해 9월부터 VPC 플랫폼을 지원하고 있습니다. VPC 플랫폼에서 Cloud Functions를 이용하여 자신의 VPC에 생성한 리소스에 접근이 가능하고 다양한 형태로 활용할 수 있습니다. 앞으로 설명할 예제는 모두 VPC 플랫폼에서 진행됩니다. (ncloud.com에서 콘솔을 켜시고, 좌측 VPC 설정 여부를 확인해 주세요)
이 글은 총 두 편으로, Cloud Functions와 Cloud DB for MySQL을 이용하여 애플리케이션 서버 없이 API를 만드는 방법을 다룹니다.
지금 보시는 1편에서는 Cloud Functions의 VPC 연동 기능과 ACG 접근 제어를 활용하여 자신의 VPC에 생성된 Cloud DB for MySQL DB 서버에 접근하여 Table을 만들어 보는 시간을 갖겠습니다.
가장 먼저 VPC 플랫폼에서 Cloud DB for MySQL을 사용하기 위해 VPC와 Subnet을 생성하고 설정하겠습니다. 1) ncloud.com 포털 우측 상단 콘솔 클릭 후, VPC 상품 메뉴 중 VPC Management로 이동하여 이름과 대역폭을 입력한 후 VPC를 생성합니다. 2) 이후 Subnet Management 메뉴로 이동하여 필요한 정보를 입력한 후 Subnet을 생성합니다. Cloud Functions와 연동을 위해 가용 Zone은 "KR-2"를, Internet Gateway 전용 여부는 "N(Private)"을 선택한 후 Subnet을 생성합니다. * 현재 KR-2 Zone의 subnet을 이용해야만 Cloud Functions 상품과 연동이 가능하며, 추후 업데이트를 통해 다른 Zone으로 범위를 확장할 계획입니다.
1) VPC 플랫폼에서 Cloud DB for MySQL 상품을 선택하고, “DB Server 생성” 버튼을 눌러 진행합니다. 이번 예제에서는 실습을 위한 DB 서버이기 때문에 필수 입력 정보를 제외한 나머지는 기본 설정으로 진행하도록 하겠습니다. 자세한 설정은 Cloud DB for MySQL 사용자 가이드를 참고해 주시기 바랍니다. [DB 서버 생성 및 접근 가이드] https://guide.ncloud-docs.com/docs/database-database-11-2
DB 서버 생성이 완료되면 사용할 Table 생성이 필요합니다. Client를 통해 DB 서버에 접속하여 Table을 생성하셔도 되지만, 이번 예제에서는 Cloud Functions를 이용하여 Table을 생성해 보도록 하겠습니다. [Cloud DB for MySQL 퀵 스타트 가이드] https://guide.ncloud-docs.com/docs/database-database-1-1
1) 예제 프로젝트를 위한 디렉토리를 하나 만들고 디렉토리 안에 package.json 파일을 생성하여 아래와 같이 작성합니다. 2) Nodejs 런타임에 mysql 라이브러리가 기본 내장되어 있지 않기 때문에 액션 코드에서 사용할 mysql 라이브러리를 package.json 파일에 추가합니다. 3) Cloud Functions에서 main으로 사용할 스크립트 이름을 createTable.js로 만들 예정이므로 이것 역시 추가합니다. {
"name": "example",
"main": "createTable.js",
"dependencies": {
"mysql": "2.11.0"
}
}
4) 다음으로 mysql 라이브러리를 받아오기 위해 프로젝트 디렉토리에서 “npm install” 명령어를 실행합니다. 5) 실행이 완료되면 프로젝트 디렉토리에는 의존 라이브러리가 설치된 node_modules 디렉토리가 만들어집니다. 이후 createTable.js 파일을 생성하여 아래와 같이 작성합니다. const mysql = require("mysql");
let conn;
function createTable(params) {
return new Promise(function(resolve, reject) {
if(!conn) {
conn = mysql.createConnection({
host: params.cdbHost,
user: params.cdbUser,
password: params.cdbPass,
database: params.cdbDatabase
})
conn.connect();
}
let query = `CREATE TABLE ${params.cdbTable}
(no INT NOT NULL AUTO_INCREMENT,
title VARCHAR(50),
author VARCHAR(30),
publisher VARCHAR(30),
PRIMARY KEY(no))`;
conn.query(query, function (error, results, fields){
if (error) {
reject({error: error});
}
resolve(results);
});
})
}
exports.main = createTable;
6) 프로젝트 디렉토리에서 “zip -r createTable.zip *” 명령어로 디렉토리 내부 모든 폴더 및 파일을 압축합니다. 압축 파일이 포함된 디렉토리 구조는 아래와 같습니다.
7) 다음으로 VPC 플랫폼의 Cloud Functions 상품 콘솔의 Action 메뉴로 이동합니다. “액션 생성” 버튼을 누른 후 “트리거 종류” 선택 상자를 클릭하여 “트리거 설정 없이 액션 만들기”를 선택합니다. 8) VPC 연결 정보에는 DB 서버를 생성할 때 선택했던 VPC 및 Subnet 정보를 선택합니다. 소스코드 타입 중 파일을 선택하고 이전 단계에서 압축한 파일을 업로드한 후 액션 생성 과정을 마무리합니다. 이렇게 특정 VPC와 연결된 액션을 처음 생성하게 되면 내 Cloud Functions 액션이 연결된 VPC에 접근을 허용하기 위해 사용할 수 있는 ACG 접근 소스가 자동으로 생성됩니다. 다음 ACG 설정 단계에서 확인하실 수 있습니다.
내 DB 서버의 ACG 설정을 확인하기 위해, Cloud DB for MySQL 상품 콘솔로 이동 후 생성했던 DB 서버의 Master를 선택해보겠습니다. 아래 보이는 상세 정보에 ACG 정보가 포함되어 있습니다. 이 ACG 설정은 DB 서버를 생성할 때 자동으로 생성됩니다. 위에서 생성한 Cloud Functions의 createTable 액션이 VPC에 생성한 DB 서버에 접근할 수 있도록 ACG 설정해 보겠습니다. 1) Server 상품의 콘솔로 이동하여 하위 메뉴 중 ACG를 선택하여 이동합니다. 2) 목록 중 DB 서버를 생성할 때 자동으로 함께 생성된 ACG를 찾아 선택 후, 상단의 "ACG 설정" 버튼을 클릭하여 설정 페이지로 이동합니다. 3) 설정 페이지 상단 "inbound 탭"에서 DB 서버로 접근하려는 접근 소스와 허용 포트를 묶어서 허용 규칙을 추가할 수 있습니다. 접근 소스 입력란에 “c”를 입력하면 캡쳐 화면과 같이 액션 생성 단계에서 자동으로 생성된 접근 소스를 자동 완성을 통해 확인할 수 있습니다. 4) 이 접근 소스를 선택하고 생성한 DB의 port 정보를 입력하고 우측 “추가” 버튼을 눌러 규칙에 추가한 후 마지막으로 “적용” 버튼을 누르면 Cloud Functions의 액션이 DB 서버에 접근하기 위한 준비가 끝납니다.
다시 Cloud Functions 상품 콘솔의 Action 메뉴로 이동하여 DB Table 생성을 위해 만들어놓은 액션을 실행해보겠습니다. 앞서 작성한 액션 코드를 보시면 다섯 개의 파라미터를 사용하도록 작성되었으며, 하나씩 천천히 살펴보겠습니다.
필요한 모든 파라미터를 추가하여 액션을 실행해보겠습니다. 실행 결과를 보니 Table이 정상적으로 DB에 생성되었습니다.
이번 1편에서는 Cloud Functions의 액션 코드에서 Cloud DB for MySQL DB에 접근하기 위해 VPC 및 Subnet을 생성하고 ACG 설정을 추가하는 예제를 진행해보았습니다.
이어지는 2편에서는 Cloud DB for MySQL DB에 만든 Table에 데이터를 저장/조회하고, API Gateway와 Cloud Functions를 연동하여 VPC 안에 구축된 DB의 데이터를 API로 제공하는 방법을 알려드립니다. (아래 링크 클릭) 코로나19 기세가 무섭습니다. 편안하고 안전한 주말 연휴 보내세요! * 관련 문의사항은 아래 댓글 또는 ncloud.com '문의하기'에 남겨주시면 확인 후 답변 드리겠습니다. . < 12월 17일, 인공지능 최고 리더가 모이는 AI 서밋 행사가 개최됩니다 > ▼ 자세히 보기 ▼ |
작성하신 에 이용자들의 신고가 많은 표현이 포함되어 있습니다.
다른 표현을 사용해주시기 바랍니다.
건전한 인터넷 문화 조성을 위해 회원님의 적극적인 협조를 부탁드립니다.
더 궁금하신 사항은 고객센터로 문의하시면 자세히 알려드리겠습니다.