[개발용어] 라이브러리, 프레임워크, 아키텍처, 플래폼이란?


모든 전문 분야가 그렇듯 개발 용어에도 일반적으로 사용하지만 다른 뜻이 있는 경우가 있습니다.
그중에서 개발 입문자나 혹은 현업 개발자지만 정의를 내리기 곤란한 라이브러리, 프레임워크, 아키텍처, 플랫폼에 대한 개인적인 생각을 정리했습니다.
이해를 돕기 위해 자동차로 비교하여 설명하도록 하겠습니다.

라이브러리란? - What is Library?

간략 설명: 프로그램 제작 시 필요한 기능
비교 설명: 자동차 바퀴, 자동차 헤드라이트, 자동차 에어백



재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 Class나 Function으로 만들어진 것입니다.
사용 여부는 코드 작성자 선택 사항이며 새로운 라이브러리 제작 시에도 엄격한 규칙이 존재하지 않습니다. 제작 의도에 맞게 작성하면 됩니다.

라이브러리 예시

  • 가장 유명한 자바스크립트 라이브러리는 jQuery입니다. (간혹 프레임워크라고 소개되는 곳이 있는데 공식 사이트에서도 라이브러리로 명시되어 있습니다.)
  • 그래픽 사용자 인터페이스(Graphical user interface , GUI)에서 재사용하기 쉽게 버튼, 테이블 같은 구성 요소를 호출해서 쓸수 있도록 분리해두었다면 라이브러리입니다.
  • Windows에서 간혹 보았을 dll 확장자는 동적 링크 라이브러리(dynamic-link library, DLL)의 약자로 라이브러리라고 할수 있습니다.
  • 객체지향 프로그래밍(object-oriented programming, OOP)은 기본적으로 각 기능마다 함수화하는 것으로 클래스 라이브러리라고 할수도 있습니다.


프레임워크란? - What is Framework?

간략 설명: 프로그램 기본 구조(뼈대)
비교 설명: 자동차 프레임



원하는 기능 구현에만 집중하여 빠르게 개발 할 수 있도록 기본적으로 필요한 기능을 갖추고 있는 것으로 위에서 설명한 라이브러리가 포함되어 있습니다.
프레임워크만으로는 실행되지 않으며 기능 추가를 해야 되고 프레임워크에 의존하여 개발해야 되며 프레임워크가 정의한 규칙을 준수해야 합니다.
겉보기에는 비슷하지만 많은 프레임워크가 존재하는 이유는 아래에서 설명하게 될 아키텍처가 다른 것이며 규칙을 준수해야 되는 이유기기도 합니다.

프레임워크 예시



아키텍처란? - What is Architecture?

간략 설명: 프로그램 주요 구조 설계
비교 설명: 자동차 도면



기획한 내용을 프로그램화했을 경우 필요한 주요 특징을 기술적으로 설계하고 명시하는 것입니다.
결과물에 필요한 모든 구성 요소를 명시하지만, 구체적인 구현 방법은 포함되어 있지 않습니다. 가령, 아래에서 설명할 플랫폼은 주요 특징이지만 프레임워크와 라이브러리는 주요 특징이 아니므로 명시되지 않을 가능성이 큽니다.
자동차 설계로 예를 들면 자동차 헤드라이트가 본넷 밑에 사각형 모양으로 존재한다고 설계하고 헤드라이트 고정 방식이 접착제인지, 볼트인지는 명시되지 않는다고 볼 수 있습니다. 하지만 상황에 따라 포함될 수도 있습니다.

아키텍처 예시



플랫폼이란? - What is Platform?

간략 설명: 프로그램 실행 환경
비교 설명: 자동차 주행 환경(일반 고속도로용, 사막 전용, 경주용, 달 탐사용)


프로그램이 실행되는 환경이며 플랫폼은 플랫폼위에 다른 플랫폼이 존재할 수 있습니다. 가령, Windows에서 Java로 개발하고 있으며 앱스토어에서 어플을 내려받는 과정에서 이미 3개의 플랫폼을 사용하고 있는 것입니다.
플랫폼은 같은 영역에도 다양한 목적과 가치로 많이 만들어지고 있으며 모든 플랫폼에서 실행되도록 개발하기는 어렵습니다. 프로그램의 목적에 맞도록 플랫폼을 선택하는 것이 중요합니다.

플랫폼 예시

  • Windows, Linux, macOS등 O/S는 모두 플랫폼입니다.
  • 어플을 다운받는 앱스토어, 구글플레이, 원스토어도 플랫폼입니다.
  • V8 JavaScript Engine은 JavaScript에게 큰 힘이 되어주고 있는 플랫폼입니다.
  • Java 프로그램은 OS제약이 없지만 실행하기 위해서는 해당 OS에 자바 가상 머신(Java Virtual Machine, JVM)위에서 실행되므로 Java 플랫폼이 필요합니다.


마무리하며

견해의 차이는 있을 수 있다는 점을 알아주시고 잘못된 부분이나 알려주실 것이 있다면 댓글 남겨주시면 많은 도움이 될 거 같습니다.
그리고 이 글은 2008년 1월 23일에 블로그에 포스팅했으나 현재 유실된 자료로 다시 정리하였습니다.
과거 게시글은 INTERNET ARCHIVE 사이트에서 확인 가능합니다. (https://web.archive.org/web/20080218135155....)

함께보기