비개발자인 본인이 제일 이해하기 어려웠던 용어
06화: API, 허상인가 실체인가
비개발자인 본인이 제일 이해하기 어려웠던 용어
1. 울며 겨자먹는 당신들을 위한 서론
2. 그전에 알아둬야 할 개념들
3. 비개발자가 API를 말하다 (API 통신이 이뤄지는 경우 3가지)
1) 클라이언트와 서버 간 통신
2) 같은 시스템 내의 소프트웨어 간 통신
3) 서로 다른 플랫폼 간 통신
4. 06화 끝
1. 울며 겨자먹는 당신들을 위한 서론
내가 개발 용어를 공부할 당시 가장 허상에 가까운(...) 용어가 바로 API였다.
검색을 하게되면 어디서나 늘어놓듯이, API의 사전적 의미는 "운영체제와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식, 소프트웨어나 애플리케이션이 상호작용을 가능하게 만드는 도구와 규칙의 집합 등..."이다.
그래서..?
비개발자 입장에서 사전적의미만 봤을 때 너무나도 뜬구름인 것이다.
상호작용..? 사람들이 인사나 대화하는 것과 비슷한 것인가..? 소프트웨어랑 애플리케이션은 뭐가 다른거지..? 운영체제는 또 뭐고..?
이번 화에서는 API를 누구보다 쉽게 깨우쳐 보자.
2. 그전에 알아둬야 할 개념들
그전에 기억해 두어야 할 개념들이 있다.
우리는 01화에서 클라이언트, 서버, 프론트엔드, 백엔드에 대해서 살펴 보았었다. (기억하시죠?)
클라이언트를 웨이터, 서버를 쉐프에 비유했었다.
클라이언트는 원하는 값을 사용자에게 보여주기 위해 서버에 끊임없이 요청을 한다.
웨이터는 고객이 주문한 음식을 서빙하기 위해 쉐프에게 주문을 한다.
그리고 1. 서론에서 운영체제, 응용 프로그램, 소프트웨어, 어플리케이션이라는 단어가 등장한다.
운영체제는 소프트웨어를 구동시킬 수 있는 환경/체제를 말하며, Windows나 맥 OS, 안드로이드 등을 말한다.
응용 프로그램, 소프트웨어, 어플리케이션은 모두 관련이 있는 단어들인데 소프트웨어가 가장 큰 범위이고, 그 안에 응용 프로그램, 어플리케이션이 포함된다고 생각하면 편할 것이다.
이 개념들을 잠깐 상기해 두도록 하자.
3. 비개발자가 API를 말하다 (API 통신이 이뤄지는 경우 3가지)
클라이언트에서 필요한 정보를 서버에 요청하여 원하는 응답을 얻는다.
듣기만 해도 속이 편해지는 아름다운 스토리다.
하지만 세상은 그렇게 녹록지 않다. 컴퓨터는 사람이 아니기 때문에, 규칙이 필요한 것이다. 한국말로 말해도 못 알아 들으니까!
예를들어 호주에 한 레스토랑이 있고, 쉐프, 웨이터들을 비롯한 직원들과 손님이 다 호주인인 와중에
이제 막 워킹 홀리데이로 호주 땅을 밟은 비전(본인)이 신입 웨이터로 들어왔다고 생각해보자.
비전은 영어를 할줄 모른다. 이런상황에서 어떻게 비전에게 일을 시킬 수 있을까?
한국어로 웨이터 업무 매뉴얼을 만드는 것이다. 아주 상세히. 그렇다면 비전은 매뉴얼에 따라 올바르게 주문을 받아 쉐프에게 요청하고, 음식을 받아 손님에게 틀리지 않고 서빙할 수 있을 것이다.
서로 다른 프로그램, 소프트웨어 등등이 정확하게 요청/응답을 주고 받을려면, 이들은 애초에 다른 언어와 데이터로 구성되어 직접 통신이 어렵기 때문에 이걸 가능하게 하는 매뉴얼이 필요한 것이다.
1) 클라이언트와 서버 간 통신
API는 주로 서버 개발자가 개발하고 클라이언트 개발자가 사용 한다.
클라이언트와 서버의 입장에서 봤을 때, 클라이언트는 매뉴얼(API)에 맞춰 서버에게 요청을 하고, 서버는 알맞은 응답과 데이터를 보내준다. 이게 가능하려면 사전에 "이 주소로 A요청이 오면 a값을 주고, 저 주소로 B요청이 오면 b값을 줘야지!"라는 규칙(API)을 서버 개발자가 정해놔야 하기 때문이다.
API 통신이 모두 클라이언트와 서버 간 통신을 베이스로 한다고 할 수는 없지만, 대부분이 그렇다. 그리고 특수한 경우가 아니라면 이정도까지만 알아도 될 것 같다!
2) 같은 시스템 내의 소프트웨어 간 통신
(안드로이드 유저 분들 죄송합니다. 안드로이드도 동일하지만, 제가 아이폰 유저라서^^..)
아이폰에서 오후 7시 알람을 맞춘다고 생각해 보자.
같은 시스템(내 아이폰)내에 시간 데이터(소프트웨어)와 알람 어플(소프트웨어)이 통신하여 알람이라는 합작을 만든다.
알람 어플이 시간 데이터에 오후 7시가 되면 알려달라고 요청을 한다.
시간 데이터는 오후 7시에 알람 어플에 응답을 하고, 알람 어플은 알람을 울린다.
이렇게 같은 시스템 내에서 이루어지는 통신도 API라고 할 수 있다.
3) 서로 다른 플랫폼 간 통신
API를 알게 되었을 때 가장 많이 예시로 접하게 되는 경우가 아닐까 싶다.
예를들어, 맛집 어플(플랫폼A)속에서 맛집 지도를 구현하기 위해 구글맵(플랫폼B)을 사용하는 경우이다.
이 두 플랫폼은 서로 쌩판 남이자, "누구세요?"인 사이기 때문에 구글맵 기능을 사용하기 위해서는 API 연동이 필요한 것이다.
또한 여러 다양한 어플에서 카카오, 네이버 로그인이 가능한 것도 바로 API 덕분인 것을 알 수 있다.
그래서 개발자 채용 공고에서도 잘 보면 API 연동이라는 말이 심심치 않게 등장한다.
4. 06화 끝
이정도면 API는 채용 담당자 수준으론 마스터 했다고 할 수 있겠다.
(어디에나 있고 어디에도 없었던 것이었다.)
사실 자신있게 노트북을 열어 글을 작성하려 했는데, 쓰려고 하니 다시금 머릿속이 하예지고 눈앞이 까매져서... 부단히도 책을 펼쳐보고 쉼없이 검색을 해서 참고 했다.
물론 더 방대한 지식이 있겠지만, 우리의 목표는 단기속성 아니겠는가?
최소한의 시간으로 최대한의 효율을 끌어내 보자!
끝.