Computer Science/CS

[CS] SDK, API

owls 2024. 3. 3. 20:53
728x90

API

Application Programming Interface

모듈화하여 만들어진, 어떤 기능을 제어/제공하는 인터페이스를 말한다.

어떤 서버의 특정한 부분에 접속해서 그 안에 있는 데이터와 서비스를 이용할 수 있게 해주는 소프트웨어 도구이다.

 

API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 매커니즘이다.

 

예를 들어, 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어있다. 날씨 앱은 API를 통해 이 시스템과 통신하여 휴대폰에 매일 최신 날씨 정보를 표시한다.

 

API라는 것은 결국은 앱의 페이로드를 처리하기 위해서 만들어진 것인데, ‘SOAP REST 차이’는 페이로드를 처리하는 방식에 있습니다. 페이로드는 인터넷을 통해서 전송되는 데이터입니다. 그렇기 때문에 페이로드가 ‘무거운’경우에는 더 많은 리소스가 필요합니다. REST는 HTTP와 JSON을 사용하기 때문에 페이로드의 무게를 가볍게 할 수 있습니다. 하지만 SOAP에서는 XML에만 의존합니다.

 

 

API 인증키

고객의 항공권 예약 및 결제 시스템을 API를 통해 한다. 이 내역을 API가 항공사에 전달한다. 

예약이 가능한지 확인하기 위해서는 항공사의 데이터 베이스를 읽어야한다. 하지만 모든 사람들이 데이터 베이스를 읽을 수 있게 된다면 문제가 발생할 수 있다.

데이터 베이스를 읽을 수 있도록 허가한 사람에게만 비밀 코드를 알려준다. 이것을 API인증키라고 한다.

 

REST API

Representation State Transfer

네트워크를 통해 컴퓨터들 끼리 통신할 수 있게 해주는 아키텍처 스타일이다.

REST API는 인터넷 식별자(URI)와 HTTP프로토콜을 기반으로 한다.

클라이언트와 서버 사이에서 통신할 수 있게 한다.

REST는 HTTP프로토콜 덕분에 '단순함'이 핵심이라고 할 수 있다. 

 

데이터 포맷이 JSON이기 때문에 브라우저들 간에 호환성이 좋다. 

 

SOAP API

Simple Object Access Protocol

프로토콜이다.

보안 및 메시지 전송 등에 있어서 REST보다 많은 표준들이 정해져있기 때문에 복잡하다.

이런 표준들로 인해서 오버헤드가 많지만, 보안, 트랜잭션, ACID을 준수해야 하는 종합적인 기능이 필요한 조직에게 적합한 방식이 될 수 있다.

 

SOAP은 보안 수준이 엄격하다.

SSL을 지원하고, WS-Security라는 자체 표준의 보안 기능도 가지고 있다.

은행용 모바일 앱처럼 보안 수준이 높아야 하거나, 신뢰할 수 있는 메시징 앱, ACID를 준수해야 하는 경우라면 SOAP방식이 더 선호된다.

 

REST에서는 표준화된 메시징 시스템이 갖춰져 있지 않으며, 통신 장애가 있을 경우 재시도를 통해서만 조치할 수 있다. 

SOAP 표준에는 성공/반복 실행 로직이 규정되어 있기 때문에, SOAP API로 통신할 때는 처음부터 끝까지 신뢰성을 제공한다.

 

SOAP 표준에는 ACID준수에 관한 사항이 있다. ACID(원자성, 일관성, 고립성, 지속성)

ACID를 준수하기 때문에 데이터의 변형을 줄여주고, 데이터 베이스와의 상호작용에 대해서 사전에 정확하게 정하기 때문에 데이터의 무결성을 지켜준다.

ACID는 데이터 일관성을 위한 다른 방식들보다 더 보수적이기 때문에, 금융 정보 등의 민감한 데이터를 주고받으 때 사용한다.

 

차이점 SOAP REST
유형 프로토콜 아키텍처 스타일
기능 기능 위주 : 구조화된 정보 전송 데이터 위주 : 데이터를 위해서 리소스에 접근
데이터 포맷 XML만 사용 일반 텍스트, HTML, XML, JSON 등 다양한 포맷을 허용
보안 WS-Security와 SSL을 지원 SSL과 HTTPS를 지원
대역폭 상대적으로 더 많은 리소스와 대역폭이 필요 상대적으로 리소스가 적게 필요하고, 무게가 가벼움
데이터 캐시 캐시를 사용할 수 없음 캐시를 사용할 수 있음
페이로드 처리 엄격한 통신 규약을 갖고 있으며,
모든 메시지는 모내기 전에 알려져야 함
미리 알릴 필요 없음
ACID준수 자체적인 ACID기준이 있어서 데이터 손상을 줄여줌 ACID준수와 관련된 내용이 없음

 

SDK

Software Development Kit 소프트웨어 개발 도구 모음

SDK는 API, IDE, 문서 라이브러리, 코드 샘플 및 기타 유틸리티가 포함될 수 있다.

프로그램 개발의 복합성을 줄이는 강력한 기능 집합이다.

 

SDK구성 요소

라이브러리

코드 패키지.

개발에 사용할 수 있는 클래스, 함수, 데이터 등이 정의되어 있다.

라이브러리를 불러오면 SDK기능을 바로 사용할 수 있다.

API

서비스 또는 데이터를 제공하는 인터페이스

IDE

Integrated Development Environment

코드 에디터

Apple은 Xcode라는 IDE를 제공.

IntelliJ, VSCode

● 문서

SDK를 어떻게 사용하는지 알려주는 가이드.

개발 과정을 자세히 설명하고 발생할 수 있는 문제와 해결 방안을 제시한다.

 

JDK도 Java용 SDK이다.

 

소프트웨어를 만들기 위한 도구 모음을 SDK라고 한다. 그리고 이 도구엔 API도 포함되어 있다.

 

 

API와 SDK의 차이점

  API SDK
목적 소프트웨어 연결 및 통합 다양한 개발 도구 포함
형질 가볍고 빠르며 전문화되어 있음 더 견고함, 많은 유틸리티를 포함
사용 사례 애플리케이션에 특정 기능을 추가하는데 사용됨 새로운 애플리케이션을 생성하거나 하나의 패키지로 많은 기능을 추가하는데 사용됨

 

1. 용도가 다르다.

API의 용도는 SDK의 용도보다 좁다.

SDK는 애플리케이션 개발을 돕는 개발 도구이다.

반면, API는 두 소프트웨어 프로그램이 통신하는 인터페이스이다.

API는 개발자가 다른 서버에서 서비스를 요청하는 방법으로써 특정 서비스 또는 데이터가 필요할 때 사용된다.

 

2. SDK에는 API가 포함된다.

SDK는 로그인, 위치 서비스, 온라인 결제와 같은 기능을 연동할 때 사용된다.

이런 서비스는 SDK코드 라이브러리에서 API를 사용해서 서버와 통신하는 것이다.

이렇게 SDK에는 보통 API가 포함되어 있지만, API에는 SDK가 포함되지 않는다.

 

 

 

 

참고

 

https://brewagebear.github.io/soap-and-wsdl/

https://www.upwork.com/resources/soap-vs-rest-a-look-at-two-different-api-styles

 

https://blog.wishket.com/soap-api-vs-rest-api-%eb%91%90-%eb%b0%a9%ec%8b%9d%ec%9d%98-%ea%b0%80%ec%9e%a5-%ed%81%b0-%ec%b0%a8%ec%9d%b4%ec%a0%90%ec%9d%80/

https://docs.tosspayments.com/resources/glossary/sdk

728x90