API(Application Programming Interface)
둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층을 의미합니다.
인터페이스란?
- 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면입니다.
- 특징으로는 내부서버가 어떻게 구현되어있는지는 서로 알 수 없는 상태로 통신 된다는 겁니다.
쉽게 얘기하면 시스템끼리 정보를 주고 받는 장소라고 이해했습니다.
두 나라끼리 무역은 어떤 특정한 지역에서만 거래하는게 합법인 것과 비슷한 느낌이라고 생각합니다.
API를 쓰는 이유
1. 보안적 요소
- 서버 내부적인 코드를 모두 보여주는 것은 위험합니다. 개발자가 모르는 취약점이 있을 수 있고, DB 설계 구조나 프로젝트의 코드를 숨기고 싶을 수 있기 때문입니다.
2. 필요한 데이터 혹은 정보만 교환할 수 있습니다.
- 사실 사용자 입장에서는 서비스를 사용할 때 서버가 어떻게 구현되고 있는지 알 필요 없습니다.
- 원하는 정보와 데이터만 잘 받아오면 되기 때문입니다.
3. 개발 프로세스 단순화
- Open API의 경우 앱 개발 프로세스를 단순화 시키고 시간과 비용을 절약할 수 있습니다.
4. 매번 사용자가 앱을 업데이트 하는 일이 줄어든다.
- 내부 프로세스에 어떠한 수정되었을 때 유저는 앱을 업데이트 해줘야할까요?
- 그럴 필요가 없습니다. 이유는 API 중계 계층에서는 데이터를 똑같이 받아옵니다.
- 예시) A라는 나라와 B라는 나라가 있는데 Z지역에서 무역을 합니다. 이때 A는 원래 H라는 지역에서 물건을 가져왔는데 J라는 지역에서 물건을 가져오기로 했습니다. 이때 B는 그것을 꼭 알아야할까요? 몰라도 상관없습니다. 중요한 것은 약속했던 물건을 제대로 받냐 못받냐니까요.
API의 종류
private
- 주로 hashKey를 하드코딩하여 서버와 서버간의 통신합니다.
- 주로 비즈니스 파트너와 사용됩니다.
- 목적은 아무나 사용할 수 있는게 아닌 비밀스럽게 파트너와 hashKey를 공유해 통신한다는겁니다.
public
- 누구든 서버를 사용할 수 있게 한 겁니다.
- 누구든 쓸 수 있기 때문에 트래픽을 방지하는 시스템이 있습니다. (예: 하루 쵸어수의 제한, 계정당 몇 개 등등)