[프로그래밍] API와 라이브러리(Library)


4차 산업혁명으로 인해 우리 사회는 많은 변화를 맞이하게 되었습니다.

인공지능(AI), 빅 데이터, 사물 인터넷(IoT), 가상 현실(VR), 자율 주행, 로봇과 드론 등 앞으로 우리는 이제껏 경험해 보지 못한 새로운 세상을 살아갈 가능성이 높아졌습니다.


4차 산업들의 공통점은 바로 코딩과 프로그래밍입니다.

원하는 알고리즘을 짜고 인간이 사용하는 언어를 컴퓨터가 사용하는 언어로 바꿔 입력하는 프로그래밍과 코딩의 중요성은 이제 아무리 강조해도 지나치지 않습니다.

이미 초, 중, 고등학교에서도 소프트웨어 및 코딩 교육이 정규 교육과정에 편입되기도 했습니다.


인포라드는 4차 산업시대에 발맞춰 코딩과 프로그래밍 등, 다양한 IT와 관련된 다양한 주제의 정보들을 정리 해보겠습니다.

이번 시간에는 API와 라이브러리(Library)에 대해 알아보겠습니다.

 

API(Application Programming Interface)


API는 (Application Programming Interface - 응용 프로그램 인터페이스)의 약자로 컴퓨터나 컴퓨터 프로그램간의 사이의 연결을 뜻합니다.

프로그램과 프로그램 사이를 연결해주는 다리 역할을 합니다.


프로그래밍을 할 때 프로그램을 작성하기 위해 사용되는 일종의 소프트웨어 인터페이스이며, 다른 종류의 소프트웨어에 서비스를 제공할 수 있습니다.

이러한 연결 또는 인터페이스를 구축하거나 사용하는 방법을 설명하는 것을 API 사양이라고 합니다.


API는 컴퓨터와 사용자를 연결하는 사용자 인터페이스와 다르게 컴퓨터나 소프트웨어를 서로 연결하며, 최종 사용자가 아닌 프로그램 개발자가 사용하도록 고안되었습니다.


API의 목적 중 하나는 시스템 작동 방식에 대한 내부 세부 정보를 숨기고, 프로그램 개발자가 유용하다고 생각하는 부분만 노출하는 것이 가능하다는 것입니다.

그래서 추후에 내부 세부 정보가 변경되더라도 노출되는 부분의 일관성을 유지할 수 있다는 것입니다.


API는 Web API, Local API, Program API 등 크게 세 가지 유형으로 나눌 수 있습니다.


API의 한 유형인 Web API는 uri를 통해 데이터를 받는 형태가 많은데, 예를 들어 Google Maps API의 경우 원하는 데이터를 HTTP 요청으로 보내면 해당 지역의 지도를 HTTP 응답으로 보냅니다.


API의 장점과 단점은 아래와 같습니다.


API의 장점

  • API는 조직에서 인간이 생성하는 출력보다 효율적이고 빠르고 신뢰할 수 있는 결과를 생성합니다.

  • API는 개발자 요구 사항에 따라 빠르고 유연한 서비스를 제공합니다.

  • API는 인간이 아닌 컴퓨터를 사용하기 떄문에 더 나은 자동화된 결과를 생성합니다.

  • API는 다양한 사이트 간의 데이터 이동을 허용해 사용자가 일관된 서비스를 제공받을 수 있다는 것입니다.

  • 개발자는 API를 사용하는 동안 새로운 도구와 기능을 찾을 수 있습니다.

API의 단점

  • API의 개발 및 구현은 때때로 비용이 많이 들고 개발자의 높은 유지 관리와 지원이 필요합니다.

  • API를 사용하면 공격에 취약한 또 다른 레이어가 추가되기 때문에 보안 문제가 생길 수 있습니다.

 

API와 라이브러리(Library)


API는 프로그램 개발에 사용되는 구성 요소인 라이브러리와 혼용해서 사용되기도 합니다.


하지만 라이브러리는 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것으로 플랫폼에서 바로 실행될 수 있는 형태로 제공되며, 실제 실행되어 기능을 수행할 수 있는 프로그램으로, API와는 다른 개념입니다.


라이브러리는 단어에서 볼 수 있듯 프로그램 개발을 위해 필요한 기능을 모아놓은 소프트웨어입니다.

프로그래밍, 코딩 시 필요한 다양한 도구 또는 함수들이 모여있으며, 기존에 만들어진 기능이나 함수들을 재활용함으로써 프로그램 개발에 들어가는 시간과 노력을 줄일 수 있습니다.


API는 정의된 프로토콜을 기반으로 상호 작용을 할 수 있는 일종의 약속된 시스템, 즉 규약이라면 라이브러리는 이 개념을 실체화시켜 직접 사용할 수 있게 만들어 놓은 구현체라고 구분할 수 있습니다.


프로그램을 개발할 때 모든 기능을 자체적으로 개발할 수 없기 때문에 이미 만들어져 있는 소프트웨어 구성 단위를 조립해 사용하는 기술, 또는 해당 소프트웨어를 컴포넌트(Component)라고 하는데, 라이브러리는 이 컴포넌트 중 하나이며 이런 컴포넌트들을 조립하기 위한 매개체가 바로 API입니다.


위에서 언급한 Google Map 웹 API를 예를 들면 프로그램 개발자의 소프트웨어에서 라이브러리를 제공받아 사용하는 것이 아니라, Google 서버에서 서비스를 제공받는 것이기 때문에 라이브러리가 아닌 API입니다.


Web API Flowchart

출처 : geeksforgeeks

https://www.geeksforgeeks.org/introduction-to-apis/?ref=gcse




출처


https://en.wikipedia.org/wiki/API

https://en.wikipedia.org/wiki/Library_(computing)

https://en.wikipedia.org/wiki/Component-based_software_engineering

https://en.wikipedia.org/wiki/Web_API

https://www.geeksforgeeks.org/introduction-to-apis/?ref=gcse

https://terms.naver.com/entry.naver?docId=3611955&cid=58598&categoryId=59316

https://terms.naver.com/entry.naver?docId=1179553&cid=40942&categoryId=32837


카테고리