NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

개발

API란 무엇인가요? (feat. 인터페이스)

API에 대해 이미 알고 계신 분들도 있고, 조금 낯선 분들도 있겠죠? 요즘IT에서 몇 번 소개한 적 있는 주제이지만, 오늘은 가장 기본적인 API의 개념과 인터페이스에 대해 살펴보겠습니다.

 

API란?

API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다. (출처: 위키백과)

 

 

이해가 어렵다면…

이 글을 보시는 분들이 애플리케이션이 뭔지, 프로그래밍이 뭔지 모르지는 않으실 듯합니다. 그래도 위의 API에 대한 다소 딱딱한 정의가 쉽게 이해되지 않는다면, 아마도 인터페이스(Interface)라는 다소 낯선 용어 때문일 것입니다. 때문에 API에 대한 개략적인 이해를 목적으로 하는 이 글에서는 인터페이스가 무엇인지부터 함께 알아보겠습니다.

 

 

인터페이스란?

‘인터페이스’라는 개념을 이해하기는 사실 쉽지 않습니다. 굉장히 추상적인 개념이고, 인터페이스를 제대로 논하기 위해서는 두꺼운 책 한 권이 필요할지도 모릅니다. 그래서 저는 인터페이스를 처음 접할 때 들었던 간단한 예시로 설명해드리겠습니다.

인터페이스는 ‘자동차 브레이크 같은 것’입니다. 여기서 설명하고자 하는 ‘자동차 브레이크 같은 것’의 특징은 크게 두 가지인데요. 첫 번째는 ‘사용이 편리하다(사용성)’ 두 번째는 ‘내부 구현은 숨겨져 있다(정보 은닉)’는 것입니다. 

 

인터페이스는 특정 기술이나 기능에 대한 접점을 제공하여 사용자의 손쉬운 접근을 가능하게 합니다. 자동차 브레이크의 경우 운전자는 브레이크 페달을 밟음으로써 차량 내부의 기능(차량의 속력을 줄임)을 쉽게 제어할 수 있습니다. 별다른 고민 없이 그저 커다란 페달을 살짝 밟기만 하면 되는 것이죠. 이러한 인터페이스의 편리한 사용성은 두 번째 특징인 정보 은닉에 기인합니다. 자동차의 경우, 엔진과 차량을 제어하는 복잡한 기술과 기능을 내부에 숨기고, 운전자에게 드러내지 않습니다. 그렇기에 운전자는 내부 정보에 대한 전문 지식 없이도 외부로 드러난 접점(인터페이스)을 이용할 수 있습니다. 복잡하고 어려운 것을 좋아하는 사람은 없을 것입니다. 인터페이스는 구현과 사용을 분리하고 기능을 추상화하여 사용하기 쉽게 만듭니다.

 

‘자동차 브레이크 같은 것’은 또 어떤 게 있을까요? 앞서 언급한 편리한 사용성, 정보은닉의 두 가지 특성을 생각해보면 어렵지 않게 여러 가지를 떠올릴 수 있습니다. 당장 눈앞에 보이는 키보드, 마우스 등이 좋은 예가 되겠네요. 대부분의 사용자는 이들을 구성하는 어려운 기술에 대해 알지 못하지만, 손가락을 몇 번 누르는 것만으로 이들을 원하는 대로 제어할 수 있습니다. 이처럼 오늘날의 기술은 거의 모든 측면에서 인터페이스를 이용합니다.

 

 

그래서 API란?

더 구체적으로 말하면, 위에서 언급된 인터페이스는 사용자 인터페이스(User Interface)의 사례들입니다. 사용자 인터페이스는 사용자(User)와 최종 사용자(End-User)가 일치한다는 특징이 있습니다. 다시 말해 사용자 인터페이스는 해당 기능을 단순히 이용하기만 하는 최종 사용자를 위해서 설계됩니다.

반면, API(Application Programming Interface)는 말 그대로 애플리케이션을 프로그래밍하는데 쓰이는 인터페이스입니다. 때문에 API의 사용자가 최종 사용자인 경우는 드뭅니다. 대부분의 경우 API의 사용자는 개발자입니다.

 

API는 함수, 프로토콜, 도구들의 집합 형태로 제공됩니다. API 역시 인터페이스이기 때문에 사용자(개발자)는 함수, 프로토콜, 도구들의 집합, 구현에 대해서는 신경 쓰지 않아도 됩니다. 개발자가 편리하게 사용할 수 있도록 내부 구현은 감춰져 있습니다. 단지 API가 제공하는 기능을 이용해서 개발자가 원하는 새로운 기능(프로그램)을 만들면 되는 것이죠.

 

 

사용 예시(Facebook 로그인)

간단히 예를 들어보겠습니다. 현재 위시켓 서비스는 페이스북 계정을 이용하여 회원가입과 로그인 옵션을 제공하고 있습니다. 페이스북이 관련된 API를 제공하기에, 위시켓 개발팀은 이를 이용하여 페이스북을 이용한 인증 과정을 서비스에 구현할 수 있었습니다.

 

실제로 구현된 모습은 조금 다르지만 페이스북 API는 위와 같은 형태로 이용할 수 있습니다. 즉, 페이스북은 ‘FB.api’라는 인터페이스를 제공합니다(제공하는 다양한 인터페이스 중 하나입니다). 이 API를 사용하면 아래와 같이 id와 name에 대한 데이터를 받아올 수 있습니다. 위시켓 개발팀은 ‘FB.api’의 내부 구현을 알지 못하지만(아마 무척 복잡할 것입니다), 해당 API를 단순히 사용하여 ‘me’라는 입력값에 대한 정보를 가져오는 기능을 쉽게 이용할 수 있습니다. 이처럼 API를 이용하면 개발자의 수고로움은 크게 줄어듭니다.

 

API의 도움 없이 맨땅에서 쓸 만한 소프트웨어를 만들어 내는 개발자는 흔치 않습니다. OS, DB, HW, SW library, Web 기반 시스템 등 환경을 막론하고, API는 도움을 줄 수 있습니다. 좋은 API는 흔히 쌓기 좋게 만들어 놓은 레고 블록에 비유합니다. 이 블록을 쌓아서 어떤 결과물을 내어놓을 지는 개발자들과 비즈니스 환경에 달려있습니다.

 

 

<참고자료>

요즘IT, API란?

IT의 중심에서, API의 정의

댓글 0

방이동 고분군

오랫동안 기억에 남을, 단단한 글과 코드를 쓰고자 합니다.

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.