'library'와 'framework'의 차이

강명모(codingBear)·2022년 2월 11일
0

whatIsThat?

목록 보기
1/4
post-thumbnail

references

위 글은 아래 글을 참고하여 작성했습니다.
참조글


MERN Clone Coding_blog-app
위 링크의 동영상을 보면서 clone coding을 하던 중 들었던 궁금증. libraryframework라는 말이 계속해서 등장하는데, 도대체 둘의 차이점은 무엇일까?


libraryframework의 가장 큰 차이점은 바로 지배의 전환(inversion of control) 이다. library를 쓸 때에 사용자는 통제 권한을 갖은 채 method를 불러 사용한다. 반대로 framework에서는 사용자에게 통제 권한이 없고 framework가 사용자를 호출한다. 아래 그림을 한번 살펴보자.

(출처: https://www.quora.com/What-is-the-difference-between-a-library-framework-and-a-language)
(출처: https://www.quora.com/What-is-an-example-of-a-framework)

컴퓨터 사이언스에서 library는 소프트웨어를 개발하기 위해 미리 작성해놓은 source의 모음이다. 위 그림에서 볼 수 있듯 사용자는 library에서 필요한 코드를 그때그때 꺼내서 사용한다. 반면 framework로 작업할 경우 해당 framework에 귀속되어 작업을 하게 된다.

비유를 들자면 library를 통한 작업은 이미 갖고 있는 집을 꾸미기 위해 이케아에 가서 필요한 가구를 사는 일과 비슷하다.

(출처: https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%BC%80%EC%95%84)

반면 framework를 통한 작업은 모델하우스를 짓는 일과 비슷하다. 이미 규격화된 설계도가 있고 세부적인 지시사항도 정해져 있어서 합의된 치수를 바꾸거나 내 마음대로 방 평수를 늘리는 등 사용자의 재량이 개입될 여지가 적다. 즉 framework라는 관리자가 언제, 어디에 사용자가 input을 할 수 있는지 알려주는 것이다.


summary

요약하자면 libraryframework는 둘 다 작업을 간소화하기 위해 미리 작성된 코드인 점에서는 동일하지만, framework는 사용자에게 무엇이 필요한지 입력하라고 요구를 하고(ex. Spring, Go, Django, Express, Angular, Vue.js etc.), library에서는 사용자가 필요한 기능을 자유롭게 꺼내서 쓰면 된다. 도서관에서 책을 빌리는 그림을 생각하면 될듯하다.(ex. axios, multer, bcrypt, path etc.)

profile
front-end 분야를 중점으로 공부 중!🐣

0개의 댓글