brunch

You can make anything
by writing

C.S.Lewis

by 고코더 Jan 10. 2022

단 한 사람을 위해 움직입니다. API

API(Application Programming Interface)란?

* 책으로 출간되었습니다.

해당 브런치에 남김 글은 초고입니다. 완성된 작품은 해당 "오늘부터 IT를 시작합니다."로 출간하였습니다!!

구매하여서 완성된 글을 종이책의 정감과 편안함으로 읽어보시길 바랍니다^^ 

감사합니다.!!

http://www.yes24.com/Product/Goods/111417594


한 사람을 위한


카미시라타키역


단 한 명을 위한 일본 기차역 '카미시라타키역(Kami-Shirataki)'


일본 홋카이도 몬베츠군 에가루초에는 조촐하고 작은 간이역이 있습니다. 이 기차역을 사용하는 사람은 단 한 명의 학생입니다. 이 여고생은 학교를 등하교를 위해 매일 아침, 저녁 기차를 탑니다. 철도회사는 단 한 사람을 위해 열차를 운영하였고, 그리고 이 학생이 대학에 진학하면서 해당 역도 폐쇄했다고 합니다. 이 이야기의 진위 여부는 알 수 없습니다. 미화된 이야기라는 말도 있지만, 만약 필요한 한 사람을 위해 운행되는 기차가 있다면 얼마나 든든할까요? 그리고 얼마나 편리할까요? 


코딩이 마음처럼 되지 않을 때 자전거를 꺼내 들고 자주 가던 경기도의 한 동네가 있습니다. 항상 그곳에 가면 근처 ATM 기기에서 현금을 뽑고 할머니가 운영하는 구멍가게에 들러서 1,500원을 현금으로 내주고, 시원한 청량음료를 사 먹고는 했습니다. 그런데 ATM 부스가 있던 그 자리는 원래 직원 6명이 일하던 은행이 있었고, 인구가 줄면서 지점을 폐쇄하고 그 자리에 현금인출기를 설치한 사실을 할머니의 인생 이야기를 통해 알게 되었습니다. 비록 은행은 없어졌지만, 여전히 그 자리에는 누군가 한 사람을 위해 ATM기는 일하고 있습니다. 



API는 한 사람을 위해

ATM

현금인출기는 은행을 대신하여 돈을 입금하고 출근할 수 있는 기능을 합니다. 은행처럼 많은 업무를 처리할 수는 없지만 꼭 필요한 일들은 처리합니다. 이는 API(Application Programming Interface)가 일하는 방식과 매우 유사합니다. API는 컴퓨터와 컴퓨터 프로그램을 연결하는 '보이지 않는 끈'을 말합니다. 은행과 ATM 관계는 보이지 않지만 보이지 않게 연결되어 있습니다. 만약 현금 인출을 은행에서 한다면 ATM에서는 그만큼 잔고가 빠져나간 잔액이 보입니다. 반대로 해도 마찬가지입니다. 이렇게 컴퓨터와 컴퓨터가 연결되어 사용자가 원하는 일을 해주는 상호 작을 하기 위한 '인터페이스' 사양을 말합니다. 조금 더 쉽게 설명해볼까요?


만약 ATM기가 없다면? API라는 프로그램 방식이 개발되지 않았다면 어떤 일이 일어날까요? 매번 은행에 가서 창구 직원에게 통장을 보여주고 돈을 입출금 해야 합니다. 그렇게 되면 평일 낮 이외에는 현금을 찾기 어려울 테고 저도 시원한 음료를 먹기 위해서는 미리미리 현금을 챙기고 자전거를 탔어야 할 것입니다. 다행히 API 형식은 상용화되었고, 굳이 직원이 통하지 않아도 은행 서버와 연결된 ATM기를 통해 돈을 찾을 수 있게 된 것입니다. 이렇게 API는 당신 한 사람을 만나기 위해 운영되는 기차처럼 사용자를 만나러 가는 보이지 않는 프로그램 '끈'이 있기 때문에 현대사회에는 비대면으로 많은 일들을 컴퓨터를 통해 할 수 있게 되었습니다. 



API와 라이브러리의 차이 


그렇다면? API와 라이브러리는 무엇이 다를까요?


이 두 단어의 개념을 혼동하는 경우가 많습니다. 실제로 현업에서 종사하는 개발자들도 두 단어를 혼용하여 쓰는 경우도 있습니다. 한 줄로 정리해보자면 "API는 추상적인 개념이고, 라이브러리는 API를 이용해 개발된 구현체라고 볼 수 있습니다." 다시 정확히 표현하면 은행에서 ATM기를 만드는 이유는 무엇일까요? 은행 직원 대신 입출금 업무를 처리하기 위해서입니다. 만약 ATM를 만들고 은행 서버와 통신하지 않는다면, 그저 비싼 기계 덩어리 일뿐이지만, API라는 추상적인 개념이 있기 때문에 ATM기는 은행을 대신해서 일을 처리하는 것입니다. 그렇기 때문에 API는 무언가 실제로 만들어져 있는 형상이라기보다는 서비스입니다.



API는 그래서 어떻게 움직일까?


서버와 데이터베이스를 움직입니다.


데이터베이스는 은행 금고처럼 매우 폐쇄적이어야 합니다. 아무나 출입하면 안 되고, 오직 권한이 위임된 관리자만이 들어갈 수 있어야 합니다. 그렇지 않다면 도둑이 들어 모두 훔쳐가게 됩니다. API는 서버와 데이터베이스에 접근할 수 있게 도와주는 역할을 합니다. 내가 직접 가지 않아도 API라는 직원은 필요한 정보를 데이터베이스에 가서 꺼내옵니다. 이때 API는 서버를 익숙하게 다녀오므로 보안을 철저하게 지켜줍니다. 그렇기 때문에 서버와 데이터베이스를 아주 안전하고 빠르게, 안전하게 서버와 데이터베이스를 움직이게 합니다.


통신을 담당합니다.


스마트폰에서 엄지 손가락 한 번이면 지구 반대편에 살고 있는 친구에게 메시지를 0.1초 만에 보낼 수 있는 이유도 바로 API 덕분입니다. API는 데이터를 안전하게 옮겨줍니다. 만약 API 없이 통신을 해야 한다면 기나긴 케이블을 지구 반대편까지 연결해야 하지만 API가 대신 내 스마트폰에서 보낸 글자를 서버에 들렸다. 다시 친구의 스마트폰으로 대신 이동해주기 때문에 편리하게 채팅일 할 수 있게 만들어줍니다. 그렇게 API는 원활한 통신을 할 수 있도록 만들어 줍니다.


표준화를 담당합니다. 


API는 개발자에게 시간과 비용을 절약할 수 있게 도와줍니다. 예를 들면 아이폰, 안드로이드 그리고 PC를 사용하더라도 개발자는 하나의 서비스만 생성하면 됩니다. 그리고 그 구현된 API를 각 제품과 운영체제가 알아서 활용할 수 있게 됩니다. 그렇기 때문에 매번 다른 환경에 시스템에 알맞은 인터페이스를 만들지 않게 되므로 간소화된 개발을 진행할 수 있게 됩니다. API라는 개념이 없었다면 개발자들의 야근은 더 길어졌을 것입니다. 



3가지 API 정책


API 정책은 대표적으로 세 가지 접근 방식을 취합니다.  


프라이빗(Private) API

보통 기업 내부에서만 사용할 수 있도록 만드는 형식입니다. 내부에서만 사용하기 때문에 외부에서는 접근할 수 없도록 보안 처리를 합니다. 대표적인 예로 기업 내부 시스템인 '인트라넷'에서 사용할 수 있습니다. 


파트너(Partner) API

기업이 데이터 공유를 동의한 특정 비즈니스 파트너에게 제공하는 방식입니다. 기업과 기업이 서비스를 융합하여 새롭게 제품을 출시하는 등 기업의 이익을 위해 주고받는 통신 방식입니다.


퍼블릭(Public) API

모두에게 제공하는 API입니다. 이를 통해 개인 개발자는 물론 기업에서 애플리케이션을 개발하기도 합니다. 대표적으로 나라에서 제공하는 공공 API가 있으며, 이를 통해 버스 승하차 알람을 만들어 어플을 만들기도 합니다. 보통은 개인정보가 담겨 있지 않는 공공 정보에 많이 사용됩니다.



당신을 위해 움직이는 API 

수많은 API가 오늘도 일상에 스며들었습니다. 일어나자마자 확인한 오늘의 날씨는 기상청에서 제공하는 API 정보들입니다. 그리고 지하철을 탈 때 교통카드에 나타나는 잔액 역시 API가 나를 위해 움직였습니다. 그리고 식사를 하기 위해 들어간 식당의 키오스크 역시 종업원을 대신한 API가 나를 맞이하였고 맛있는 음식을 쉽게 주문할 수 있게 도와주었습니다. 단 한 사람을 위해 운행되었던 열차처럼 API는 오늘도 당신을 위해 움직이고 있습니다. 



"단 한 사람을 위한 API"



매거진의 이전글 맛있는 커리를 만듭니다. SQL
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari