사용자(User)의 하드웨어, 시스템리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템소프트웨어이다. 시스템 하드웨어를 관리할 뿐만 아니라 응용소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통시스템 서비스를 제공한다.
Source : https://ko.wikipedia.org
운영체제는 많은 부분을 이루는데 그중 커널은 가장 중요한 요소중에 하나이다. 커널은 얼마나 메모리를 읽고 쓸 것인지, 어느 프로세스를 실행할 것인지, 모니터 키보드 마우스와 같은 장치를 통해 어떠한 정보를 주고 받을 것인지, 네트워크를 통해 받은 정보를 어떻게 해성할 것인지를 제어한다.
사용자 인터페이스(User Interface)는 컴퓨터 사용자(User)가 직접 프로그램을 제어하고 사용할 수 있게 하는 운영체제의 기능이다. UI는 아이콘과 바탕화면을 지닌 그래픽이나 명령줄을 지닌 문자를 이룰 수 있다. 이와 비슷한 기능으로 API가 있는데, 이것은 응용프로그램이 다른 프로그램과 상호작용할 수 있게 하는 서비스와 코드 라이브러리가 한데모여 있으며 운영체제 그 자체라고 할 수도 있다.
하드웨어 <---> 운영체제 <---> 셸/응용 프로그램 <---> 사용자
위에서도 잠깐 설명했지만, API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체이다.
source : https://blog.wishket.com
서버와 DB 사이에서 문지기의 역할을 한다.
: 허가된 사람들에게만 접근성을 부여하는 등
애플리케이션과 기기가 원할하게 통신할 수 있도록 한다.
: 정보를 주고받는데 필요한 인프라를 제공해줘서 데이터의 교류를 만들어 줌
모든 접속을 표준화 한다.
: 표준화시켜서 기계/OS 등과 상관업싱 누구나 동일한 엑세스를 얻음
Private API
: 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행 -> 제3자에게 노출되지 않음 (문 꾹닫 비밀창고문)
Public API
: 개방형 API, 모두에게 공개되어 누구나 제한없이 사용할 수 있는 API
Partner API
: 특정 Group이 데이터 공유에 동의한 특정인들만 사용할 수 있음, 주로 Business 관계에서 많이 사용됌
어떤 응용프로그램이 자신이 가지고 있는 정보를 다른 프로그램(유저 또는 정보가 필요한 객체)으로 전달하고자 만든 규격?이기 때문에 사용자의 입장에서 접근하기도 쉽고 만약 그 데이터로 다른 프로그램을 개발하는 사람이라면 정보활용측면에서 굉장히 업무를 쉽게 만들어 줄 수 있다. 간편한 기능을 제공하면 플랫폼을 사용하는 사람들의 이탈을 줄일 수 있고 유입을 만들 수 있기 때문에 API를 활발히, 거의 필수로 사용중이다.