프로그래머라는 직업을 가지고 있다면 이 정도의 개념은 정확히 인지하고 있어야하지 않을까~ 하여 해보는 정리.
프로그래머 또는 개발자가 아니더라도 IT분야에 종사하거나 IT에 관심이 있다면 누구나 헷갈려하고, 대충은 이해하면서도 정확히 정리가 안되는 개념들일꺼다.
그래서 정리해본다!
플랫폼 (Platform)
내가 그동안 여러 IT용어 또는 개발용어를 보면서 느끼는 건 그 단어의 본래 뜻을 생각해보면 IT에서 쓰이는 의미도 어느정도 유추가 된다는거다.
분명 용어를 만들어내는 사람들도 의미가 상통한 현실에서의 단어를 컴퓨터 세계로 가져와서 만들어 낸거겠지!
그런데 플랫폼같은 경우는 원래 뜻을 생각해봐도 크게 와닿지가 않는다.
플랫폼이란 단어는 본래 '기차역의 승강장'이란 뜻으로 가장 많이 쓰이며 '무대'나 '연단', '강단' 같은 것을 부를때도 쓴다.
그러나 IT에서는 특정 장치나 시스템, 서비스 등에서 이를 구성하는 기반이 되는 하드웨어나 소프트웨어 환경, 더 크게는 기초가 되는 틀이나 골격을 지칭한다.
대충 이해는 되지만 말이 참 어렵다.
예를 들면 확 와닿을 것만 같다.
특정 장치를 예로 들면, 컴퓨터의 경우 Windows나 Linux, MacOS 같은 기본 운영체제를 플랫폼이라 부를 수 있다.
그럼 당연히 스마트폰에서는 안드로이드나 iOS를 플랫폼이라 할 수 있겠다.
그리고 자바로 만들어진 시스템이 있다면 그 시스템의 플랫폼은 자바라고 할 수 있다.
또 인터넷 포털이라는 서비스에서 '네이버'나 '페이스북' 같은 웹사이트를 플랫폼이라고 부를 수도 있다고 한다.
사실 플랫폼이라는 개념 자체가 그로써 애매한 부분이 있다.
플랫폼은 이거다 이렇게 하나를 지칭한다기 보단 플랫폼을 가지는 주체에 따라서 여러 형태가 될 수 있는 것이다.
다음에 정리해 볼 프레임워크도 때에 따라 플랫폼이 될 수도있다.
프레임워크 (Framework)
프레임워크라는 말의 본래 뜻은 '뼈대', '틀', '구조'이다.
프레임워크는 이 단어의 본래 뜻에서 IT에서의 의미도 유추할 수 있다.
IT에서의 프레임워크를 정의한 말 중에 유명한 말이 있다.
'소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것.'
'프레임워크는 라이브러리와 달리 애플리케이션의 틀과 구조를 결정할 뿐 아니라, 그 위에 개발된 개발자의 코드를 제어한다. 프레임워크는 구체적이며 확장 가능한 기반 코드를 가지고 있으며, 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있다.'
맨날 들어도 프레임워크가 정확히 뭔지 헷갈려하는 우리에게 그나마 구체적으로 잘 설명하고 있는 문장이라 생각한다.
이것 역시 예로 들면 더 이해가 잘 될 것이다.
우리가 웹 개발을 하면서 쉽게 보게되는 자바의 스프링 프레임워크, 마이크로소프트의 닷넷 프레임워크 등이 바로 프레임워크이다.
우리는 기본적으로 JAVA나 C, C++, C# 등의 프로그래밍 언어를 공부했다.
이렇게 공부한 프로그래밍 언어로 우리는 하나의 웹 어플리케이션을 개발하려고 한다.
기본적인 프로그래밍 방법, 문법, 컴파일, 디버깅 등에 대해서는 배웠지만 이것으로 웹을 구축하려고 할 때,
'어떻게 시작해야하지? 폴더는 어떻게 나눌까? 서버와의 연결은 어떻게 해야할까?'
등등의 생각으로 막막할 것이다.
이럴 때, '웹 개발을 할때는 이런 기본적인 뼈대, 틀을 가지고 만들어 봐.' 라고 하는것이 프레임워크이다.
좀 더 효율적인 개발을 위해 프레임워크 설계자들이 미리 기본 구조를 정해준 것이다.
우리는 그 프레임워크를 기반으로 개발을 하면 된다.
이것이 프레임워크이고 다음에 정리해 볼 라이브러리와의 차이점은 분명하다.
라이브러리는 개발자가 필요한 것들을 빌려와 쓰는 대상이고, 프레임워크는 개발자가 어떻게 개발할 것인지를 결정해주는 틀이다.
라이브러리 (Library)
라이브러리, '도서관'이다.
도서관에서 필요한 책을 빌려와 보는 것처럼,
우리는 개발을 하면서 필요한 기능들을 라이브러리에서 가져와 사용할 수 있다.
프로그래밍에서 흔하게, 반복적으로 사용되는 함수들은 굳이 개발자가 개발할 때 마다 코딩을 할 필요가 없다는 것이다.
미리 만든 함수들을 어딘가에 저장해 놓고, 개발자들은 필요시 가져와 편리하게 사용할 수 있는 것이다.
개발을 하다보면 우리가 직접 만든 함수는 아니지만
참조를 한다거나, 플러그인을 한다거나 해서 이미 만들어진 함수를 쓰는 경우가 많다.
이런 함수들이 묶여있는 곳(보통 파일이겠죠)을 라이브러리라고 부른다.
API (Application Programming Interface)
응용프로그램 프로그래밍 인터페이스, 한글로 바꿔도 어렵다.
Interface라는 단어는 영어사전에서 찾아보면 그대로 인터페이스이다.
굳이 한글로 만들어보자면, '접속기', '접속체계'. '상호작용을 위한 약속'등으로 말할 수 있다.
어떤 인터넷 사전에서는 라이브러리와 API의 정의를 똑같이 하고 있다.
프로그램 또는 애플리케이션이 운영체제에 어떤 처리를 위해서 호출할 수 있는 함수의 집합이라고 말이다.
물론 틀린 말은 아니다.
그러나 라이브러리와 API의 차이점을 우리가 보편적으로 사용하는 예에서 든다면 다음과 같다.
자바 프로그래밍을 시작할 때 우리는 자바 API 문서를 활용하곤 한다.
어떤 클래스에 어떤 메소드가 있고 이것들을 사용하려면 어떻게 해야하는지를 정리해 놓은 문서이다.
또 구글지도 API, 페이스북 API 등을 활용하여 굳이 직접 개발하지 않고 오픈소스를 가져와 사용하기도 한다.
둘 다 함수의 집합이라고 할 수는 있지만,
라이브러리가 함수들의 묶음 그 자체라면, API는 그것들에 대한 명세까지 포함한다고 볼 수 있다.
[출처] 플랫폼/프레임워크/라이브러리/API 정리! |작성자 찍찍이
'Programming' 카테고리의 다른 글
[모바일] 크롬 모바일 웹 디버깅 (0) | 2016.10.21 |
---|---|
[metaTag] 오픈그래프 og tag (0) | 2016.10.20 |
[Tomcat] WAR파일 deploy (0) | 2016.02.29 |
facebook OAuth2.0 reference (0) | 2015.07.07 |
OAuth 2.0 이란 (0) | 2015.07.02 |