Daily Life of BlueRose

컴퓨터 & 코딩 공부/웹 & 코딩 기초지식 정리

API, 라이브러리, 프레임워크 및 유사 용어

푸른로즈 2024. 8. 16. 10:43
728x90

API

API : Application Programming Interface

메인 프로그램과 이에 부속된 소프트웨어 컴포넌트의 관계에서, 해당 컴포넌트가 수행하는 고유기능, 입출력 기능 및 이에 사용할 자료형을 지정한 인터페이스(기능 공유를 위한 표준).

 

라이브러리나 프레임워크와 달리, 프로그램 상호 간 연결을 목적이 두드러진다. 가령 각종 카카오 지도 API(각종 프로그램이나 웹에서 지도 표시), 공공데이터포털 OPEN API(공공데이터를 상용 프로그램에서 활용) 등과 같다.

 

그러나, 이렇게 기업에서 제공하는 기능 뿐 아니라, 프로그래밍 언어에서 숨쉬듯이 사용하는 각종 함수들도 API를 통해 만들어진다. 가령, 화면에 글자를 표시하기 위해서는 메모리 접근, 운영체제의 표시방식 차이에 따른 각종 접근법 등 개별 환경마다 서로 다른 접근법을 필요로 하는데, 우리는 굳이 이러한 작업을 하지 않아도 각 언어에서 제공하는 함수를 사용하여 간단하게 처리할 수 있다(python의 print, c언어의 printf 등). 이는 개별 환경마다 수행해야 하는 작업들이 각 프로그래밍 언어에서 API로 이미 구현되어 있기 때문이다.

 

REST API

RESTful API라고도 부름. 여기서의 REST는 Representational State Transfer의 약어로 소프트웨어가 관리하는 각종 문서, 이미지, 데이터 등을 모두 HTTP URI(URL의 상위개념)로 접근할 수 있도록 설계하는 원칙이다.

 

이러한 원칙을 토대로 API를 구현한 것을 REST API라고 부른다. 가령 어떤 지도 API에서 특정 좌표로 이동할 때 URL의 변경을 통해 접근이 가능하다면(ex. www.예시주소.com/x좌표?=123&y좌표?=123) 해당 API가 REST API에 속한다고 볼 수 있다.

 

모듈/라이브러리/프레임워크

모듈/라이브러리

위 API에 대한 예시와 같이, "프로그래밍 언어의 API"를 기반으로 만들어 둔 각종 함수들은 보통 비슷한 기능끼리 서로 묶어두는 편인데, 이를 모듈이라고 부른다. 이러한 모듈을 여럿 종합해 둔 것을 라이브러리라고 부른다.

 

프레임워크

프레임워크는 API나 라이브러리와 달리, 기능(대량의 라이브러리)과 함께 이를 유기적으로 연결하기 위한 '정해진 틀'을 제공한다. 때문에 프레임워크를 사용하면 소프트웨어 개발의 뼈대 역할을 수행한다. 프레임워크에서 제공하는 필수적인 어떤 틀을 준수해야 비로소 소프트웨어가 완성된다고 볼 수 있다.

 

이에 따라 프레임워크를 통해 만드는 프로그램은 일종의 라이프 사이클이나 상태를 지닌다. 가령 건축으로 예를 들면 설계-토대구축-철골작업-거푸집-콘크리트양생-전기/소방/인테리어 등 과정과 구축해야 할 하위 공사가 있으며, 이 작업이 완성되었는지에 따라 착공-공사중-준공-분양대기로 나눌 수 있는 것과 같다.

 

다만, 현실적으로는 라이브러리와 프레임워크는 혼용되고 있으며, 이를 명확히 구분하고자 하는 시도는 (현실적으로는) 큰 의미가 없다.

기타 유사 개념

아키텍처

Architecture 자체는 건축물이라는 의미를 지닌다. 그러나 소프트웨어에서의 아키텍처는 일종의 청사진, 설계(도)라는 의미로 사용된다. 가령, "웹 페이지 작성을 위한 아키텍처"라 함은 웹 페이지 작성이라는 목적을 달성하기 위한 구성요소, 작동방식, 내부 및 외부와의 상호작용 관계/방법 등을 종합적으로 설명하는 설계도라고 말할 수 있다.

반응형