API란?
컴퓨터공학을 전공하다 보면 API라는 말을 많이 접하게 됩니다.
API란 무엇일까요?
먼저 API는 Application Programming Interface 의 약자입니다.
한국말로 풀이하면 어플리케이션을 프로그래밍할 때 쓰이는 인터페이스(Interface) 라는 뜻이지요.
어플리케이션과 프로그래밍이라는 말은 아실겁니다.
그럼 어플리케이션을 개발할 때 쓰이는Interface란 무엇일까요?
먼저 Interface라는 단어의 뜻을 아셔야 합니다.
Interface = inter + face 입니다.
inter는 '~ 사이의' , '상호간의' 라는 뜻을 가지고 있습니다.
inter가 들어간 단어들을 볼까요?
interstellar(항성간의) = inter + stellar(별의)
international(국제적인) = inter + national(국가의) 즉 국가들이 상호적으로 만나 국제를 이루는 것입니다.
interchange(교환, 분기점) = inter + change 인터체인지는 다음처럼 도로와 도로가 만나 바뀌는 지점을 의미하기도 하죠.
(네이버 제공)
그럼 도대체 interface는 뭐냐?
face는 아시다시피 '얼굴' , '面' 즉 면을 말합니다.
interface(접점) = inter + face 즉 면과 면이 상호적으로 만나는 접점을 의미합니다.
그럼! API는 어플리케이션 프로그래밍에 쓰이는 접점이 되겠군요!
아직도 이해가 안되실 겁니다.
이 그림은 API의 한 예입니다.
컴퓨터 자체는 말그대로 연산을 하기위한 하드웨어 장치입니다.
그 하드웨어의 자원을 관리해주고 조작해주는 운영체제가 그 위에 있습니다.
그리고 제일 상위에는 프로그래머가 있죠.
여기서 프로그래머가 자바 개발자라고 했을때 프로그래머는 생각합니다.
"이 JAVA라는 언어를 이용해서 출력스트림을 통해 콘솔에 Hello World 라는 문자열을 출력하고 싶어."
일반 응용 프로그래머는 출력 스트림을 직접적으로 깊이 다루지 못합니다.
직접 "운영체제야~ 이 글자를 너가 하드웨어에게 출력하도록 전달해줘" 라고 시킬 수 없다는 것입니다.
이때 이용하는것이 이미 만들어진 입출력 API인 것입니다.
자바는 프로그래머가 운영체제를 다룰 수 있는 '접점' 을 제공합니다.
Sytem.out.println("Hello World");
저희는 그 접점을 이용하면 될 뿐이죠.
그리고 인터넷에 보면 다음 주소 API , 페이스북 API 등 Open API 라는 말을 보신적이 있을겁니다.
자 그럼 이제 저희는 알 수 있습니다.
다음 주소 API는 어떤 어플리케이션을 만드는데 다음 주소 서비스를 이용할 수 있는 접점이구나!
페이스북 API는 내가 앱을 개발할 때 페이스북과 연동할 수 있는 접점이구나!
그리고 이런 서비스들을 개발에 이용할 수 있게 공개해 놓은 접점을 OPEN API구나! 하고 말이죠.
API는 넓은 의미를 가질 수 있으며 운영체제와 프로그래머와의 접점 이외에도
서버와 서버사이의 접점을 의미하기도 합니다.
웹 API는 해당 웹주소를 호출하면 웹서비스를 제공해주는 API 입니다.
다음은 웹서비스이고 다음 주소 정보는 그 웹서비스를 호출했을때 얻을 수 있는 데이터들입니다.
예를 들어 다음이 자바로 개발되었다고 했을때 해당 주소를 get방식으로 요청하면 주소 정보들이 JSON 방식으로 응답되는 웹서비스가 있다고 해봅시다.
그 웹서비스는 어떻게 호출할까요? 당연히 접점이 있어야겠죠.
이 접점은 MVC 모델에서는 Controller 역할이 하는것이죠.
그 컨트롤러에서는 DB에서 주소 정보들을 가져와 JSON 형식으로 파싱하여 가져오는 비지니스 로직을 호출할 것이고
그 기능 자체가 서버가 제공하는 웹 서비스인것입니다.
저희는 그 웹서비스를 이용하기 위한 접점이 필요하고 해당 컨트롤러 주소가 웹 API가 됩니다.
개발자분들은 AJAX로 호출하여 응답받은 데이터를 알아서 가공하여 사용하세요~ 라고 할 수 있습니다.
현업에서는 저희쪽 주소정보 API를 만들어 드릴테니 쓰세요~ 라고 간단하게 이야기하죠.
이제 이해되셨나요~?
API뿐 아니라 단순히 Interface 라는 단어도 많이 쓰이니 이해가 안되신다면 보고 또 보셨으면 좋겠습니다.
GUI도 있음!
Interface는 접점이다! 꼭 기억해주세요~
'전산학개론' 카테고리의 다른 글
[개념정리] 버퍼(Buffer)란? 버퍼 개념 (7) | 2017.12.27 |
---|---|
[개념정리] 패리티 비트(Parity Bit)란? (1) | 2017.11.02 |
프로그램, 프로세스, 프로세서 차이 [2] (0) | 2017.10.29 |
프로그램, 프로세스, 프로세서 차이 [1] (0) | 2017.10.29 |
운영체제의 목적 (0) | 2017.10.29 |