[IT용어] API란 무엇인가?
안녕하세요. 어미새입니다.
정말 오랜만에 스팀잇에 포스팅을 진행하는것 같습니다. 개인적으로 바쁜 일상을 보내고 있다보니, 1일 1포스팅이 아닌 1주 1포스팅도 어려운 상황이었습니다. 다시 힘내서 포스팅을 꾸준히 해봐야겠습니다!
블록체인 관련 포스팅을 작성하기 위해서는 준비해야하는 시간이 많이 필요하다보니, 지속적인 포스팅에 어려움이 있다고 판단되어, 조금은 가벼우면서 평소에 하고 싶었던 주제로 포스팅을 진행해보고자합니다.
개발자이다보니, 개발 용어와 관련된 내용을 일반 사람들도 쉽게 이해할 수 있는 포스팅에 대한 욕심도 있고, Android 프로그래밍에 대한 포스팅 또한 하고 싶었습니다! 오늘은 가볍게 자주 들으면서 익히 알고 있는 API라는 용어에 대해서 자세히 알아보는 시간을 갖도록 하겠습니다.
API(Application Programming Interface)
먼저 위키백과에 정의된 API와, 인터페이스의 정의부터 살펴보도록 하겠습니다.
API(Application Programing Interface)
API는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
인터페이스(Interface)
인터페이스(interface)는 컴퓨터 시스템끼리 정보를 교한하는 공유 경계를 의미한다, 터치 스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신 할 수 있으며, 마우스나 마이크론 폰가 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다.
인터페이스는 말 그대로 어떤 기계간의 장치끼리 정보를 교환하기 위한 수단이나, 방법을 의미합니다. 예를 들어서 우리가 집에서 TV를 켜기 위해서 리모콘을 들고 TV에 리모콘 전원 버튼을 누름으로써 TV가 켜지게됩니다. 즉, 사전에 TV와 통신을 하기 위해서 리모콘에서는 TV에 정의된 규격에 의해 어떤 신호를 보낼 수 있도록 만들어진 장치이며, 이러한 신호를 서로 주고 받기 위한 방법을 인터페이스라고 하는것입니다!
API는 Application Programing Interface라는 용어로써, 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법을 의미합니다. 어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떠한 방식으로 정보를 요청해야 하는지, 그리고 어떠한 데이터를 제공 받을 수 있을지에 대한 규격들을 API라고 하는것입니다! API라고 하는것이죠!
API는 사용하는 방법과, 용도에 따라 오픈 API와, 비공개 API 정보가 있습니다. 오픈 API는 말 그대로 누구나 쉽게 접근하여 정보를 공유하기 위해 만들어진 규격이며, 비공개 API는 권한이 있는 일부 사용자들에게만 정보를 제공하기 위해 만들어진 규격이라고 생각하시면됩니다. 조금더 이해를 돕기 위해 기상청 오픈 API 정보를 간략하게 살펴 보도록 하겠습니다.
기상청 API
구글에 접속하여 기상청 API
라고 검색하면 아래의 그림과 같이 첫번째 페이지에 바로 기상청 오픈 API 제공 사이트가 화면에 노출됩니다. 기상청 API 말 그대로, 기상청에서 수집하고 있는 정보를 사용자에게 쉽게 제공하기 위한 목적으로 만들어진 사이트입니다.
사이트에 접속해보시면 아래의 그림과 같이 낙뢰정보, 태풍정보, 동네예보통보문 등 다양한 정보를 제공하고 있는것을 확인할 수 있습니다. 자료 포멧이라고 하는것은 어떠한 정보를 제공할때 어떤 포멧으로 제공하는지에 대한 내용입니다. 인터넷이 발달되면서 조금더 쉽고 활용하기 편한 규약이 필요했겠죠? 그렇게 발전하면서 생겨난 포멧들이 XML이나, Json 규격입니다.
기상청 오픈 API 정보중 25번 게시물인 동네예보통보문을 선택하여 들어가면 아래의 그림과 같이 API에 대한 간략한 개요정보가 나옵니다.(오늘은 API가 무슨 의미인지에 대한 설명을 하는 시간이다보니, API 유형이나, 데이터 포맷에 대한 디테일한 설명은 생략하도록 하겠습니다. )
상세 화면에서 첨부문서 영역을 선택하여 Zip파일을 다운 받게되면, 해당 API를 제공하는 목적 그리고, 활용하는 방법들에 대한 자세한 설명이 있는 문서가 있으며, 이러한 문서를 보통 API 문서라고 표현합니다. API 문서는 어떤 정보를 전달받기 위해서 어떤 방식으로 요청해야하는지에 대한 내용, 그리고 응답 결과는 어떻게 이루어지는지에 대한 자세한 내용들이 기술되어 있습니다. (쉽게 생각해서 메뉴얼 문서라고 생각하시면됩니다!)
이번 시간은 API라는 용어에 대한 설명을 하기 위한 포스팅이다보니, 자세한 규격까지 살펴보지 않겠습니다.
기상청의 예제를 통해 살펴본것처럼 API는 어떤 응용프로그램이 자신이 가지고 있는 정보를 제공하기 위해 어떤 방식으로 통신할것인지에 대한 규격을 만들게되고, 이러한 규격을 API라고 표현합니다!
API는 정보를 가지고 있는 주체에서 만들다보니, API를 사용하기 위한 개발자 입장에서는 어떠한 방식으로 요청해야 정상적인 데이터를 받을 수 있을지 알 수 없습니다. 그렇기 때문에 보통 API를 제공하는 입장에서 어떤 방식으로 요청해야 하는지에 대한 문서를 만들게되고, 이러한 문서를 API 규격서라고 표현하는것이죠!
개발자들이 흔히 업체쪽에서 API를 제공하지 않는다는 의미는, 업체쪽에서 가지고 있는 정보를 제공하지 않는 다는 의미가 되는것이고, API를 제공 받기 위해서는 해당 업체쪽에서 규격을 만들어서 알려주어야 한다는 의미가 됩니다.
API를 제공하는 이유?
그렇다면 API를 제공하는 이유는 무엇일까요? 정보를 가지고 있는 입장에서, 남들에게 정보를 제공하기 위해서 별도의 규격을 만들어야하고, 그 규격에 대한 설명 문서도 만들어야합니다. 너무 불편하죠.. 하지만 왜 대형 플랫폼들은 수 많은 오픈 API를 제공하고 있을까요?
예를들어 페이스북이나, 네이버, 카카오톡과 같은 대형 플랫폼에서는 대부분 간편 로그인 API 정보를 제공하고 있습니다. 간편 로그인 API의 목적은 사용자가 여러 사이트를 하나식 가입하다보면, 너무 많은 사이트에 가입해야하는 단점이 있으니, 누구나 사용하고 있는 대형 플랫폼의 가입정보를 공유함으로써 간편하게 회원가입을 할 수 있도록 설계된 API입니다.
만약 여러분이 카카오톡 간편 로그인 기능을 통해 여러 사이트를 가입했다고 가정해보겠습니다. 그리고 카카오톡이 그런일은 없겠지만.. 너무 쓰기 싫어지고, 탈퇴하고 싶은 마음이 생겼다 하더라도 카카오톡을 탈퇴하는 순간 카카오톡을 통해 가입했던 수 많은 사이트 또한 포기해야되는 상황이 발생하게됩니다.
즉, 간편 로그인 기능을 제공함으로써 플랫폼 이탈율을 현저히 줄일 수 있기 때문에 대형 플랫폼들은 간편 로그인 기능을 제공하고 있습니다. 공유 경제 시대가 흐르면서 정보를 독점하는것보다 공유함으로써 더 많은 이익을 가져갈 수 있는 생태계가 만들어지고 있으며, 이러한 과정에서 다양한 오픈 API와, 비공개 API들이 존재하는것이죠!
결론
API는 응용 프로그램에서 사용할 수 있도록, 운영 체제 혹은 프로그래밍 언어게 제공하는 인터페이스(규격)을 의미합니다. 스팀잇 에서도 아래의 그림과 같이 스팀잇내의 정보 제공을 위해 API를 제공하고 있습니다. (스팀잇 API)
오늘은 이렇게 IT 용어인 API가 무엇인지에 대해 살펴봤습니다. 이제 API가 어떤 의미이고, 인터페이스가 무슨 의미인지 잘 아시겠나요? 다음 포스팅에서도 재미있는 IT 용어에 대한 포스팅을 해보도록 하겠습니다!
이상 긴 글 읽어주셔서 감사합니다!
네이버 날씨도 아마 기상청 api 를 통해서 가져오는것으로 생각되는데요.
(네이버가 날씨를 관측할수 없으니...)
기상청 날씨는 맞고, 네이버 날씨는 틀리다 라는 말은 잘못된 표현이겠네요 ^^;;
맞아요~ 대부분의 날씨 정보는 기상청 API를 사용해서 가져오고 있습니다~ 다만 별도의 자신들의 서버를 구축해서 날씨 정보를 다시 저장하는 과정에서 데이터 동기화가 가끔 안되어 있더라구요~:)
전에 무료로 주식자동매매 프로그램을 다운받아서 사용해봤는데요,
키움증권API를 이용해야 해서 다운받아 사용했던 적이 있습니다.
그때 살짝 '이런 거구나' 하고 느껴봤던 것 같아요.^^
오랜만에 뵙는것 같아서 더 반가워요~:)
키움 증권 API를 사용해보셨다면, API 개념은 충분히 잘 아실것 같아요~ 하하~:)
좋은 정보 감사합니다.
감사합니다 ^^;
일상생활이나 회사내에서 두리뭉실하게 인식되어 사용하고 있는 용어들을 이렇게 풀어주시니 보다 정확하게 인지됩니다. 좋은 포스팅 감사합니다!!
IT관련 회사가 아니더라도 두 단어는 자주 언급되는것 같습니다! 방문해주셔서 제가 더 감사합니다 ^^;
좋은글 잘봤습니다!
보팅하고 가요~!
방문해주셔서 감사합니다~:)
짱짱맨 호출에 출동했습니다!!
늘 감사합니다~:)
어려운 개념을 쉽게 설명해 주셨네요.
쉽게 설명해보고 싶었는데, 쉬웠다니~ 정말 다행입니다~ 방문해주셔서 감사합니다~:)
좋은 글 보고갑니다~ 요새 심심 & 필요에 의해서 책 정리 앱을 만들려고 하는데 이때 책 정보 가져오기 위해 인터넷 서점 api로 개발하고 있거든요 스팀잇 api도 다음에 구경해봐야겠네요~
Api에 대한 확실한 개념정리가 되네요!
좋은글 감사합니다~!