Framework? Library?

?·2020년 10월 5일
0

What I've learned

목록 보기
18/21

Framework란?

일정한 형태의 틀, 부품을 가지고 다양한 형태의 결과물을 만드는 것.
즉, '제공 받은 일정한 요소와 틀, 규약을 가지고 무언가를 만드는 일'이라고 정의할 수 있다.

레고로 예를 들어보자,
우리는 레고에서 제공해주는 일정한 부품과 틀을 가지고 다양한 장난감을 만들 수 있게 된다. 또한 이러한 장난감을 만들기 위해서는 메뉴얼에 포함된 규약을 지키면서 만들어야 할 것 이다. 그리고 어떤 일정한 부품, 틀인 레고를 제공해주는 것은 레고 제조사 일 것이다. 즉 장난감을 만들기 위한 요소를 제공해주는 누군가가 있어야 한다.

IT에서는 이 요소들을 제공해주는 프로그램이 있다. 그것이 바로 '프레임워크 프로그램' 이다.

엄밀히 말하자면 '프레임워크 프로그램'이라는 말이 정확하지만 개발자들은 보통 이것을 그냥 '프레임워크'라고 부른다. Spring, Django, Ruby on Rails 등등이 바로 그것이다. 이러한 프레임워크는 어떤 프로그램을 쉽게 만들기 위한 요소와 룰을 제공해 줌으로써 완성물의 생산성과 품질을 높이는 역할을 하는 것이다.

Framework program이란?

특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램
같은 말로, '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합'이라 할 수 있다.

결국 이것은 완성된 어플리케이션이 아니라 프로그래머가 완성시키는 작업을 해야 한다.


📌 프레임워크의 특징

  • 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성되어 있다.
  • 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의한다.
  • 컴포넌트들은 재사용이 가능하다.
  • 높은 수준에서 패턴들을 조작화 할 수 있다.



Library란?

소프트웨어를 개발하기 쉽게 어떤 기능을 제공하는 도구의 집합이다.

앞서 프레임워크를 장난감들을 만들 때에 꼭 사용해야하는 요소와 메뉴얼에서 이야기하는 지켜야되는 규약에 빗대어 이야기했다. 이러한 맥락에서 우리는 장난감을 만들 때 규약에 맞춰서 만들되, 자기 손으로 만들던, 아빠의 도움을 빌리던, 망치를 사용하던 상관이 없다. 본인에게 알맞는 도구를 사용하면 되는데 여기서 '알맞는 도구'가 바로 '라이브러리'다.

즉 프레임워크를 가지고 프로그램을 프레임워크에서 제공하는 요소와 그것을 사용하기 위한 규약을 지키면 그 밖에 나머지는 어떤 라이브러리를 가져다가 써도 어떤 패키지를 가져다가 써도 상관이 없는 것이다. 이러한 라이브러리의 종류로는 JS의 react, Python에서 Datetime, Pandas, Beautifulsoup ..., Java에서는 Guava, Apache common library 등 무수히 많은 종류가 있다.



🙋 FrameWork과 Library의 차이점

프레임워크와 라이브러리의 차이는 제어에 대한 주도성이 누구에게/어디에 있는가에 있다.
즉, 어플리케이션의 Flow(흐름)를 누가 쥐고 있느냐에 달려 있다.

프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에 필요한 코드를 짜 넣는 반면에,
라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다가 쓰는 것이라고 할 수 있다.

다시 말해, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측(사용자)에 전적으로 주도성이 있으며 프레임워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내재되어 있다. 프레임워크는 가져다가 사용한다기 보다는 거기에 들어가서 사용한다는 느낌/관점으로 접근할 수 있는 것이다.




profile
?

0개의 댓글