API란 무엇인가
개발자와 대화할 때 가장 많이 나오는 단어 중 하나가 API입니다. 어딘가에서 들어봤지만, 정확히는 알기 어렵습니다. 프로그램과 프로그램 사이에 연결 다리 역할을 하는 건가? 정도의 개념입니다. 이번엔 API에 대해서 알아보겠습니다.
API 정의
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
- 위키백과 API 설명 중 -
웹 API 정의
웹 API는 웹 애플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세를 일컫는다. 예를 들어 블로그 API를 이용하면 블로그에 접속하지 않고도 다른 방법으로 글을 올릴 수 있다. 그 외에 우체국의 우편번호 API, 구글과 네이버의 지도 API 등 유용한 API들이 많으므로, 요즘은 홈페이지 구축이나 추가 개편 시 따로 추가로 개발하지 않고 이런 오픈 API를 가져와 사용하는 추세다.
- 위키백과 웹 API 설명 중 -
API는 서비스나 제품을 이용하기 위해 만들어놓은 설명서와 결과물입니다. 하나의 제품이나 서비스를 이용하기 위해서는 사용법을 알아야 합니다. 예를들어 음료수 자판기에 쓰여있는 사용설명서와 음료수가 나오게 도와주는 기계장치입니다. 사용설명서에는 동전을 넣으세요. 원하는 제품의 버튼을 누르세요. 등의 설명이 있습니다. 그리고 설명대로 하면 음료수가 나옵니다. 이렇게 사용자로부터 받은 명령을 시스템에 전달해서 결과를 받아서 피드백하는 역할을 합니다.
A프로그램이 B프로그램의 API를 호출하고, 그 결과를 받아 A프로그램이 예쁘게 가공해서 사용자에게 보여주는 과정입니다. 결국은 프로그램들이 서로 소통하는 것을 도와주는 매개체 역할을 API가 합니다. 웹API는 API의 형태가 웹페이지 형태로 되어 있다고 생각하면 됩니다.
API의 활용
API는 주로 어떨 때 쓰일까요?
데이터베이스에서 데이터를 제공할 때 API를 많이 사용합니다. 프로그램이나 사용자가 데이터베이스에 직접 요청하면 보안 상 안좋습니다. 그래서 중간에 API를 통해 호출하게 만들고, API는 사용자 확인이나 권한 등을 확인한 후에 데이터베이스에 데이터를 가져와서 호출자에게 전달합니다.
기기장치(하드웨어)를 사용할 때 많이 사용합니다. 하드웨어(기기장치)를 이용하기 위해서는 운영체제의 도움이 받아 사용합니다. 운영체제는 API를 제공해서 특정 명령어를 이용해서 기기장치 등을 사용할 수 있게 도와줍니다.
API는 표준화를 제공합니다. 사용하는 사람들이 서비스를 이용하기 위해 다양한 형태로 접근해서 사용하는데요. API가 있다면, API는 사용하는 방식을 정해서 모두가 표준화된 형태로 사용하게 합니다. 음료수를 뽑고 싶다면, 자판기의 설명서대로 해야 하는 것과 같습니다.
누구라도 API를 사용할 수 있도록 공개되어 있는 API를 Open API라고 부릅니다. 최근 만들어지는 앱들은 하나의 구성이라기 보다는 날씨와 지도, 우편번호 등 다양한 API들을 조합해서 만든다고 생각하면 됩니다. 요즘엔 많은 기업들이 자신의 서비스를 API를 이용해 외부에 공개하고 있습니다.
정리
현실에서 API는 자주 만들게 됩니다. 하나의 데이터를 여러 팀에서 공유하거나, 여러 플랫폼(스마트폰, 웹 등)에서 공유해야 한다면, API를 만드는 것이 현실적입니다. 그리고 우리의 시스템을 외부의 누군가에게 접근할 수 있게 해야 한다면, 어떻게 할까요? 시스템 전체를 그대로 열어주기에는 보안상 위험합니다. 그래서 중간에 API 서버를 만들어서 제공하고 싶은 내용만 API를 통해 노출하도록 제작합니다.
API는 다양한 형태인데요. 문서만을 가리킬 때도 있고, 구현체까지 가리킬 때도 있습니다. 다양한 문서나 서비스들을 봐두시는 것을 추천드립니다.
'IT 인터넷 > 비개발자를위한IT지식' 카테고리의 다른 글
SQL이란 무엇일까 (0) | 2020.05.06 |
---|---|
IoT(사물인터넷)란 무엇인가 (0) | 2020.04.29 |
UI 용어 컴포넌트 이름 소개 (1) | 2020.04.23 |
CLI, GUI, NUI란 무엇인가 (0) | 2020.04.22 |
URL이란 무엇인가 (0) | 2020.04.16 |