/ DEVOPS

Web API

DevOps 관련 포스팅

이 포스팅은 ‘A Brief, Opinionated History of the API’ (by. Joshua Bloch)스피치와 다수의 영문 포스팅을 한글로 해석한 내용이 포함되어 있습니다. 출처를 확인해주시기 바랍니다.

web API를 공부하던 중 API libraryAPI로 혼용해 쓰는 것에 의문이 들었습니다. API의 정의는 정확히 무엇이며, 왜 이렇게 혼용을 해 사용하게 되었는지 그 역사를 기술한 자료를 읽어보고, 이와 관련해 흥미로운 스피치가 있어 소개합니다.

API의 역사

  • 1948년, Herman Goldstine과 John von Neumann은 프로그램이 공통 연산(common operations)을 사용하게 되면, 서브루틴 라이브러리(subroutine library)가 새 코드와 에러의 양을 줄여줄 것이라고 함
    → 서브루틴 라이브러리에 대한 관점(idea)을 언급만 함
    [아래 사진의 서랍 속에 들어있는 것이 서브루틴 라이브러리 테이프] image

(※ Subroutine에 대한 간단한 설명)

  • 1952년, Wilkes와 Wheeler가 서브루틴 라이브러리에 관한 논문 발표(2pages 분량)
    (참고)논문 전문
    → 당시에 API를 Library와 구분하지 않은 이유는?
    • 두 개념이 크게 보았을 때 같은 의미였으며,
    • 컴퓨터는 하나밖에 없었기에 기계 이동성의 개념이 존재하지 않았음
    • 레거시 프로그램이 없었음
    • 그래서 API를 별개로 논의할 이유가 없었으나, 명확하게 API 디자인 개념에 대해 이해하고 있었음
  • 1968년, AFIPS Fall Joint Computer Conference에서 처음 API라는 용어를 사용함

    마침내, 중앙 컴퓨터에서 하드웨어의 독립은 컴퓨터가 교체될 때 일관된 application program interface가 유지된다는 것을 의미한다.

API(Application Programming Interface)란?

  1. 입출력을 통해 정의된 operation 세트를 제공하는가?
  2. 사용자를 손상시키지 않으면서 재실행을 허락하는가? 이 두 조건을 모두 충족하면 API라고 할 수 있다

즉, Library나 Framework에서 이용할 수 있는 ClassFunction도 API라고 부름

프로젝트 내부에서 쓰여지고 있는 클래스모듈이 있다면, 이를 함수/인터페이스/API로 지칭할 수 있음

Web API란?

  • 1990년대부터 인터넷이 대중화되면서 컴퓨터와 다양한 기기들이 인터넷을 통해 의사소통하는 시대가 됨
  • 다양한 기기에서 서버의 데이터를 읽고 쓰기 위해 Web API를 이용함
  • 네트워크에서 기기들간의 의사소통 규격 사항을 HTTP(S)라고 부르며, REST는 Web API를 어떻게 만들지 정의한 것임 (과거에는 SOAP을 이용해 XML 포멧으로 정보를 주고 받았음)
  • REST의 POST/GET/PUT/DELETE를 이용해 새로운 데이터를 만들고(create)/읽고(read)/수정하고(update)/삭제(delete)할 수 있음
  • GET을 이용해 정보를 요청(request)하면, 서버로부터 해당 데이터를 JSON 포맷으로 응답(response)받을 수 있음 image

더 읽을 거리 & 참고한 자료

< 출처 >

‘A Brief, Opinionated History of the API,’ 유튜브 비디오, 47:04, 게시자 ‘InfoQ,’ 2018년 11월 22일, https://youtu.be/LzMp6uQbmns

“API란? 개념 정리와 포트폴리오에 유용한 대박 사이트 공유 🙌,” 유튜브 비디오, 08:07, 게시자 “드림코딩 by 엘리,” 2021년 3월 16일, https://youtu.be/ogT267HvNuQ

Kristopher Sandoval. “Who Invented the API?.” NORDIC APIS. September 20, 2018 https://nordicapis.com/who-invented-the-api/