출처: brunch story 님의 블로그
개발자와 일하다보면 용어의 충돌이 발생한다. 간단한 예시로는 데싸가 말하는 아키텍처와 개발자가 말하는 아키텍처의 정의는 다르다. 이러한 용어를 이해할겸, 이러한 용어가 사용되는 분야(?)를 이해할겸 설명이 잘 된 블로그 글을 참고했다. (거의 똑같이 복붙했다.) 해당 블로그는 디자이너로 일하는 분의 블로그로 비개발자의 시선으로 설명이 아주 잘 되어 있다.
API 기초 이해하기 를 참고하길 바란다. 감사의 말씀을 전합니다. :)
API(Application Programming Interface) 란?
API 는 키보드로 설명할 수 있다.
우린 키보드를 통해 컴퓨터를 동작한다. 키보드의 버튼을 누르면 → 키보드에서 컴퓨터로 전달되고 → 스크린에서 텍스트를 볼 수 있다. 키보드를 통해 컴퓨터와 인터렉션(interaction: 상호작용) 하는 것이다.
이와 같은 맥락으로 API 는 프로그램과 서로 상호작용하는 것을 도와주는 매개체이다. 코드들끼리 서로 소통하기 위해 만들어진 게 API 이다.
API 역할
API 는 앱과 기기가 원활하게 통신할 수 있도록 한다.
- 사용자가 앱에 접속하여 장바구니에 있는 리스트를 보고 싶어 한다. → 장바구니 클릭
- 클릭과 동시에 사용자는 서버에 장바구니 리스트를 보여달라고 요청(request) 한다.
- 서버는 사용자에게 Json 방식(문자열 방식)으로 응답(response) 한다.
즉, API 는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 중간 매개체 역할을 해주는 셈이다.
*Json 방식이란?
JavaScript Object Notation 의 줄임말로, 속성 값으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.
특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다.
위 그림은 장바구니에 담겨 있는 상품에 대한 정보를 서버에서 응답해주는 Json 객체이다.
다양한 API 종류
그렇다면 REST API, GraphQL API, .. 등은 무엇인가?
'프로그램이 서로 소통할 수 있게 도와준다.' 라는 같은 목적을 가진 생김새만 다른 키보드들이다.
*공공 API (Public API)
공공 API 중에는 날씨 API 가 있다. 만약 한국 날씨 정보를 원한다면 전 세계 날씨 정보를 갖고 있는 서버에서 한국 날씨 정보를 요청해야 할 것이다. 그러나 네이버가 날씨 데이터를 공개해도 대부분의 사람들은 그 데이터를 가지고 자신에게 맞게 사용하기가 어려울 것이다. 정보가 너무 방대하기 때문이다.
그렇기 때문에 네이버에선 자사 데이터를 활용하여 사용할 수 있게끔 '네이버 날씨 API'를 사용자들에게 공개한 것이다.
Public API 는 개방형 API 로, 모두에게 공개된다. 누구나 제한 없이 API 를 사용할 수 있는 게 특징이다.
*REST API( Representational State Transfer )
인터넷에서 시스템 또는 컴퓨터 간의 통신 채널을 제공하는 웹 서비스의 아키텍쳐 스타일이다.
따라서 REST API 는 REST 의 아키텍쳐 스타일로 지원되는 애플리케이션 프로그램 인터페이스이다.
즉, REST 는 통신하는 행위를 말하고 REST API 는 REST 방식으로 데이터를 주고받을 수 있게 해 놓은 수단이라고 할 수 있다.
*아키텍쳐란
최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템의 구성환경 등을 설명 및 설계하는 청사진 또는 설계도이다. 기본 Computer Science 지식을 기반으로 주변 환경 등을 고려하여, 최상의 소프트웨어를 구성하는 방법을 연구하고 이를 바탕으로 가이드하는 역할을 한다.
*인터페이스란
서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.
*REST API 예시
Instagram API 를 사용하면 애플리케이션에서 사용자 태그, 사진, 계정 등을 검색할 수 있다.
이때 핸드폰 화면에 보이는 Instagram 이 인터페이스가 되고 검색 기능이 REST API 를 제공하는 수단이 된다.
마치며,,
필자 회사에서 개발자들과 대화하다보면 REST API, 아키텍처, request, response 이런 단어를 많이 사용한다.
업무 특성 상 개발자와의 의사소통이 중요하기에 개발자가 사용하는 단어의 개념을 정리했다.
의사소통을 위해 계속 공부할 생각이다.
'Developer area > Study' 카테고리의 다른 글
[Study]DB 설계 using PostgreSQL (1) | 2024.09.26 |
---|---|
[쿠버네티스] kubectl 명령어 정리 (0) | 2023.11.05 |
[키워드] 개발자 용어 정리 2 (0) | 2022.09.01 |
[키워드] 개발자 용어 정리 (0) | 2022.08.04 |
댓글