1. API란?
스마트폰으로 카카오톡에 로그인하려는 상황을 떠올려봅시다.
스마트폰이 보낸 로그인 요청은 카카오 본사의 서버 컴퓨터 중 하나가 받은 다음, 알맞은 응답을 다시 스마트폰에게 돌려주게 됩니다. (로그인 처리시키기, "로그인 성공"메시지 띄우기 등)
이게 바로 "클라이언트(요청하는 컴퓨터=내 스마트폰) - 서버 (응답하는 컴퓨터=카카오 서버)"구조인데요.
클라이언트는 비단 로그인뿐 아니라, 친구 추가, 메시지 발송, 메시지 삭제 등 수많은 요청들을 서버에 보내게 될 텐데, 각 요청들을 일일이 대응하는 것은 비효율적일 것입니다.
각각의 요청들을 담당하는 서버에게 요청이 잘 전달 및 처리될 수 있도록 교통정리를 해주는 "체계"가 바로 API입니다.
출처: http://sahilsk.github.io/articles/so-youre-writing-api-client
즉, "어떠한 방식으로 정보를 요청해야 하는지, 그리고 그러한 요청을 보냈을 때 어떠한 형식으로 무슨 데이터를 전달받을 수 있는지"에 대해 정리한 일종의 규격이라고 볼 수 있습니다.
(위의 친구 추가, 메시지 발송 등 요청 가능한 기능 하나하나가 모두 API가 됩니다.)
이제 API의 풀네임을 풀어서 이해해봅시다.
"Application Programming Interface (애플리케이션 프로그래밍 인터페이스)"
즉, "애플리케이션(스마트폰, 카카오톡 서버 등 서로 다른 프로그램)이 인터페이싱하는(요청과 응답을 주고받는) 체계"라고 이해하시면 될 것 같습니다.
2. API는 어떻게 생겼나요?
공공데이터포털에 등록된 데이터의 API 유형(REST), 데이터포맷(JSON+XML)
1) API 구현 방법: API를 작성하는 다양한 방법들이 있으나, 가장 트렌디한 방법이 바로 REST API입니다. REST API에 대해서는 아래에서 다시 다루도록 하겠습니다.
2) API 결과(데이터) 제공 형식: 주고 받는 데이터 형식은 주로 "JSON", "XML"입니다. 요청의 결과로 받는 데이터의 구조에도 통일감을 줄 수 있도록 공통의 포맷을 정한 것인데요. 최근은 JSON이 많이 쓰이고 있습니다.
3) API 활용 방법: API 문서를 보시면 됩니다. 현재 수많은 기업들이 자사의 서비스와 데이터를 API 형태로 제공하고 있고, 각 API의 활용 방법을 잘 정리해놓은 API 문서를 공개하고 있습니다. (=향후 설명할 "Open API")
API 문서란, 각 기업이 만든 API의 사용법이 담긴 일종의 API 매뉴얼로, 어떤 기능을 불러올 수 있는지, 각 기능에 필요한 정보를 받아오기 위해서는 어떠한 방식으로 요청해야 하는지 등이 상세히 기술되어 있습니다.
(예시) 카카오 API 문서에서 기술된 "카카오 로그인" 관련 기능에 대한 설명과 API 구현 여부 (출처: https://developers.kakao.com/docs/latest/ko/kakaologin/common)
아래 예시는, 카카오 API문서 링크입니다. 참고해보세요!
3. API가 왜 필요한가요?
1) 개발 및 관리의 효율성
API를 사용하면, 실제로 서비스가 어떻게 구현되었는지는 몰라도 그 서비스를 그대로 가져다 사용할 수 있습니다.
즉, 매번 새로운 개발을 할 필요 없이 이미 만들어 놓은 기능을 그대로 "블록"처럼 가져다 쓸 수 있게 됩니다. 덕분에 개발 시간이 줄어들고 개발에 필요한 비용도 아낄 수 있습니다. 또한 API 문서만 보면 누구나 쉽게 이해할 수 있어, 협업에 용이하고 유지보수도 수월합니다.
요즘 기업에서 Hot한 IT 아키텍처인"마이크로 서비스 아키텍처(MSA) 또한 API를 기반으로 합니다. 애플리케이션 내 다양한 기능들을 작게 나눠 독립적으로 구성한 다음, 이들을 API 형태로 연결하여 상호 통신하게 하는 구조입니다.
2) 유연성, 확장성
서비스의 신규 개발과 웹/앱 등 채널 확장이 쉽습니다. 특히 타사 서비스와의 연계에 있어 큰 강점을 자랑합니다. 예를 들어 이번에 자사의 애플리케이션에 새롭게 추가할 기능 중 하나가, "지도" 위에 맛집을 표시하는 것이라면, "지도"를 직접 개발하는 것보다 구글이나 네이버가 제공하는 지도 API를 불러오면 참 편하겠죠?
이렇듯, API는 고객과 현업의 요구사항을 반영한 새로운 서비스를 발 빠르게 출시할 수 있도록 돕는 든든한 기술입니다.
4. Open API는 뭔가요?
Open API는 말 그대로 "누구나 쓸 수 있도록 공개된(Open) API"를 뜻합니다.
대표적으로, 정부는 공공데이터포털(www.data.go.kr)을 통해 국가기관이 보유한 수많은 데이터를 API 형태로 무료 공개하고 있습니다. 지역별 코로나 발생현황, 서울시 따릉이 이용현황, 미세먼지 측정 정보 등 다양한 데이터를 전 국민이 자유롭게 가져다가 데이터 분석을 수행하거나 유익한 서비스를 개발하는 데 쓸 수 있도록 적극적으로 장려하는 것이죠.
국가의 다양한 데이터를 모아 놓은 공공데이터포털(www.data.go.kr)에서도 API 형태로 데이터를 무료 제공하고 있습니다.
뿐만 아니라, 카카오, 네이버, Google 등 수많은 민간 기업들 또한 자사가 제공하는 다양한 기능들(지도 앱, 포털 검색하기, 로그인 기능 등)을 일반 사람들도 무료로 사용할 수 있도록 API를 오픈해두었습니다.
API로 구현하는 "카카오톡으로 로그인" 기능 예시 (출처: https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api)
이렇게 Open API가 유행하는 이유는, 아무래도 플랫폼의 영향력이 곧 돈이 되기 때문입니다.
아무래도 자사의 서비스가 타사의 다양한 서비스에서도 활용된다면, 사용자 수가 증가하는 등 서비스 자체의 가치도 높아질 것입니다.
또한 API를 통해 새로운 수익원을 창출하는 것도 기업들이 Open API를 도입하는 주요 동인 중 하나입니다. API의 호출 수에 제한을 두고, 무료 제공량 이상은 돈을 받는다거나(단계적 유료화), 자사가 구축한 결제 시스템을 API 형태로 타사 서비스에 연계할 수 있도록 하여 수수료 수익을 창출하는 등이 있겠습니다.
5. 마지막으로, REST API란?
위에서 말씀드린 바와 같이, API를 구현하는 방식 중 가장 대표적인 방식이 바로 REST (Representational State Transfer) 방식입니다. "REST 한 방식", "REST 원칙을 따르는 API"라 하여, RESTful API 혹은 REST API로 불립니다.
도무지 이름만으로는 무슨 의미인 지 이해할 수가 없죠? 일단 "Represent"가 "표현하다"는 뜻인 점을 염두에 두면, "요청 자체만으로 내가 뭘 원하는지 알게 하자 (= 요청 자체로 나를 "표현"하자!)"는 사상으로 등장했다고 보면 될 것 같습니다. 클라이언트와 서버는 고유한 url(링크)을 통해 요청과 응답을 주고받게 되는데, 이 url만 보면 어떤 요청인 지 바로 추론할 수 있습니다.
단, 자세한 개념을 설명하려면 너무 길어질 것 같아, 오늘은 간단히 이 방식이 웹의 장점을 가장 잘 살릴 수 있는 가장 간결하고 효율적인 구현 방식이라는 점만 짚고 넘어가겠습니다.
해당 글은 https://enjoyinjoanne.tistory.com/56 에서 발췌하였습니다.
'DevOps | Server' 카테고리의 다른 글
[SSH Known-Host] - Failed to load HostKeys from /root/.ssh/known_hosts. You will need to explicitly load HostKeys 오류 발생시 (0) | 2022.04.04 |
---|---|
SSH(Secure Shell) (0) | 2021.09.30 |