분류

드림팩토리로 카우치베이스 API 생성하기

이 글은 W. 제이슨 길모어가 작성한 게스트 포스트입니다(https://www.wjgilmore.com)는 오픈 소스 API 자동화 및 관리 플랫폼인 드림팩토리(DreamFactory, Inc.)의 CTO입니다. DreamFactory에 합류하기 전에는 컨설턴트 및 개발자로 경력의 대부분을 보내며 전 세계 팀이 놀라운 소프트웨어 솔루션을 구축하도록 지원했습니다. 제이슨은 웹 기술을 주제로 한 다작 작가로, 거의 12권의 책과 300개 이상의 기사를 집필했습니다. 그는 오하이오와 뉴욕에 기반을 둔 여러 스타트업의 특별 기술 고문으로 활동하고 있습니다.

Jason Gilmore

현대의 조직은 모든 이니셔티브에 데이터를 효율적으로 처리하고 통합해야 한다는 엄청난 압박을 받고 있습니다. 실제로 정보를 추출, 컴파일, 분석, 배포하는 데 중점을 두다 보니 완전히 새로운 연구 분야인 데이터 과학 이 모든 것을 이해하기 위해 등장했습니다(이것이 의심스럽게 학문적으로 들린다고 생각하시는 분들을 위해 하버드 비즈니스 리뷰에서 데이터 과학이라고 불렀습니다. 21세기 가장 섹시한 직업.

API의 필요성

데이터 관리 프로세스를 공식화하는 것 외에도, IT 팀은 마찰을 최소화하면서 데이터를 수집, 처리, 배포할 수 있도록 하기 위해 이기종 데이터베이스 환경과 API 중심 개발을 점점 더 많이 수용하고 있습니다. 조직 전체가 특정 데이터베이스 공급업체를 표준화하던 시대는 지났으며, 이제 기업에서는 상용 및 오픈 소스 SQL과 NoSQL 솔루션을 혼합하여 사용하는 것이 일반화되었습니다.

물론 이러한 데이터베이스를 통해 흐르는 데이터를 관리할 수 있는 합리적인 방법이 있어야 하는데, 바로 API가 그 역할을 합니다. 데이터베이스를 다양한 애플리케이션(iOS, 웹 등)에서 쿼리해야 하는 경우가 많기 때문에 최근 개발자들은 애플리케이션별 라이브러리 대신 API를 선호하고 있습니다. 통일된 API를 만들어 연결하면 개발자는 데이터베이스 관련 배관 작업 대신 애플리케이션 자체에 집중할 수 있습니다.

드림팩토리 시작하기

아니면 적어도 그렇게 생각하세요. 현실적으로 데이터베이스 API를 구축하고 유지 관리하는 일은 시간과 비용이 많이 드는 작업입니다. 숙련된 팀이라면 몇 주 안에 CRUD API 인터페이스를 구축할 수 있지만, API 관리에 필요한 많은 추가 필수 기능을 고려하지 않는 경우가 많습니다. 인증 및 권한 부여, 요청 볼륨 제한, 캐싱 및 로깅과 같은 기능은 API를 계획할 때 고려하지 않는 경우가 많으며, 이러한 기능을 단편적으로 구현하는 방법을 알아내는 것은 매우 어렵고 비용이 많이 들 수 있습니다.

많은 조직이 이러한 골칫거리를 피하기 위해 API 관리 플랫폼. 이러한 솔루션 중 특히 인기 있는 솔루션은 드림팩토리. 오픈 소스일 뿐만 아니라(고급 기능을 제공하는 상용 버전도 사용 가능) Couchbase에 대한 기본 지원도 포함되어 있습니다! 이 글에서는 몇 분 만에 DreamFactory를 사용하여 Couchbase REST API를 생성한 다음 DreamFactory의 역할 관리 기능을 사용하여 API 액세스를 잠그는 방법을 배웁니다.

드림팩토리 소개

드림팩토리 는 전 세계 수만 개의 조직에서 사용하는 API 자동화 및 관리 프레임워크입니다. 코딩 없이도 다양한 SQL 및 NoSQL 데이터베이스를 위한 모든 기능을 갖춘 문서화된 안전한 API를 생성할 수 있다는 점이 가장 큰 인기 요인으로 꼽히지만, 실제로 DreamFactory는 이메일 전송 제공업체, AWS SNS, Apple 및 GCM Push를 포함한 모바일 알림 서비스, SOAP 서비스를 REST로 변환하는 등 수천 개의 데이터 소스 및 타사 서비스도 지원합니다.

드림팩토리는 MySQL, 오라클, 마이크로소프트 SQL 서버, 카우치베이스 등 총 18개의 데이터베이스를 지원합니다! API 생성은 매우 간단하며, 원하는 API 이름과 Couchbase 서버 자격 증명만 제공하면 됩니다. API를 생성하려면 먼저 드림팩토리 웹 관리 인터페이스에 로그인합니다. 내비게이션 바를 통해 DreamFactory의 주요 기능에 액세스할 수 있습니다:

DreamFactory navigational bar

를 클릭하여 서비스를 만듭니다. 서비스 다음 만들기을 클릭한 다음 카우치베이스 에서 데이터베이스 카테고리:

Select the Couchbase database service

다음으로 API 이름을 선택하고 레이블과 설명을 설정합니다. 이 이름은 생성된 API의 일종의 네임스페이스 역할을 하므로 특히 중요합니다. 레이블과 설명은 관리 인터페이스 내에서 참조용으로만 사용됩니다:

Couchbase configuration in DreamFactory

이 필드를 완료한 후 구성 탭을 클릭하고 Couchbase 자격 증명을 입력합니다:

Completed Couchbase configuration in DreamFactory

또한 호스트, 포트, 사용자 이름 그리고 비밀번호 필드에서 반환되는 레코드 수를 선택적으로 제한할 수 있습니다. GET 요청을 설정하고 설정된 기간 동안 데이터 캐싱을 활성화할 수 있습니다. 이 튜토리얼에서는 이러한 옵션은 그대로 두고 API를 생성하기 위해 저장 버튼을 클릭합니다.

API와 상호 작용하기

API가 생성되면 다음 페이지로 이동할 수 있습니다. API 문서 인터페이스를 사용하여 실험해 볼 수 있습니다. 드림팩토리는 각 API에 대한 Swagger 문서를 생성하며, 관리자는 사용자에게 이 문서에 대한 제한된 액세스 권한을 제공할 수 있습니다. 새 API를 선택하면 사용 가능한 모든 엔드포인트 목록이 표시됩니다:

API endpoints created by DreamFactory

를 선택하고 GET /_schema 엔드포인트를 누르고 사용해 보기 버튼을 클릭하세요. Swagger 문서는 대화형이므로 코드로 바로 뛰어들지 않고도 API의 작동 방식을 배울 수 있어 불편함을 크게 줄일 수 있습니다. 를 누르면 사용해 보기 를 사용하면 이 엔드포인트와 관련된 다양한 매개변수 필드가 활성화됩니다:

Detailed information about an API endpoint

참고: 지원되는 데이터베이스의 범위가 넓고 기본 데이터베이스 유형에 관계없이 통일된 데이터베이스 API 인터페이스를 제공하는 것이 중요하기 때문에 드림팩토리에서는 데이터베이스 관련 구조를 지칭할 때 일반적인 용어를 사용합니다. 논리적으로 이러한 용어가 항상 데이터베이스별 용어와 정확히 매핑되는 것은 아닙니다. 예를 들어 Couchbase는 다음과 같은 용어를 사용합니다. 버킷 를 사용하여 데이터베이스를 나타내는 반면, 드림팩토리는 일반적인 용어인 스키마 를 사용하여 표현합니다.

를 누릅니다. 실행 버튼을 누르면 API 엔드포인트가 쿼리되어 사용 가능한 모든 버킷을 반환합니다. 카우치베이스 사용자라면 익숙한 여행 샘플 버킷이 다음과 같은 응답으로 반환되었습니다:

Example of a response from an API endpoint

API에서 데이터 액세스하기

다음으로 아래로 스크롤하여 GET /_table/{table_name} 엔드포인트에서 레코드(문서)를 검색하려면 여행 샘플 버킷으로 이동합니다. 버킷을 검색하는 과정은 버킷을 검색할 때와 비슷하며, 엔드포인트를 선택하고 사용해 보기를 클릭한 다음 원하는 API 엔드포인트 매개변수를 입력합니다. 아래 스크린샷에서 볼 수 있듯이 이 엔드포인트는 꽤 많은 매개 변수를 지원합니다:

API documentation

레코드 선택과 관련하여, 드림팩토리는 데이터베이스를 쿼리할 때 일반적으로 수행하는 모든 작업을 지원합니다. 특정 필드 선택, 테이블 조인, 레코드 필터링, 제한 및 오프셋 적용 등을 수행할 수 있습니다. 이 예제에서는 간단하게 매개변수 목록의 맨 아래로 스크롤하여 다음과 같이 입력해 보겠습니다. 여행 샘플테이블_이름 매개변수를 설정합니다. 프레스 실행 를 입력하면 다음과 같은 결과가 표시됩니다:

Couchbase results through DreamFactory

제한된 API 키 생성하기

API 문서 인터페이스는 API 작동 방식에 대해 자세히 알아보기에 좋지만, 웹이나 모바일 애플리케이션에서 API 쿼리를 시작하고 싶을 때가 있습니다. 그렇게 하려면 먼저 웹이나 모바일 애플리케이션에서 API 키. 이는 드림팩토리가 퍼블릭 API 개념을 지원하지 않기 때문이며, 모든 API는 최소한 API 키로 보호됩니다. 또한 각 API 키는 다음과 같이 역할. 드림팩토리 역할은 API 키를 소유한 클라이언트가 API와 함께 수행할 수 있는 작업을 결정합니다. 예를 들어 읽기 전용이거나 특정 데이터베이스 테이블에만 액세스할 수 있는 역할을 만들거나 한 테이블에 레코드를 삽입할 수 있지만 다른 테이블의 레코드는 읽을 수 있는 역할을 만들 수 있습니다.

역할을 만들려면 역할 탭을 클릭하고 만들기. 역할 이름과 설명을 지정한 다음 액세스 탭을 클릭합니다. 여기서 마법이 일어납니다. 다음 스크린샷에서 제가 선택한 것을 볼 수 있습니다. 카우치베이스 API(서비스)를 설정하고 구성 요소_table/travel-sample/*로 설정하여 해당 역할이 이 특정 데이터 집합에만 액세스할 수 있도록 했습니다. 또한 액세스GET로 설정되어 읽기 전용 역할이 됩니다:

Create a DreamFactory role

여기에는 몇 가지 다른 흥미로운 기능이 있지만 간결하게 하기 위해 그냥 저장 를 클릭하여 역할을 생성합니다.

그런 다음 탭을 클릭하여 API 키를 생성합니다. API 키를 생성하려면 만들기 버튼을 클릭하면 다음과 같은 인터페이스가 표시됩니다:

Create a DreamFactory application

여기에서 애플리케이션 이름과 설명을 입력합니다. 또한 이 API 키에 대한 역할을 선택해야 하는데, 이 예에서는 새로 생성된 카우치베이스 역할을 수행합니다. 마지막으로 앱 위치 다음을 선택했습니다. 저장 공간 필요 없음 웹 애플리케이션과 같은 원격 위치에서 API에 연결할 것이기 때문입니다. Press 저장 를 클릭하면 애플리케이션 키 목록으로 돌아갑니다:

Create a key for secure DreamFactory API access

방금 제한된 읽기 전용 API 키를 만들었습니다! 이제 이 키를 사용하여 Couchbase 버킷과 대화해 보겠습니다.

API에 연결하기

API 키를 손에 넣었으면 이제 드림팩토리 인터페이스 외부에서 API와 상호 작용할 차례입니다. 이 예제에서는 이 예제의 목적에 따라 불면증 REST 클라이언트 하지만 자유롭게 사용할 수 있습니다. 우편 배달원를 사용하거나 간단한 웹 또는 iPhone 인터페이스를 구축할 수도 있습니다. 다음 스크린샷에서는 제가 쿼리한 /api/v2/couchbase/_table/travel-sample 엔드포인트를 클릭하면 인터페이스 오른쪽에서 결과를 확인할 수 있습니다:

Using Insomnia to interact with the REST API

여기서 특히 중요한 것은 X-DreamFactory-Api-Key 헤더! 여기에 API 키가 제공됩니다. 키를 제공하지 않을 경우 400 상태 코드와 함께 누락된 키와 관련된 오류 메시지가 표시됩니다. 또한 이 키가 제한된 테이블에 액세스하거나 역할 정의 내에서 명시적으로 허용되지 않은 작업(삽입, 업데이트 등)을 수행하려고 하면 401 승인되지 않은 상태 코드가 반환됩니다.

리소스

드림팩토리에 대한 소개를 통해 카우치베이스 기반 애플리케이션을 얼마나 빨리 구축할 수 있는지 궁금해지셨기를 바랍니다. 더 자세히 알고 싶으시다면 다음 리소스가 도움이 될 것입니다:

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

Author

Posted by 매튜 그로브스

Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.