본문 바로가기
휴게소

API 이해하기(feat. 드림코딩)

by Vintz 2021. 8. 17.
반응형

API..API..API!!

프로그래밍을 공부하다보면 API란 단어를 자주 접한다. 그러다보면 API에 대해 검색도 해보고 어느정도 뜻을 알게되는데 또 다른 API를 보면 '이게 내가 알던 API의 의미가 맞나?' 생각이 들 정도로 다양한 범위에서 사용되는 것 같다. 그렇게 정확하게 알지 못하고 혼란을 겪다가 API를 사용하게 된 이유와 역사를 통해 나름 정의를 내릴 수 있게 되었다.

1964년

1964년에 도입된 Univac 1108

API(Application Programming Interface)란 단어는 1964년 36비트 컴퓨터 시스템을 사용할 때부터 등장하기 시작했다. 이때는 기종에 관계없이 모든 종류의 컴퓨터에서 사용이 가능하도록 하는 하드웨어의 독립성(Hardware Independence)을 위해 주로 사용 되었다.

 

예를 들어보자. 여러개의 서로 다른 하드웨어가 있는데 이것을 개발자가 하나하나 프로그래밍을 작성하는 것은 굉장히 비효율적이다. 따라서 HAL(Hardware Abstraction Layer)이라는 하드웨어 추상화 계층을 통해 한명의 개발자가 각기 다른 모니터에 출력(display 함수 사용)을 하거나 각기 다른 부품에 작성(write 함수 사용)을 하게 만들어주는 것이 생기게 되었고 이것이 바로 API의 시초이다.

컴퓨터의 하드웨어와 소프트웨어 사이의 추상화 계층. 이로써 일관된 플랫폼을 제공한다

1984~1985년

1980년대 중반부터 우리가 흔히 사용하는 맥OS와 윈도우즈가 등장하면서 본격적인 그래픽이 향상된 컴퓨터를 사용하기 시작했다. 이렇게 각각의 운영체제에서 작동하는 어플리케이션을 만들기 위해서는 운영체제에서 제공하는 Application Programming Interfaces를, 즉 API들을 이용해서 만들어야 했다.

각 OS에서 제공하는 API를 사용하여 해당 OS에서 작동하는 애플리케이션을 만들 수 있다

이런 API를 통해 해당 운영체제에서 작동하는 앱을 만들어 버튼을 추가하고, 파일에 데이터를 저장하고 읽고 할 수 있는 기능들이 생겨난 것이다.

1990년

1990년부터 인터넷이 대중화 되기 시작하면서 더이상 물질적으로 케이블이 연결된 세상에서 벗어나 컴퓨터와 컴퓨터 같은 다양한 기기들이 인터넷을 통해 의사소통하는 시대가 도입되었다.

 

이제 다양한 기기에서 서버에 있는 데이터를 읽고 쓰기 위해 서버에서 제공하는 Web API들을 사용해 처리하기 시작했다. 네트워크에서 기기간의 의사소통을 위한 규격 사항인 HTTP(S), Web API의 디자인을 정의하는 방식 중 보편적으로 사용되는 REST를 통해 새로운 데이터를 만들고(Post), 읽고(Get), 업데이트 하고(Put), 삭제할 수(Delete) 있다.

 

이렇게 Web API를 통해 서버에 있는 데이터를 읽어오거나 업데이트 할 수 있다.(XMLHttpRequest 등)

Open API/Public API

회사 내부에서 사용하는 Web API를 외부의 다른 개발자가 이용할 수 있도록 공개한 것을 Open API라고 한다. 또한, 우리가 간단한 함수(API)를 만들어서 깃허브에 공개적으로 올리는 것도 Open API라고 할 수 있다.

 

이런 Open API들을 통해 많은 개발자들이 창의적으로 재밌는 앱을 만들 수도 있고 궁극적으론 회사, 서비스, 커뮤니티에 기여를 할 수 있기때문에 많은 회사에서 이런 Open API를 만든다. (유튜브 API, 카카오 API, 네이버 클라우드 플랫폼 API)

더 나아가 Frameworks, Libraries

이제는 더 넓은 의미로 API를 사용하고 있다. Web API뿐만 아니라 라이브러리나 프레임워크에서 우리가 이용할 수 있는 클래스나 함수들을 API(예를 들어 리액트 훅의 useState, useMemo 함수)라고 부른다.

 

또한 프로젝트 내부에서 쓰여지는 클래스나 모듈도 해당하는데, 예를 들어보자.

Calculator라는 클래스 또는 모듈 안에 add()와 multiply()는

  1. 두 가지의 함수
  2. 두 가지의 인터페이스
  3. 두 가지의 API

라고도 불려질 수 있다.

결론

결국 A의 Application이 무색하게 현재는 다양한 범위로 사용되고 있다. 하지만 공통적인 부분은 내부의 구현 사항을 잘 숨겨두고 외부의 사용자가 필요한 부분만 노출해두어 이것을 인터페이스, API라고 부른다는 것이다.

 

실생활의 세탁기를 예로 들면 우리는 세탁기가 어떻게 작동을 하는지, 내부에 어떤 부품들이 있는지 많은 부분들이 추상화 되어 있다. 그리고 매우 직관적인 버튼(인터페이스 또는 API)을 통해 세탁기를 쉽게 사용할 수 있다.

요약

  • 하드웨어들의 차이를 숨기고 응용 프로그램이 작동하게끔 만든 HAL이라는 하드웨어 추상화 계층을 만들게 되었고 이것이 API의 시초이다.
  • 운영체제가 등장하고 운영체제에서 작동하는 앱을 만들기 위해선 해당 운영체제에서 제공하는 API들을 통해 만들어야 했다.
    • 말 그대로 애플리케이션 프로그래밍 인터페이스를 통해 만들었다.
  • 인터넷이 보편화 되고 다양한 기기에서 데이터를 읽고 쓰기 위한 서버에서 제공하는 Web API가 생기게 되었다.
    • 회사 내부에서 사용하는 Web API를 외부의 다른 개발자가 이용할 수 있도록 공개한 것을 Open API라고 한다.
  • 현재는 Web API뿐만 아니라 라이브러리나 프레임워크에서 우리가 이용할 수 있는 클래스나 함수들을 API라고 부른다.

영상

API란? 개념 정리와 포트폴리오에 유용한 대박 사이트 공유 🙌 - 드림코딩 by 엘리
반응형