brunch

You can make anything
by writing

C.S.Lewis

by 리플러스 Jan 07. 2023

끌어올 것인가, 입력할 것인가? 정보 API

서비스 설계에서 가장 중요한 핵심정보들을 어떻게 찾고, 가져와야할까?


1.

IT 서비스를 만드는 입장에서, 자주하게되는 질문이 있다. '그 정보는 어디서 가져와야하지?' 라는 질문이다. 사실 서비스를 만들때는 '어떤 플랫폼'을 사용할거냐, '어떤 기술'을 사용할거냐 같은 것들을 자주 이야기하게된다. 하지만 그런 규격 같은것들을 뒤로 미뤄두고, 본질적인 지점만 잘라내면 - 결국 정보가 남는다. 내게 필요한 그 정보를 사람이 입력할 수 있는지, 아니면 어디에선가 사거나, 구해올 수 있는지 같은 내용 말이다.


맨 처음 찾아보게되는 것은 역시 외부 API다. 외부에서 전문적으로 그 정보들을 다루는 회사들이 있고, 그 회사와 계약을 해서 정보를 뽑아오게된다. 간단한 로그인 API에서부터, 금융정보나 본인인증 같은 것들도 대부분이 외부 API로 이뤄져있다. 그래서 서비스를 만들때 꼭 알아둬야하는 것들 중 하나가 바로 API 종류와 그 사용법이다.


2.

대부분의 API는 계약을 통해 실제 사용이 가능한 방식이다. 다만 그 계약 이전에 '어떤 정보들'을 제공하고, 또 어떻게 개발해야하는지를 이야기해주는 경우가 많다. 그 역할을 하는 것이 바로 개발자 API 문서다. 그런 문서들을 들어가보면 어떤 정보들을 입력하고, 또 어떻게 정보를 받아볼 수 있는지를 확인할 수 있다.


예: 카카오 로그인 API

https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api


위의 링크는 카카오 로그인에 대한 API 개발 문서다. 다만 개발적인 지식이 없는 사람에게는 이 지점이 '대체 뭘 어쩌라는 건지' 알 수가 없는 상태인 경우가 많을 것이다. 그냥 이 내용만 던져주면 개발자가 알아서 해준다는 의미일까? 사실 그렇지는 않다. API 문서에서 제공하는 여러 기능들 중에 '어떤 기능'을 사용할지, 또 그것을 서비스 진행방식중 어떤지점에서 사용할지 등을 확인해줘야한다. (API는 만능도구가 아니다)


대부분의 API는 구조가 대부분 비슷하다. 그래서 다음과 같은 단계를 거치게된다.


1) 기능을 사용하기 위해 '계약을 한 사람인지' 증명을 해야하고

2) 계약 과정에서 받은 인증키를 입력해줘야한다.

3) 그 이후 기능을 얻기위한 필수 입력정보를 넣어서

4) 결과값이 나올 수 있게 신청서를 써야한다.

5) 이후 결과값이 잘 나왔는지, 실패했는지 등을 확인한다.


카카오 로그인을 예로 들자면


1) 기능을 사용하기 위해 '카카오 개발자 계정을 가진 사람인지' 증명을 해야하고

2) 개발자 계정으로 받은 인증키를 입력해줘야한다.

3) 그 이후 기능을 얻기위한 사용자의 카카오 ID, PW 정보를 넣어서

4) 카카오 API 쪽에 '이 정보로 로그인을 해달라'고 신청서를 써야한다.

5) 이후 로그인이 잘 되었는지, 실패했는지 등을 확인한다.


다른 서비스의 경우도 보여주는 정보와, 입력하는 정보가 조금씩 다를 뿐. 대부분 비슷하니 너무 어렵게 생각할 필요는 없다.



3.

API는 종류가 매우 방대하다. 다만 실제로 서비스를 제작할 때 자주 사용되는 것들은 다음과 같은 것들이다.


- 휴대폰번호 기반 본인확인 API

https://www.niceid.co.kr/prod_mobile.nc

휴대폰 번호인증은 현재 휴대폰의 번호 소유자가 실제 본인이 맞는지를 확인하는 용도로 사용한다. 또한 휴대폰 번호를 입력시켜, 회원가입 여부를 체크하는 용도로도 쓸 수 있다. 다만 개별 건마다 여러 정보 입력이 필요해 사용성이 떨어지고, 가격대도 비싸다. 단순히 휴대폰 번호가 살아있는지 아닌지를 체크하는 용도로 써야한다면 단순 SMS 인증을 사용하는 것이 낫다.



- SMS 전송 API

https://smartsms.aligo.in/index.html

SMS 전송은 흔히 [WEB문자] 라는 타이틀을 앞에 붙이고 전달되는, 흔한 문자전송 서비스다. 주로 서비스 예약 완료, 공지사항 전달 등의 목적으로 사용된다. 다만 번호인증의 개념으로 사용할 경우는, 단순히 사용자의 휴대폰 번호에 특정 문자를 보내서, 그 문자번호를 입력시키는 방식으로 '휴대폰 번호가 실제로 있는 번호인지' 확인하는 용도로 사용하기도 한다. 일반적으로 SMS 1건당 가격이 정해져있어서, 충전식으로 사용하는 경우가 많다.  



- 주소 검색 API

https://postcode.map.daum.net/guide

주소검색 API는 한국 기준 주소값을 찾거나, 우편번호를 찾는 용도로 사용되는 서비스다. 일반적으로 다음 우편번호 서비스가 가장 자주 사용되며, 주소 단위를 시, 구, 동, 길 등 세부단위를 잘라내거나 하는 등의  커스터마이징이 가능하다. 다만 개발자 기준으로 볼 때, UI 디자인을 변형하기에 편리한 구조는 아니다. 그러니 별도 화면을 디자인하지 않고 정해진 화면을 그대로 쓰는게 제일 빠른 방식이다. (커스텀 가능하나 과정이 복잡함)



- 지도 API

https://apis.map.kakao.com/web/guide/

https://www.ncloud.com/product/applicationService/maps

지도 API는 우리가 잘 아는 네이버지도와 카카오 지도의 일부기능을 사용하는 서비스다. 현재위치를 나타내거나, 특정 주소값을 보여주거나, 도로뷰 기능을 사용하거나, 길찾기 기능을 사용하는 등, 커스터마이징 방식이 다양하다. 때로는 지도 정보 위에 별도의 장소 정보를 불러다가 PIN 을 표기해 보여줄 수도 있고, 특정 지점간의 예상 이동거리도 확인할 수 있다. 카카오 지도가 가장 쉽게 사용할 수 있고, 네이버 지도의 경우 신규 버전으로 업데이트되면서 사용법이 복잡해진 상태다. (다만 정확도나 성능 기준에서는 네이버 지도가 훨씬 뛰어나다.) 구글맵도 한국에서 사용은 가능하지만, 해외기업인 관계로 한국지역 업데이트 수준이 매우 처참하다.



- PG사 결제 API

https://tossdev.github.io/api.html

PG사 결제 API는 말 그대로 결제를 할 때 사용하는 서비스다. 간편결제 기준 카드결제가 가장 많이 사용되며, 때때로 무통장입금이나 계좌이체 같은 기능들도 사용된다. 각각의 결제방식에 따라 결제 수수료가 다르기때문에, 어떤  PG사와 계약을 해야할지를 잘 판단해야한다. 또한 PG사와 계약을 할 경우, 매달 발생한 결제건을 확인하거나, 일부 금액을 취소하거나, 환불처리를 하는 등의 기능을 제공하는 '관리자 페이지'를 별도로 제공한다.



서비스를 만들때 사용하는 결제방식에는 크게 두가지가 있으니 꼭 알아두자.


1) 일반 간편결제 - 즉시 결제를 처리하는 방식. 일반 B2C 서비스에서 유저들에게 자주 사용한다. 카드정보를 따로 저장할 필요없으며, 개인 스마트폰에 저장된 금융앱과 연동되어 빠른결제를 진행시키는 경우가 많다.


2) 주기적인 예약결제 - 주로 구독형 결제 용도로 자주 사용된다. 카드정보를 일부 저장하여 특정 주기마다 결제를 진행시킨다. 일반 사용자에게 이런 형태를 사용하는 경우도 있고, O2O 중개 플랫폼 등에서 서비스 제공자 (파트너 회원) 들에게 주로 이 형식을 사용한다.



4.

위에서 알아본 API들이 가장 흔하게 사용되는 API들이. 이외에 좀더 깊게 들어가면, 무료로 사용할 수 있는 공공 데이터 API 등도 많은 편이다. 다만 공공 API의 경우 데이터가 지속적으로 제공될지 아닐지 알 수 없는 경우가 많고, 데이터가 한정적이라 실제 서비스에 사용할 수 있는 것들이 그리 많지 않다. 그래서 통계를 작성하거나, 리포트를 내는 정도로는 사용할 수 있겠지만, 제대로된 서비스를 만들려면 전문화된 기업형 API를 사용하는 것이 더 편리하다.


https://www.data.go.kr/



5.

전문적인 기업 API들은 워낙 형태나 분야가 다양해서 이곳에 모두 정리하진 않겠다. 단지 서비스 조사를 할 때, 국내와 해외 서비스를 기준으로 - 다른 업체들이 '어떤 방식으로 정보를 끌어오고있는지, 사용중인 기업 API가 무엇인지' 등을 확인하면 도움이 되는 경우가 있다. 다만 대부분의 기업들은 자신이 무슨 정보를 바탕으로 서비스를 제공하는지 대놓고 자랑하는 경우는 많지않다. 그래서 해당 기업의 뉴스사이트나, 개발자 블로그, 혹은 서비스 약관까지 확인해가며 어떤 API를 사용중인지 역추적을 해야하는게 대부분이다.


실제 서비스를 만들려고하면 '어떤 기술'을 가진 개발자가 필요한지. 또 어떤 플랫폼으로 만들 것인지는 그리 중요하지 않다. 오히려 '어떤 정보'를 외부에서 끌어올 수 있는지 조사하는 과정이 중요한 경우가 많은 편이다. 많은 정보를 사용자에게서 입력받는 것은 그만큼 서비스의 생존율을 떨어뜨리니. 가능하면 더 많은 정보를 외부에서 끌어올 수 있는지를 확인해야한다.


또한 매년 변화하는 서비스 환경이나, 국가정책 변화 등으로 - 공공기관에서 제공하게되는 API나, 스크래핑 전문 기업 등도 생겨나게된다. 그러니 서비스를 만들기 위해 이런 지점들을 꾸준히 파악하고, 체크해두는것이 중요하다.


-


오늘은 여기까지!

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari