CS/개발상식

[개발상식] API란 무엇인가?

bu119 2023. 8. 16. 09:00
728x90
반응형

API와 UI

UI,  API는 둘다 Interface이다.

UI = User Interface
API = Application programming Interface

 

인터페이스 (Interface)

인터페이스(interface)는 컴퓨터 시스템끼리 정보를 교한하는 공유 경계를 의미한다, 터치 스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신 할 수 있으며, 마우스나 마이크론 폰가 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다.

 

UI (사용자 인터페이스, User Interface)

사용자와 기계나 시스템 같은 사물이 소통하는 데 도움을 주는 매개체이다.

 

UI는 기본적으로 애플리케이션(이하 앱)을 사용하는 사용자(user) 가 시스템을 제어할 수 있게 만들어주는 기능을 지칭한다. 웹 사이트를 예로 들면 메뉴바, 스크롤, 경고창 등의 웹 화면 전반적인 기능들이 UI다. 이 유저인터페이스는 사용자와 머신(computer)사이에 위치하여 사용자의 상태나 의중을 시스템에 전달하고 보여주는 입출력 장치들이 여기에 해당한다.

 

API (애플리케이션 프로그램 인터페이스, Application Programming Interface)

API는 위의 개념이 사용자 차원에서 개발자 차원으로 넘어간 개념이다. 개발자는 프로그래밍을 할때 코드의 형태를 띈 인터페이스를 다양한 방법으로 결합해서 특정한 기능을 가진 앱을 만들게 된다. ( 가령 '사용자가 어떤 동작을 했을때 경고창이 뜨게 한다'와 같은 기능을 위해 alert 을 쓴다.) 즉 소프트웨어를 제어, 개발하기 위해 사용하는 인터페이스 API라고 하는것이다.

 

일반 사용자들은 UI (버튼, 스크롤바,링크 등)를 통해 앱의 동작, 기능을 제어하는 반면, 개발자들은 API 를 통해 소프트웨어를 제어, 개발한다.

 

프로그래밍은 결국 개발자가 제어하고자 하는 환경(ex.웹브라우저)을 조작하기위해 API를 통해 제어하고, 내가 제어하려는 환경이 어떤 API를 제공하는지 찾아서 접근하는 법을 잘 활용해야한다. 이를 위해 MDN 등의 공식 문서를 보면서 자바스크립트의 문법을 이해하고 프로그래밍에 활용하는거라 할 수 있다.

 


 

API는 UI(User Interface)와 비슷한 상호작용 역할을 한다.

이는 서로 다른 시스템이 만나 동작하기 위한 의사소통 역할을 하며, 데이터를 전달 및 처리하며 사용자에게 여러 응용 프로그램의 작업을 수행하고 완료하는 데에 있어 언제 어디서나 정보를 제공하고 있다. 반면에, UI와는 달리 사용자의 눈에 보이지는 않는다.

 

간단하게 설명하자면, 작성된 프로그램은 API에게 데이터를 요청하게 되고, API는 요청받은 명령을 처리하기 위해 응용 프로그램 또는 애플리케이션과 상호작용을 하게 된다. 이후 결과물을 작성된 프로그램에게 전달하게 되는 것이다. 이러한 방식으로 API는 프로그램들이 서로 상호작용을 할 수 있도록 요청, 명령, 처리하는 인터페이스이다.

 

UI가 사용자와 사용자가 다룰 대상(하드웨어 혹은 소프트웨어)을 연결한다면, API는 프로그램과 또 다른 프로그램을 연결해주는 일종의 다리라고 볼 수 있다.

 

 

API (Application Programming Interface) 란?

 

 

API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말이다.

응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.

 

풀이를 하자면,

 

Application

특정한 업무를 수행하기 위해 개발된 응용 소프트웨어

 

Programming

컴퓨터에 부여하는 명령을 만드는 작업.
수식이나 작업을 컴퓨터에 알맞도록 정리해서 순서를 정하고 컴퓨터 특유의 명령코드로 고쳐 쓰는 작업

 

Interface

사물과 사물 사이 또는 사물과 인간 사이의 경계에서, 상호 간의 소통을 위해 만들어진 물리적 매개체나 통신 규칙

 

즉, 여러 프로그램들과 데이터베이스, 그리고 기능들의 상호 통신 방법을 규정하고 도와주는 매개체이다. API는 데이터베이스가 아니지만, 액세스 권한이 있는 앱의 권한 규정과 “서비스 요청”에 따라 데이터나 서비스 기능을 제공하는 메신저 역할을 한다.

 

쉽게 말해, API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체로 볼 수 있다.

 

API의 접근 방식

API의 접근 방식에는 크게 세 가지가 존재한다.

1. Private API

API를 기업이나 연구 단체 등에서 사용하는 다양한 애플리케이션과 시스템의 통합을 위해 사용하는 것으로 단체 내부에서만 사용할 수 있도록 하는 것이디.

  • 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행한다.
  • 따라서 제 3자에게 노출되지 않는다. 

 

2. Public API

모든 사람들에게 API를 제공하는 것으로, 개인이 API와 상호작용하는 프로그램을 무료로 개발할 수 있다. 다양한 아이디어를 통해 혁신적인 프로그램의 등장을 목표로 사용되고 있다.

  • 개방형 API로, 모두에게 공개된다.
  • 누구나 제한 없이 API를 사용할 수 있다.

 

3. Partner API 

API를 특정 비즈니스 파트너와 공유하는 것으로, 공유받은 API를 품질 저하 없이 사용할 수 있으며 수익 창출을 목표로 사용한다.

  • partner API는 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있다.
  • 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용된다.

 

API의 필요성

1. 개발 및 관리의 효율성 

API를 사용하면, 실제로 서비스가 어떻게 구현되었는지는 몰라도 그 서비스를 그대로 가져다 사용할 수 있다. 
즉, 매번 새로운 개발을 할 필요 없이 이미 만들어 놓은 기능을 그대로 "블록"처럼 가져다 쓸 수 있게 된다. 
덕분에 개발 시간이 줄어들고 개발에 필요한 비용도 아낄 수 있다. 또한 API 문서만 보면 누구나 쉽게 이해할 수 있어, 협업에 용이하고 유지보수도 수월하다.

요즘 기업에서 Hot한 IT 아키텍처인"마이크로 서비스 아키텍처(MSA) 또한 API를 기반으로 한다. 애플리케이션 내 다양한 기능들을 작게 나눠 독립적으로 구성한 다음, 이들을 API 형태로 연결하여 상호 통신하게 하는 구조이다. 

 

2. 유연성, 확장성

서비스의 신규 개발과 웹/앱 등 채널 확장이 쉽다. 특히 타사 서비스와의 연계에 있어 큰 강점을 자랑한다. 예를 들어 이번에 자사의 애플리케이션에 새롭게 추가할 기능 중 하나가, "지도" 위에 맛집을 표시하는 것이라면, "지도"를 직접 개발하는 것보다 구글이나 네이버가 제공하는 지도 API를 불러오면 참 편하겠죠?  
이렇듯, API는 고객과 현업의 요구사항을 반영한 새로운 서비스를 발 빠르게 출시할 수 있도록 돕는 든든한 기술이다. 

 

API의 역할 

  1. API는 서버와 데이터베이스에 대한 출입구 역할을 한다.
    • 모든 사람들이 데이터베이스에 접근가능하면 안 되기 때문에 이를 방지하기 위해
    • 서버와 데이터베이스에 대한 출입구 역할을 하며, 허용된 사람들에게만 접근성을 부여해준다.
  2. API는 애플리케이션과 기기가 원활하게 통신할 수 있도록 한다.
    • 여기서 애플리케이션이란 우리가 흔히 알고 있는 스마트폰 어플이나 프로그램을 말한다.
    • API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할을 한다.
  3. API는 모든 접속을 표준화한다.
    • 모든 접속을 표준화하기 때문에 기계/ 운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있다.
    • 쉽게 말해, API는 범용 플러그처럼 작동한다고 볼 수 있다.

 

API의 장점

 

개발자들의 관점에서 크게 3가지의 장점이 있다.

1. 자동화 용이

API를 통해 사람이 직접 조작하지 않아도 관련 내용이 자동으로 생성되고 처리되어 워크플로우가 빨라질 수 있다.

 

2. 범위의 확장성

API는 프로그램 사용 시 정보를 전달하는 기능이 있어 사용자의 환경에 맞춰서 전달할 수 있다. 또한 API에 직접 액세스 하지 않아도 콘텐츠가 자동적으로 생성 및 업로드되어 확장이 용이하다.

 

3. 적용력

변화 예측에도 큰 도움이 되기 때문에 API를 통해 데이터를 수집하고 전달하는 데 있어 유연한 서비스 환경을 구축할 수 있다.

 

Open API 란? 

Open API는 말 그대로 "누구나 쓸 수 있도록 공개된(Open) API"를 뜻한다. 

대표적으로, 정부는 공공데이터포털(www.data.go.kr)을 통해 국가기관이 보유한 수많은 데이터를 API 형태로 무료 공개하고 있다. 지역별 코로나 발생현황, 서울시 따릉이 이용현황, 미세먼지 측정 정보 등 다양한 데이터를 전 국민이 자유롭게 가져다가 데이터 분석을 수행하거나 유익한 서비스를 개발하는 데 쓸 수 있도록 적극적으로 장려하는 것이다. 

 

 

국가의 다양한 데이터를 모아 놓은 공공데이터포털(www.data.go.kr)에서도 API 형태로 데이터를 무료 제공하고 있다. 

 

뿐만 아니라, 카카오, 네이버, Google 등 수많은 민간 기업들 또한 자사가 제공하는 다양한 기능들(지도 앱, 포털 검색하기, 로그인 기능 등)을 일반 사람들도 무료로 사용할 수 있도록 API를 오픈했다.

 

 

API로 구현하는 "카카오톡으로 로그인" 기능 예시 (출처: https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api)

이렇게 Open API가 유행하는 이유는, 아무래도 플랫폼의 영향력이 곧 돈이 되기 때문이다.
아무래도 자사의 서비스가 타사의 다양한 서비스에서도 활용된다면, 사용자 수가 증가하는 등 서비스 자체의 가치도 높아질 것이다.

 

또한, API를 통해 새로운 수익원을 창출하는 것도 기업들이 Open API를 도입하는 주요 동인 중 하나이다. API의 호출 수에 제한을 두고, 무료 제공량 이상은 돈을 받는다거나(단계적 유료화), 자사가 구축한 결제 시스템을 API 형태로 타사 서비스에 연계할 수 있도록 하여 수수료 수익을 창출하는 등이 있다.    

 

Open API 종류

여러 국내 및 해외 등 다양한 기업에서는 오픈 API를 제공하고 있다. 이를 통해 창업을 목표로 하는 개발자 또는 실습을 목표로 하는 개인 개발자들에게 무료로 제공되고 있어 독창적이고 새로운 프로그램들이 등장하는 것을 목표로 대중들에게 무료로 지원하고 있다. 대표적으로 구글, 네이버, 카카오 등에서도 지원하고 있다.

 

 


참고 자료

https://enjoyinjoanne.tistory.com/56

https://velog.io/@rimu/UI-API-%EC%97%90-%EB%8C%80%ED%95%9C-%EC%A0%95%EB%A6%AC

https://blog.wishket.com/api%EB%9E%80-%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85-%EA%B7%B8%EB%A6%B0%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8/

https://www.hanl.tech/blog/api%EB%9E%80-api%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%EC%A2%85%EB%A5%98-%EC%9E%A5%EB%8B%A8%EC%A0%90/

https://ittrue.tistory.com/31

https://steemit.com/kr/@yahweh87/it-api

728x90
반응형