API 구축 방법

2022년 6월 30일

API란 무엇인가요?

API란 무엇이고, API를 성공적으로 구축하기 위한 가이드라인은 무엇인가요? 애플리케이션 프로그래밍 인터페이스(API)는 외부 애플리케이션이 플랫폼, 운영 체제, 애플리케이션 또는 서비스의 기능이나 데이터에 접근하고 상호작용할 수 있도록 하는 프로그래밍 기능, 도구 및 프로토콜의 집합입니다. 효과적인 API는 데이터 공유와 협업을 촉진하여 다양한 소프트웨어 구성 요소들이 서로 통신하여 비즈니스 기능을 제공할 수 있는 생태계를 조성합니다. API는 모던 애플리케이션과 클라우드 네이티브 마이크로서비스 기반 아키텍처의 핵심 구성 요소입니다. API는 서로 통신하고 모던 사용자 경험을 제공하기 위해 다양한 서비스에 대한 주요 채널을 생성합니다.

성공적으로 API를 설계, 개발 및 배포하려면 다양한 모범 사례를 활용해야 합니다. 모범 사례를 준수함으로써 개발자와 애플리케이션 모두의 안전한 액세스와 손쉬운 사용을 보장할 수 있습니다. 모범 사례는 다음과 같습니다.

  • 역량 및 경험 수준이 서로 다른 모든 개발자가 API를 사용할 수 있도록 지원하는 단순하고 우아한 디자인
  • 필요에 따라 데이터에 대한 액세스를 제한하는 높은 수준의 보안
  • API 액세스가 소스 또는 외부 애플리케이션에 영향을 미치지 않도록 하는 린 설계 원칙
  • 기존 API에 대한 거버넌스, 보안 및 사용 모니터링을 보장하는 관련 서비스

API를 처음부터 개발하는 방법

API를 구축하는 것은 주로 데이터 소스 및 해당 소스와 인터페이스할 외부 애플리케이션(들)에 대한 특정 요인에 크게 의존합니다. 다음은 API 개발 프로세스를 계획할 때 묻는 몇 가지 질문입니다.

당신의 목표는 무엇인가요?
어떤 유형의 프로젝트이든, 시작하기 가장 좋은 곳은 항상 전체적인 그림을 그리는 것입니다. 즉, 목표를 정의하고 이해하는 것입니다. API의 목적은 개발 프로젝트의 지침이 됩니다. API를 통해 어떤 정보를 교환할 것인가요? 어떻게 사용 또는 제공될 예정인가요? 고려해야 할 다른 요소로는 애플리케이션의 대상 고객 및 요구사항에 대한 이해 등이 포함됩니다.

제한 사항은 무엇인가요?
프로젝트 목표의 반대편에는 프로젝트 제한 사항이 있습니다. 개발에 실용적인 관점을 적용하는 것은 필수적인 단계이므로, 자신의 자원과 일정의 한계를 잘 이해하고 있어야 합니다. 또 다른 고려 사항: 보안 문제, 하드웨어 리소스에 대한 영향 및 성능 요구와 같은 기술적 제한에 따른 확장성을 고려해야 합니다.

귀사의 아키텍처는 무엇인가요?
API를 처음부터 설계할 때 개발자가 선택할 수 있는 다양한 출발점이 있습니다. Python, Java, JavaScript, C# 및 기타 언어는 모두 API 개발을 위한 선택지입니다. 설계 고려 사항에 포함시킬 다른 요인으로는 사용성, 확장성(리소스 요구와 결합), 보안 등이 있습니다. API는 애플리케이션 간의 브리지 역할을 하므로 이 마지막 작업은 특히 중요합니다. 이를 위해 양측은 모두 자신의 데이터를 적절히 보호해야만 합니다. 보안 취약점이 있는 API는 코드 삽입 및 데이터 노출 등에 악용됩니다.

이러한 큰 그림의 질문을 바탕으로 개발 지침을 정의할 수 있으며, 개발자들은 API를 처음부터 구축하는 과정에 더 깊이 들어갈 수 있습니다.

SOAP와 REST API 비교

API를 설계할 때 결정되는 주요 사항 중 하나는 애플리케이션이 웹 서비스에 액세스하는 방식입니다. 간단한 소프트웨어 아키텍처 스타일인 객체 액세스 프로토콜(SOAP)과 표현 상태 전송(REST)은 모두 API를 설계하는 데 효과적인 방법입니다. 둘 다 장단점이 있으며 프로젝트에 가장 적합한 방식은 사용 상황과 상황에 따라 달라집니다. 일반적으로 웹 서비스는 SOAP 또는 REST를 지원하므로 SOAP 또는 REST 중 무엇이 목표에 더 적합한지 여부에 따라 API에 대한 웹 서비스를 결정하는 것이 적절합니다.

SOAP란 무엇인가요?
SOAP는 Microsoft에서 설계한 XML 기반 프로토콜입니다. 일련의 규칙을 기반으로 구축된 SOAP는 수많은 확장(WS-coordination 및 WS-security), 자동화 및 내장된 오류 처리를 지원하는 메시징 표준을 생성합니다. SOAP는 분산 환경에서 가장 잘 작동하지만 XML 구조에 의존하면 코드가 지나치게 복잡해질 수 있습니다.

REST란 무엇인가요?
REST는 지점 간 레벨에서 작동하는 SOAP에 대한 보다 간단하고 가벼운 대안으로 개발되었습니다. 효율적인 확장성을 위해 특별히 구축된 소프트웨어 아키텍처 스타일인 REST는 유연성을 제공하면서 처리를 최소화하는 일련의 표준화된 제약 조건을 제공합니다. REST의 빠른 응답은 JSON 및 CSV를 포함하여 애플리케이션에서 사용하는 다양한 출력 메시지 형식별 지연 시간을 최소화합니다.

API에 REST 또는 SOAP 중 어느 쪽을 사용해야 할까요?
귀사의 애플리케이션에 가장 적합한 표준은 무엇입니까? 그건 사용자의 니즈에 달려있습니다. 애플리케이션이 공유 매체 또는 데이터베이스 쿼리의 출력과 같은 간단한 사용자 대면 메시지를 가능하게 하는 대부분의 경우 REST API가 적합합니다. SOAP는 더 엄격한 학습 및 사용 곡선을 가지고 있지만 이러한 고유의 복잡성으로 인해 보안 지불과 같은 더 복잡한 트랜잭션을 처리할 수 있습니다.

API 설계 도구 선택하기

API 구축 방식은 개발팀이 선택한 도구에 따라 달라집니다. Oracle Cloud Infrastructure(OCI)의 API 솔루션을 사용하면 OpenAPI 사양을 기반으로 빠른 프로토타이핑 및 검증을 지원하는 전체 툴킷을 통해 API를 쉽게 설계하고 개발할 수 있습니다. 사용자는 OCI를 통해 API Blueprint 또는 Swagger에 액세스하여 API를 설계할 수 있습니다. API를 처음부터 구축하거나 템플릿을 통해 구축하여 개발 프로세스를 가속화할 수 있습니다.

OCI의 API 개발 프로세스에 대해 자세히 살펴보겠습니다. 이 예시에서는 OCI 콘솔을 사용하여 API 리소스(선택적으로 업로드된 API 설명 파일에서 생성된 API 설명 포함)를 생성합니다. 무료 OCI 계정에 등록하여 각 단계를 직접 수행해 볼 수 있습니다.

  1. 콘솔에서 탐색 메뉴를 열고 Developer Services를 누릅니다. API Management에서 Gateways를 누릅니다.
  2. API 페이지에서 Create API Resource를 누르고 Name을 지정합니다. API Description File(지원되는 언어로 작성된 API 설명 포함) 및 태그를 업로드합니다.
  3. Create를 눌러 새 API 리소스를 생성합니다.
  4. 백엔드 코드를 작성합니다. 선호하는 프로그래밍 언어 및 프레임워크를 사용하여 API에 사용될 백엔드 코드를 생성합니다. 이는 다른 협업자와의 협업이 필요한 반복적인 프로세스일 수도 있습니다.
  5. 백엔드 코드를 테스트합니다. Oracle의 API 개발 서비스에는 로컬 및 다양한 CI(지속적 통합) 서비스를 통해 테스트할 수 있는 다양한 도구가 포함되어 있습니다.
  6. 배포. API를 실행하고 개발자 에코시스템, 파트너, 고객 및 내부 개발자가 액세스할 수 있도록 합니다. Oracle API Gateway는 API 연결, 보안 및 거버넌스에 대한 사용 모니터링 및 관리를 지원합니다.

Oracle의 클라우드 기반 API 솔루션을 사용한 API 개발에 대한 자세한 내용은 Oracle API 개발자 가이드(PDF)를 참고하세요.

API 테스트 모범 사례

API의 철저한 테스트는 원활한 실행 및 지속적인 운영을 보장하는 중요한 단계입니다. 비즈니스 요구 사항을 충족하는 API를 배포하는 데 도움이 되는 효과적인 API 모범 사례의 간략한 목록은 다음과 같습니다.

  • API 연기 테스트를 사용하여 코드를 검증합니다(베어본 테스트는 API의 기본 기능이 작동 중인지 검증합니다.) 스모크 테스트로 반복 가능한 오류를 확인합니다.
  • 운영 환경과 유사한 조건에서 현실적인 데이터를 사용합니다. 실제 사용 사례를 반영하지 않는 데이터로 작업하면 다양한 시나리오의 문제 해결 능력이 길어지며 신뢰할 수 없는 테스트가 발생할 수 있습니다. 따라서 테스트는 실제 시나리오를 가능한 한 가깝게 복제해야 합니다.
  • 긍정 및 부정 테스트를 모두 수행합니다. 테스트에는 전체 예상 결과 및 사용 시나리오가 필요하기 때문에 개발자는 계획의 일부로 긍정적(예측 가능한 기능적 결과) 및 부정적(예측 불가능한 결과를 생성하는 사전 계획된 오류) 테스트를 모두 고려해야 합니다.
  • API 응답에 대한 포괄적인 추적을 사용하여 투명한 결과를 얻을 수 있습니다. 테스트는 길고 힘든 과정이 될 수 있으며, 데이터 볼륨이 클수록 테스트 결과를 폐기하고자 하는 충동이 들 수 있습니다. 그러나 이 데이터를 부지런히 기록하면 기능, 행동, 테스트 결과 및 효과에 대한 명확한 기록을 얻을 수 있습니다.
  • 보안 및 성능을 모두 확인합니다. 기능은 분명히 중요하지만 테스트를 통해 작동 가능성이 입증되었다면 보안(데이터 및 액세스 위험) 및 성능(리소스 사용, 확장 및 효율적인 처리)을 확인하는 것도 중요합니다.

API를 구축하고 테스트할 준비가 되셨습니까? Oracle Cloud Infrastructure(OCI) API 관리 서비스를 무료로 체험하여 완전한 API 수명 주기 관리 솔루션을 경험해 보세요.