Uknow's Lab.
article thumbnail

 

 

 

 

라이브러리(Library)와 프레임워크(Framework).

개발을 하다 보면 매우 자주 듣는 용어들입니다.

 

두 녀석을 한 마디로 쉽게 설명해보자면 '누군가가 이미 만들어놓은 코드 뭉치' 라고 볼 수 있습니다.

둘 다 소프트웨어를 개발하는데 있어 필요한 여러 기능을 제공하는 코드 덩어리 입니다.

 

 

 

라이브러리 (Library)

 

이 포스팅의 첫 번째 주인공인 라이브러리는

소프트웨어를 개발하는데 있어 특정 기능이나 특정 작업을 하기 위한 기능이나 도구, 함수, 클래스, 데이터 등을 모아놓은 코드 뭉치 입니다.

이는 개발자들이 자주 사용하는 코드를 재작성하지 않고 그저 라이브러리를 호출해 사용하면 되기에,

코드의 재사용성이 증가합니다.

 

파이썬의 Numpy, Pandas, TensorFlow 등등이 있으며,

안드로이드에서 이미지를 다룰 때마다 큰 도움을 줬던 Glide 등이 있습니다.

자바의 StringBuilder, ArrayList 등 자바를 쓸 때 자주 사용하는 클래스 역시

자바의 표준 라이브러리에 포함되어 있는 라이브러리라 볼 수 있습니다.

 

 

 

프레임워크(Framework)

오늘의 두 번째 주인공, 프레임워크 입니다.

프레임워크 역시 애플리케이션 개발을 위해 누군가 작성해놓은 코드 덩어리 라는 점은 라이브러리와 동일하나,

기본 구조와 흐름 등, 애플리케이션을 만들기 위한 뼈대가 된다는 점이 다릅니다.

 

자바와 코틀린의 Spring, 안드로이드 개발에 사용되는 Android Framework,

파이썬의 Flask, Django,

Node.js의 Express.js 등이 있습니다.

 

 

 

라이브러리 vs 프레임워크

규모의 차이?

누군가 만들어놓은 코드 뭉치라는 점에서 둘은 비슷하지만,

그 규모가 작으면 라이브러리, 규모가 크면 프레임워크라고 간단히 설명하는 사람도 여럿 있습니다.

하지만 이는 반쪽짜리 정답이라고 생각합니다.

프레임워크는 애플리케이션의 뼈대를 제공하기 때문에,

일반적으로 프레임워크가 라이브러리보다 규모가 큰 경향이 있습니다.

하지만 이는 일반적으로 그렇다는 것이며, 즉 특징에 가까운 것이지 분류하는 기준이 될 수는 없습니다

통계적으로 봤을때, 남자가 여자보다 키가 크지만

그렇다고 해서 남자와 여자의 기준을 '키 x cm 이상/미만' 으로 정할 수 없듯이요. 분류 기준이 아닌 특징입니다

남성 평균키보다 큰 키를 가진 여성이 존재하며, 반대의 경우 역시 존재하듯이,

웬만한 프레임워크보다 큰 규모의 라이브러리도 존재하며, 반대의 경우 역시 존재합니다.

 

 

라이브러리와 프레임워크는 제어의 흐름과 밀접한 관련이 있습니다.

라이브러리의 경우 프로그래머가 제어의 흐름을 갖고 있으며, 특정 기능을 수행하는 코드 뭉치(라이브러리)를 호출하여 사용합니다.

하지만, 프레임워크의 경우, 프레임워크가 제어의 흐름을 갖고 있으며, 프레임워크가 프로그래머의 코드를 호출하여 사용합니다.

제어의 흐름을 프로그래머가 아닌 프레임워크가 갖고 있기에, 이를 보고 제어의 역전(IoC : Inversion of Control) 이라고 합니다.

 

 

 

 

라이브러리는 공구 상자와도 같습니다.

작업자(프로그래머)가 필요한 도구(라이브러리)를 챙겨 작업자 본인이 주도권을 쥐고 작업을 합니다.

 

하지만 프레임워크는 공장의 시스템과 같습니다.

작업자(프로그래머)는 공장(프레임워크) 시스템의 일부가 되어 작업을 진행합니다.

원자재 구매 -> 가공 -> 조립 -> 검사 -> 출하 등의 과정, 즉 애플리케이션의 흐름과 뼈대를 제공하고,

프로그래머는 그 시스템을 기반으로 하여 프레임워크의 규칙과 패턴대로 자신의 코드를 작성합니다.

 

 

 

마치며

본 포스팅에서 이야기한 라이브러리와 프레임워크의 대한 설명과 차이점 등은

라이브러리와 프레임워크에 대한 보편적인 의견들을 조사해 작성하였습니다.

 

아직까지 라이브러리와 프레임워크의 명확한 정의나 기준은 없으며,

라이브러리와 프레임워크의 정의, 기준은 아직까지도 논란이 많은 주제입니다.

때문에 해당 포스팅의 내용은 보편적인 의견, 즉 '대체로 이렇더라' 정도로 생각해주시기 바라며, 절대적인 사실이 아님을 밝힙니다.

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.