본문 바로가기

Backend/API

API가 무엇일까?

API에 대해서 많이 듣고, 보고한다. 근데 왜? 이상하리만큼 와닿지 않고 항상 헷갈린다.

이번 기회에 한번 잡아보자😛😛

 

API란 무엇일까? 참고자료

 

API는 Application Programming Interface의 약자이다. 응용 프로그램 프로그래밍 인터페이스라는 뜻이다.

 

API는 일반적으로 함수, 메소드 또는 오퍼레이션 등으로 다양하게 불리는 '소프트웨어 컴포넌트'의 기능, 입력, 출력, 그리고 이에 사용되는 자료형으로 표현된다.

 

소프트웨어 컴포넌트는 독립적인 소프트웨어 모듈이다. 즉 독립적인 기능을 수행하는 모듈인데 재사용 단위라는 의미로 많이 사용된다. ex) 재사용 되는 문서, 재사용 코드 등

 

API는 사양만 정의하되 구현과는 독립적인 의미를 갖는다. 다시말해, 프로그래밍에서 프로그램을 작성하기 위한 프로토콜 등을 정의해서 상호작용 하기 위한 인터페이스 사양을 의미한다. 이러한 개념을 기반으로 개발자에게 기능을 제공하기 위해 구현된 것을 라이브러리라한다.

 

정리하자면, API는 정의된 프로토콜에 따라 상호 작용을 하기위해 약속한 시스템으로 컴퓨터 공학 분야에서의 추상적인 개념이고 이를 구현한 구현체는 라이브러리인 것이다.

 

독립된 응용 프로그램 간의 상호작용은(라이브러리의 클래스를 사용하는 등) 이미 구현된 코드의 재사용이다. 라이브러리는 다시 사용하기 위해 작성된 코드를 모아둔 것이고 이는 약속을 통해 정의된 것이므로 API를 기반으로 구현된 것이 볼 수 있다.

 

API를 통해 고레벨 프로그래밍 언어에서 하드웨어를 제어할 수도 있다. 예를 들어 그래픽 카드나 디스크 드라이브 등 하드웨어를 저레벨에서 조작하려면 C언어나 어셈블리어 등 저단계 프로그래밍 언어를 사용해야한다. 하지만 API를 사용한다면 기능을 각 언어에 맞게 추상화해주어 직접 메모리 조작이나 하드웨어를 조작할 필요가 없어진다. 따라서, 잘 설계된 API는 프로그램 개발을 쉽게 해준다. 이는 '프로그램과 운영체제 간의 상호 작용'을 위한 프로토콜로 이러한 API에는 C++의 STL(표준 템플릿 라이브러리), Java SE API 등 다양한 형태로 존재한다.

 

반면에 '기업의 서버와 개발자 본인의 프로그램 간의 상호 작용'을 위한 프로토콜도 있다. 기업에서는 자체 API를 제공해서 개발 편의를 돕고 자사의 제품을 사용하도록 유도한다. 예를 들어 휴대폰으로 촬영한 영상을 유튜브에 업로드하고 카카오 지도에 장소를 기록하려는 앱을 만들기 위해서는 유튜브, 카카오 서버에 접근해야하는데 이러한 역할을 API가 하는 것이다. 이를 위해 서버 DB에 직접 접근하는 것은 고객 정보 등 민감한 데이터가 유출될 수 있기때문에 자체 API를 개발해서 배포하게된다.

 

아래에는 API에 대해 쉽고 재미있게 설명한 영상이다. 참고하면 좋을 것 같다!