✒️ 0. 들어가기 전
이전에 작성했던 API 관련 포스팅 참고
https://jinhos-devlog.tistory.com/entry/HTTPHTTPS-%ED%86%B5%EC%8B%A0-RESTful-API
✒️ 1. API의 개념
💡 API(Application Programming Interface) 란?
API는 둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층을 의미한다.
(중계 계층? 인터페이스? OK! )
예를 들어, A가 요청을 보내고 B가 응답을 받을 때를 상상해보자. (아주 흔한 통신의 개념이다.)
어떻게 통신할 것인지, 어떤 데이터를 주고받을 것인지 등에 대한 방법을 약속! 한다. ( = Protocal)
이러한 방법들을 정의한 중계 계층이 바로 API이다.
API는 다양한 형태로 존재한다.
과거에는 주로 라이브러리나 프레임워크의 명세서를 가르켰다.
허나, 현재는 대부분 Web API를 지칭한다.
Web API는 HTTP 프로토콜을 기반으로 하며, REST, GraphQL 등 다양한 아키텍처 스타일을 따를 수 있다.
💡 인터페이스의 개념
계속 인터페이스 라는 이야기를 하는데, 정확히 무엇일까?
컴퓨터 쪽의 용어들은 뭉뚱그려 사용하는 단어가 참 많은 것 같다.
"핵심" 키워드가 공유되는 추상적인 여러 개념들을 하나의 단어로 돌려 활용하는 것 같다...
(단어에서도 추상화가 일어난 듯..)
인터페이스는 서로 다른 두 시스템이나 장치 사이에서 정보나 신호를 주고받는 접점 또는 경계면을 말한다.
"경계면", "추상화된 틀" 이러한 단어들이 인터페이스를 설명한다.
추상적인 명세 또한 인터페이스이다.
우리가 일상적으로 접하는 사용자 인터페이스(UI)도 이러한 인터페이스의 한 종류이다.
예를 들어, 스마트폰의 터치스크린 UI나 웹 브라우저의 그래픽 인터페이스는 사용자와 기기 사이의 인터페이스 역할을 한다.
마찬가지로 API는 서로 다른 소프트웨어 시스템 간의 인터페이스 역할을 하는 것이다.
✒️ 2. API의 작동 방식
API는 중계 계층으로서 클라이언트와 서버 사이에 위치한다고 했다.
사용자가 브라우저를 통해 서버에 요청을 보내면, API가 이 요청을 처리하고 적절한 응답을 반환한다.
이 과정에서 API는 서버의 내부 로직이나 데이터베이스 구조를 숨기고, 필요한 기능만을 외부에 노출시킨다.
✒️ 3. API에 대한 설명
💡 API의 장점
1. 보안성 강화: API는 서버의 중요한 부분을 드러내지 않고도 필요한 기능을 제공할 수 있다.
DB 설계 스키마, 테이블 정보, 서버의 상수값 등등 드러낼 필요가 없다.
2. 추상화: 사용자는 서비스의 내부 구현을 알 필요 없이 API를 통해 필요한 기능을 사용할 수 있다.
3. 개발 효율성: 특히 Open API를 사용하면 앱 개발 프로세스를 크게 단순화하고 시간과 비용을 절약할 수 있다.
4. 유연성: 내부 프로세스가 변경되어도 API 인터페이스를 유지함으로써 클라이언트 측 코드의 변경을 최소화할 수 있다.
5. 데이터 중앙화: API를 통해 다양한 소스의 데이터를 한 곳에서 수집하고 관리할 수 있다.
💡 API의 종류
API는 크게 private API와 public API로 나눌 수 있다.
1. Private API
내부적으로 사용되며, 주로 해시키를 하드코딩하여 서버 간 통신에 사용된다.
비즈니스 파트너와의 제한적인 공유도 가능하다. (API KEY를 사용)
2. Public API (Open API)
누구나 사용할 수 있는 API.
트래픽 관리를 위해 일일 요청 수 제한 등의 정책을 적용하는 경우가 많다.
📝 면접 예상 질문
REST API와 RESTful API는 무엇을 의미하나요?
답변: REST API는 REST(Representational State Transfer) 아키텍처 스타일을 따르는 API를 말합니다.
RESTful API는 REST 원칙을 철저히 따르는 API를 의미합니다.
REST하다. REST 원칙이라는 것은 무엇일까요?
답변: Rest 설계 규칙은 URI는 정보의 자원만 표현해야 하며, 자원의 상태와 행위는 HTTP Method에 명시하는걸 말합니다.
주요 REST 원칙에는 클라이언트-서버 분리, 무상태성, 캐시 가능성, 계층화 시스템, 균일한 인터페이스 등이 있습니다.
RESTful API는 이러한 원칙들을 더 엄격하게 준수합니다.
요즘 MSA MSA 많이 하고, 본인도 써보셨다고 했는데 이 중 API 게이트웨이의 역할과 장점은 무엇인가요?
답변: API 게이트웨이는 클라이언트와 백엔드 서비스 사이의 중간 계층으로, 다음과 같은 역할과 장점이 있습니다:
- 요청 라우팅: 적절한 백엔드 서비스로 요청 전달
- 인증 및 보안: 중앙화된 인증/인가 처리
- 로드 밸런싱: 트래픽 분산
- 캐싱: 응답 속도 향상 및 백엔드 부하 감소
- 요청/응답 변환: 프로토콜 또는 데이터 형식 변환
- 모니터링 및 분석: API 사용량 및 성능 추적
- 버전 관리: 여러 버전의 API 동시 지원