개발/개발관련

[개발관련] API(Application Programming Interface)에 대한 이해

mabb 2023. 7. 22. 19:25
반응형

다음 단어들이 잘 와닿지 않았었다.

- Application
- API ( Application Programming Interface)

애플리케이션을 스마트폰에서는 앱, 어플 등으로 표현한다. 보통 '앱 깔아서 쓰면 된다'라고 말을 하는데 이는 사용자가 필요로 하는 프로그램을 스마트폰에 설치한다는 의미이다. 앱(Application)은 사용자가 필요에 의해 설치하여 사용하는 프로그램이며 응용프로그램이라고 칭한다. 운영체제 위에서 사용자에게 특정 기능을 제공하는 모든 프로그램이 App이라고 이해해 보았다. Excel, 메모장, 그림판, 계산기, Tomcat, nginx, 브라우저 등등 운영체제 위에서 동작하는 운영체제가 아닌 프로그램을 모두 응용프로그램이라고 보는 것이다. 사람들은 보통 응용프로그램을 사용하기 위해 스마트폰이나 컴퓨터를 사용하지 운영체제 그 자체를 사용하려는 목적으로 하지는 않는다. 운영체제는 컴퓨터나 스마트폰 등 기기의 한정된 자원을 관리하여 사용자가 필요로 하는 응용프로그램들을 편리하게 동시 다발적으로 사용할 수 있도록 해주는 것을 주 역할로 한다.

 API는 응용프로그램의 인터페이스이다. 한편 응용프로그램이 운영체제의 서비스를 이용할 수 있도록 커널이 제공하는 인터페이스를 시스템콜(System call)이라고 한다.  Java에서의 인터페이스는 기능의 집합인데 이 기능의 집합은 사용법에 대한 목록이라고 볼 수 있다. 어떤 객체의 사용법에 대한 목록을 제공하는 것이다. 응용프로그램 인터페이스도 마찬가지로 해당 응용프로그램의 사용법에 대한 목록을 제공하는 것이다. 이러한 API를 제공하는 응용프로그램도 있고 제공하지 않는 응용프로그램도 있을 것이다.

계산기 응용프로그램이 HTTP API를 제공한다면?----------
1. 더하기 기능
엔드포인트: GET /operations/plus
입력:정수1, 정수 2 
출력 : 입력한 두 수의 합

2. 빼기 기능
엔드포인트: GET /operations/minus
입력:정수 1,정수 2 
출력 : 정수 1에서 정수 2를 뺀 값

3. 곱하기 기능
엔드포인트: GET /operations/multiple
입력:정수 1,정수 2 
출력 : 입력한 두 수의 곱

4. 나누기 기능
엔드포인트: GET /operations/divide
입력:정수 1,정수 2 
출력 : 정수 1을 정수 2로 나눈 몫
------------------------------------------------------------

계산기의 사칙연산 같은 기능이야 굳이 API로 다른 응용프로그램의 기능을 가져다 사용하는 것보다 직접 만드는 것이 나을 것이다. 하지만 삼성전자의 현재 주식 거래량이 필요하다거나 카카오나 구글의 소셜 로그인 기능을 사용하고자 할 때는 이미 잘 만들어진 응용프로그램에서 제공해 주는 기능을 사용하는 것이 좋을 것이다. 증권사나 카카오, 구글 등 수많은 기업에서는 응용프로그램의 기능을 사용할 수 있도록 API를 제공하고 있다.

응용프로그램의 내부 로직을 몰라도 인터페이스에 정의된 대로 '요청'하면 '응답'받을 수 있는 것이다. 요즘 애플리케이션들은 혼자 동작하지 않고 서로가 서로의 기능을 사용하거나 이미 만들어져서 제공되는 API의 기능을 사용한다. 백엔드 개발자의 관점에서  특정 URI로 요청 시 어떠한 결과를 반환하겠다는 것을 프런트 엔드 개발자에게 알려주기 위하여 API 설계서 등을 작성한다.

반응형