새로운 내용을 공부할 때
새로운 내용의 공부를 시작할 때 용어의 정의를 이해하지 못하거나 정확하게 알지 못한다면 그 용어가 포함된 문장을 이해하지 못합니다.
작은 단어 하나가 내용을 이해하지 못하게 하기 때문에 용어를 정확하게 이해하는 것이 중요합니다.
TIL)API 와 종류 학습
간단한 정리
API는 소프트웨어 간 기능 호출이나 데이터 교환을 기능 호출이나 데이터 교환 방법을 지원하는 인터페이스를 말합니다.
서로 다른 언어와 위치에서 동일한 기능을 제공하기 위해서 만들어진 양식이라고 생각하면 됩니다.
API 종류는
- internal - 기업 내부 시스템끼리 통신하기 위한 api로 데이터 교환 및 기능을 위한 목적
- public - 외부 개발자가 사용할 수 있는 공개된 api
-
browser web api - 브라우저가 제공하는 표준 api로 fetch, dom 등이 있다. - os api - 운영체제가 프로그램이 사용할 수 있도록 제공하는 입출력이나 네트워크 기능을 사용할 수 있도록 제공하는 것
internal 에서 추가학습할 내용
- REST
- gRPC
- SOAP
- Socket
- GraphQL
SOAP
- XML 기반
- 자유로운 프로토콜
- 강력한 규약
- 트랜잭션 기능
- 선택적인 stateless
REST API는 HTTP를 기반으로 리소스 중심 설계만 하면 됩니다
리소스에 대한 표현 방법이 자유로우며 세부 내용은 클라이언트와 서버가 자유롭게 작성할 수 있습니다.
자유로운 만큼 보안이나 서명등 규칙이나 필드, 헤더 설정등이 정해지지 않았기에 보안에 대해서는 개발자가 구현을 해야합니다.
그러나 SOAP는 자유로운 프로토콜이며 프로시저 호출 중심 설계입니다.
바디에 정해진 규칙으로 작성해야하며 사용하려는 기능 호출에 대한 명확한 입력과 이하 필드에 대한 태그가 정해져있습니다.
필드별로 공식적으로 지원하는 암호화 태그가 있기에 개발자가 구현해야하는 REST API보다 신뢰성이 높습니다.
그리고 HTTP 기반이 아니기에 stateless 규칙도 자유롭습니다. 이 차이로 SOAP는 트랜잭션 태그를 통해 원자성을 보장하는 요청을 보낼 수 있습니다.
XML만 사용할 수 있기에 가벼운 REST API에 비해 무겁습니다.
나무기르기
규칙이 강할 수록 신뢰성은 높아지게 됩니다.
사용자가 그 규칙을 따르지 않으면 사용할 수 없기 때문입니다.
강력한 규칙을 생각하면 데이터베이스를 제약 조건이 생각납니다. 제약 조건과 스키마로 정의된 메타데이터로 내부에 저장된 값들은 정합성과 무결성 훼손을 막습니다.
이처럼 SOAP도 XML 태그 기반으로 설정된 규칙이 있으니 사용하는 측과 응답하는 서버 모두 태그로 인한 규칙을 준수할 수 있게 됩니다.
저는 SOAP는 구조화된 관계형 데이터베이스가 생각났고, REST API는 NoSQL이 생각 났습니다.
자유로운 양식으로 포멧을 사용자 정의에 맞게 추가하고 수정할 수 있는 방식인 NoSQL이 있으며
구조화와 정규화로 인해 데이터에 대한 무결성 , 일관성을 보장하는 RDBMS와 SOAP가 생각납니다.
댓글남기기