웹 API 디자인

인터페이스란 무엇인가

 

프로그램을 하다 보면 개발자들의 입에서 꼭 나오는 단어가 있습니다. 바로 인터페이스 입니다. 인터페이스 잘 모르겠다고요? 개발 분야를 이야기 하지 않아도 우리는 일상 속에서 인터페이스라는 단어를 많이 사용 해 왔습니다. 사용자 인터페이스가 바로 그것입니다. User Interface의 첫글자를 따서 UI라고도 합니다. 인터페이스를 이해하려면 사용자 인터페이스를 먼저 떠올려 보면 될 것 입니다.

스마트폰의 사용자 인터페이스라고 하면 터치스크린이 먼저 생각납니다. 하지만, 하나 더 추가해야 인터페이스라는 정의에 조금 더 다가갈 수 있습니다. 바로 손가락 입니다. 손가락으로 터치스크린을 조작하면서 우리는 유튜브도 보고 모르는 길도 찾습니다. 스마트폰과 상호작용을 합니다.

컴퓨터라는 기기는 그럼 어떨까요? 키보드와 마우스가 사용자 인터페이스가 됩니다. TV는 리모콘이 될 것입니다. 물론 TV 본체에서 직접 조작할 수 있는 버튼도 사용자 인터페이스가 됩니다. 이렇게 사용자가 동작시키고자 하는 기기와 상호작용을 하기 위한 도구가 사용자 인터페이스입니다.

개발자가 말하는 프로그램에서의 인터페이스도 서로 다른 응용 프로그램간 상호작용을 위해 필요합니다. 원하는 결과를 얻기 위해 해당 응용 프로그램을 동작시키는 기능을 담당합니다. 이때의 인터페이스를 API(Application Programming Interface)라고 부릅니다.

 


일상 속 사물이 알려주는 웹 API 디자인
아노드 로렛, 황건구 저 | 영진닷컴 | 2020년 11월 10일

 

인터페이스를 위키백과에서 찾아보면 다음과 같이 정의합니다.

인터페이스

인터페이스(영어: interface, 문화어: 대면부, 결합부) 또는 접속기는 서로 다른 두 개 이상의 독립된 컴퓨터 시스템 구성 요소 간에 정보를 교환하는 공유 경계(shared boundary)이다. 컴퓨터와 사용자 간의 통신(communucation)이 가능하도록 하는 장치나 프로그램(device or program)을 의미하기도 한다.

여기서 말하는 ‘공유 경계’라는 단어는 ‘상호작용하는 곳’으로 바꿔 말해보면 이해가 쉽습니다. 이러한 인터페이스는 프로그램, 라이브러리 등의 추상적 모형으로 API나 시스템 호출과 같이 함수나 입출력으로 나타난다고 되어 있습니다.

이 책은 어려가지 인터페이스 중 API를 다루고 있습니다. 정확하게는 API 중에서도 웹 API(RESTful API) 디자인 개념을 소개하고 있습니다. 웹 API 설계방법을 일상 속 사물인 드론의 리모트 컨트롤러, 매장의 주문 프로세스, 전자레인지 조작 버튼 등을 비유하여 쉽게 설명하고 있습니다. API 설계를 위한 공통의 원칙을 알려주며, 반드시 적용될 수 있도록 기본 개념과 기술부터 시작합니다.

웹 API란 무엇인가, 웹 API의 기본 개념을 시작한 후 책은 계속 확장되어 진행됩니다. 이 책은 차례대로 읽어야 상황에 맞는 웹 API의 정확한 디자인을 개발할 수 있도록 하고 있습니다. 하지만, 궁금해 하는 주제에 대해서는 찾아보기 쉽도록 바로가기를 두고 있습니다. 해당 부분에 대해 평소 의문을 가진 분이었다면 그 부분만 먼저 펼쳐보는 것도 충분히 도움이 될 것입니다. 초보자와 중급자 모두를 겨냥한 것 같습니다.

API 설계를 위해 고려해야 할 사항과 필수 노하우도 수록하고 있습니다. API설계시 API 및 API 설계 프로세스 자체를 둘러싼 전체 컨텍스트에 대한 고려가 중요한 이유를 확인할 수 있습니다. 요즘 같은 마이크로 서비스 아키텍처에서 어떻게 인터페이스 설계를 해야 좋은 설계인지를 배울 수 있습니다.

웹 API 디자인이라는 개념을 차근차근 알려주는 개념서이면서 입문서 성격이 강합니다. 이 책을 통해 기본의 중요성을 다시 확인할 수 있습니다. 위키백과를 통해 조금씩 조금씩 지식을 넓혀왔던 과정을 단번에 정리해 주는 책입니다.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.