AI 관련 서비스를 이용하다 보면 API(Application Programming Interface)란 용어를 자주 접하게 됩니다. 대충 특정 소프트웨어 혹은 프로그램을 자신의 소프트웨어 또는 프로그램에 가져다가 쓰는 것을 의미한다고 이해하고 있습니다. 이번 포스팅에서는 개발자가 아닌 비개발자의 입장에서 API가 무엇인가를 정의하고, 그 예시를 정리해 보겠습니다.
API의 정의
UI와 API
API를 풀어서 설명하면 응용 프로그래밍 인터페이스라고 합니다. 위키피디아의 용어 설명을 가져다 쓰면, API란 응용 프로그램을 가져다 쓸 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 설계한 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. 여러 번 읽어 봐도 무슨 내용인지 쉽게 이해하기 어렵습니다.
API를 이해하기 위해 유저 인터페이스(User Interface)를 먼저 설명하겠습니다. 유저 인터페이스, 즉 UI는 사용자가 노트북, 스마트폰, 태블릿 등을 접할 때 사용자와 기기가 만나는 접점을 의미합니다. 예를 들어 스마트폰이라고 하면 스마트폰의 화면, 아이콘 등을 통칭하는 개념이라고 생각하시면 됩니다. 웹사이트에서는 화면에 나타나는 각종 버튼(홈 버튼, 검색 버튼, 각종 카테고리 버튼, 로그인 창, 메일함 버튼 등)의 총집합을 UI라고 할 수 있습니다.
UI가 이해됐다면, 이제 API를 설명하겠습니다. API 역시 단어 그대로 인터페이스를 의미하지만, 유저가 사용하는유저 인터페이스와 달리, 코드의 형태를 띄고 있는 인터페이스를 의미합니다. 예를 들어 유저가 로그인을 하려고 ID와 PW를 입력하고 확인 버튼을 누르는 과정은 UI이지만, 입력 정보가 잘못되면 웹사이트는 ID나 PW가 틀렸다는 내용의 경고창을 유저에게 보여줍니다. 소프트웨어에서 제공하는 이러한 기능들의 모음(코드로 제작된)을 우리는 API라고 합니다. 즉 다른 개발자가 코드로 제작한 기능의 모음, API를 또 다른 개발자가 활용하여 소프트웨어를 제작할 수 있습니다.
여기서 UI와 API의 차이를 이해할 수 있습니다. 웹사이트를 예로 들면 UI는 일반적인 사용자가 웹사이트를 제어하기 위해 사용하는 인터페이스를 말합니다. 반면 API는 개발자의 입장에서 웹사이트를 제어하기 위해 사용하는 인터페이스를 의미합니다.
API의 예시
구체적인 예시를 들어보겠습니다. 얼마 전에 포스팅했던 Brave 브라우저의 경우, 크롬 브라우저의 API를 가져와서 제작되었습니다. 다음과 같은 유사점이 있습니다. (링크)
- 웹사이트 로딩: 크롬의 네트워크 API를 사용하여 웹사이트의 데이터를 전송합니다.
- 웹 브라우징: 크롬의 윈도 탐색기 API를 사용하여 파일과 폴더를 관리합니다.
- 확장 프로그램: 크롬의 확장 프로그램 API를 사용하여 확장 프로그램을 설치하고 사용합니다.
- 보안: 크롬의 보안 API를 사용하여 HTTPS 연결을 설정합니다.
상기와 같은 유사점이 있기 때문에 브레이브 브라우저를 설치하면 크롬의 확장 플러그인을 그대로 가져다가 사용할 수 있습니다.
크롬 웹브라우저도 단독으로 개발되지 않았습니다. 크롬 브라우저는 윈도 플랫폼 기반으로 제작되었기 때문에 윈도의 API를 가져다가 사용하였습니다.
- 윈도 탐색기 API: 파일과 폴더를 관리하기 위해 사용됩니다.
- 드라이버 API: 하드웨어 장치에 액세스하기 위해 사용됩니다.
- 그래픽 API: 그래픽을 표시하기 위해 사용됩니다.
- 네트워킹 API: 네트워크에 연결하고 데이터를 전송하기 위해 사용됩니다.
- 보안 API: 보안을 위해 사용됩니다.
정리
최종 사용자를 기준으로 웹 개발자, 웹 브라우저 개발자, 운영 체제 개발자의 순서로 API를 설명할 수 있습니다. 최종 사용자는 UI를 사용하여 웹 서비스를 접하고 있습니다. 웹 개발자는 웹 브라우저와 운영 체제의 API를 활용하여 보다 쉽게 웹을 개발할 수 있습니다. 웹 브라우저 개발자 역시 컴퓨터의 운영 체제에서 제공하는 API를 활용하여 웹 브라우저를 개발합니다.
API에 관한 설명은 더 깊이 들어가지 않겠습니다. 더 깊이 들어가면 내용을 이해하지 못한 상태에서 설명할 것 같기 때문입니다. 누구나 사용할 수 있도록 공개된 오픈 소스 API 링크를 남기면서 글을 마치겠습니다.
구글 개발자 센터: https://developers.google.com/?hl=ko
네이버 개발자 센터: https://developers.naver.com/main/