API

Application Programming Interface.

— 소프트웨어 어플리케이션 간의 상호작용 및 데이터 교환을 제어하고 규정하는 모든 매커니즘의 총칭

기획자나 클라이언트 개발자들로부터 '그거 서버에서 API 하나 쏙 던져주면 끝나는 거 아니에요?'라는 만능 도라에몽 주머니로 오해받는 마법의 단어. 하지만 백엔드 심장부에서는 레거시 데이터 스파게티가 꼬여 있어, API 하나 추가하고 마이그레이션할 때마다 심장이 쫄깃해지는 실무진의 최전선(...)

1. 개요

애플리케이션 프로그래밍 인터페이스(Application Programming Interface)의 약자로, 소프트웨어 어플리케이션들이 서로 데이터를 주고받고 소통할 수 있도록 정해둔 통신 규약이자 약속을 뜻한다. 서로 개발 언어가 다르거나 완전히 다른 운영체제(OS) 위에서 굴러가고 있더라도, 사전에 약속된 API 양식에만 딱 맞춰 데이터를 던지면 마법처럼 완벽한 상호 작용을 구현해 주는 현대 IT 소프트웨어 대협업 시대의 진정한 기둥이자 만국 공통 계약서이다.

2. 인터페이스와 구현의 철저한 분리

API의 핵심 사상은 '동작하는 내부 논리(구현)는 몰라도, 정해진 입출력 규칙(인터페이스)만 알면 쓸 수 있게 만든다'에 있다. 예를 들어 주니어 개발자가 지도 API를 사용해 웹 화면에 지도를 띄울 때, 구글(구글) 전산실 안에서 지도 위성 데이터를 어떻게 렌더링하고 압축하는지의 복잡한 3D 기술 수학 공식은 1도 알 필요가 없다. 그저 API 문서에 적혀 있는 getMap(latitude, longitude) 같은 규격에 맞춰 위도와 경도만 정확히 매개변수로 던지면 그 뒤는 알아서 처리되기 때문이다. 이러한 철저한 캡슐화와 격리는 개발 생산성을 비약적으로 폭발시켰다.

3. 역사적 규격의 세대교체: SOAP에서 REST, 그리고 모던 API까지

초기 기업간 엔터프라이즈 통신의 표준은 무겁고 복잡한 XML 형식 기반의 SOAP(Simple Object Access Protocol) 프로토콜이 틀어쥐고 있었다. 하지만 SOAP은 머리가 아파질 정도로 장황한 봉투(Envelope) 마크업 규칙을 강제하여 주니어들을 빠르게 고사시켰다.(...) 결국 가볍고 직관적인 HTTP 프로토콜의 특성을 200% 활용하는 REST APIJSON 포맷과 손을 잡고 등장하면서 순식간에 통신 생태계의 절대 왕권을 차지했다. 최근에는 단일 엔드포인트로 필요한 데이터만 선언해서 가져오는 GraphQL이나, MSA 내부의 초고속 이진 직렬화 통신을 담당하는 gRPC로 끊임없이 진화하며 세대를 넓혀가고 있다.

4. 관련 밈 및 드립

4.1. 그거 API 없나요? 만능주의

비기술직 기획자나 클라이언트 유저가 터무니없거나 상상하기 힘든 기상천외한 우주적 기능을 기획서에 툭 던져놓으며 '이거 구글이나 카카오 API 가져다 쓰면 하루 만에 뚝딱 다 되는 거 아니에요?'라고 만능 해결책처럼 외쳐 대는 고질적인 현상이다. 실제로 개발자들은 'API는 은하계를 정복해 주는 도라에몽 주머니가 아니며, 가져다 쓰더라도 우리 데이터 스키마와 융합하고 다듬는 뼈아픈 엔지니어링 작업이 수반된다'며 뒷목을 잡곤 한다.

5. 여담

  • 식당의 웨이터 비유: API를 설명할 때 전 세계적으로 가장 보편화된 비유는 식당이다. 손님(클라이언트)이 테이블에 앉아 메뉴판(API 문서)을 보고 웨이터(API)에게 주문을 전달하면, 웨이터가 주방(서버)에 전달하고 완성된 음식(응답 데이터)을 손님에게 가져다 준다. 손님은 주방 안의 요리사가 요리하는 비밀 레시피나 화력 조절 로직을 전혀 신경 쓸 필요가 없다.
  • 자바 API 저작권 전쟁: 오라클구글을 상대로 자바(Java) API의 선언부를 무단 도용해 안드로이드 운영체제를 만들었다며 무려 수조 원대의 10년짜리 소송을 벌인 대서사시가 있다. 연방법원은 최종적으로 API 선언부의 재사용 및 구현은 '공정 이용(Fair Use)'에 해당한다고 구글의 손을 들어주며, API 자체에 특허 자물쇠가 걸려 현대 소프트웨어 호환 생태계 전체가 멸망하는 대참사를 극적으로 막아주었다.1
  • SDK와 API의 묘한 관계: 주니어들이 입문 시 가장 혼동하는 용어가 SDK(Software Development Kit)와 API이다. 쉽게 말해 SDK는 해당 기술을 쓰기 위해 설치하는 '개발 종합 도구 키트(컴파일러, 디버거, 라이브러리 일체)'이며, 그 도구 키트 안에서 제공되는 구체적인 소통 통로와 함수들의 규격들이 바로 API이다. 즉 SDK가 더 거대하게 감싸고 있는 형태이다.

6. 관련 문서

각주

  1. 실제로 만약 법원이 오라클의 저작권 독점을 전적으로 인정했다면, 전 세계 수많은 호환 라이브러리 및 대체 런타임들이 전부 불법 복제물로 전락해 현대 오픈소스 IT 생태계의 성장판이 완전히 닫혔을 것이라며 전 세계 전산학자들이 안도의 한숨을 쉬었다.