Framework와 Library는 서로 다른 개념이라는 것을 느낌적으로 알지만 막상 어떤 차이가 있는지 설명하려고 하면 명확하게 대답할 수 없었다. Django, Flask, Spring 등이 프레임워크에 해당하는 것이고 라이브러리는 모듈(?)로 만들어져 있어서 필요할 때 호출해서 사용할 수 있는 것으로 알고 있었는데 면접에 이런 질문이 나왔다고 생각했을 때 이런 답변은 적절하지 않은 느낌이 들었다. 비슷한거 같기도 하면서 다른 이 두가지에 대해 확실하게 정리하고 넘어가자.
Framework
프레임워크라는 단어는 뼈대를 의미한다. 프레임워크는 보통 클래스와 라이브러리가 합쳐진 형태를 말한다. 소프트웨어를 만들 수 있는 개발 환경을 일정 수준 갖추어 놓은 것으로 재사용성을 높여 개발 속도를 빠르게 한다.
Library
라이브러리는 단순히 활용가능한 도구들의 집합으로 클래스에서 호출하여 사용한다. 프레임워크를 이루고 있는 많은 모듈 중 하나로 볼 수 있다.
차이점
Framework vs Library 를 구글링하면 둘의 차이점을 도식화하여 비교한 자료를 많이 볼 수 있는데 그 중에 가장 많이 볼 수 있는 자료는 다음과 같다.
웹 애플리케이션을 만드는 코드를 작성한다고 하면 라이브러리는 내가 필요할때마다 호출하여 사용할 수 있다. 즉, 호출의 주체가 내 코드가 된다. 반면에, 프레임워크는 내 코드가 프레임워크 위에 올라가서 동작한다고 생각하면 된다. 프레임워크가 내 코드를 호출하는 것과 같은 의미인지는 명확하지 않지만 내 코드가 프레임워크를 호출하는 것은 분명히 아니다.
또한, App의 의존성이 두 개념을 구분하는 차이점이라고 볼 수 있다. App이 내가 짠 코드라고 하면 라이브러리는 App과 별개로 존재하는 것으로 내 코드에 import해서 사용할 수 있다. 만약에 App 코드를 만들 때 라이브러리가 수행하는 기능을 똑같이 구현해놓는다면 라이브러리없이도 App은 동작한다. 반면에, 프레임워크는 내가 짠 코드가 올려져있는 환경이므로 프레임워크없이는 앱이 동작할 수 없다.
Reference
'TIL' 카테고리의 다른 글
[Project] Westagram #1 (0) | 2021.04.07 |
---|---|
[TIL] #15. Django-Introduction (0) | 2021.03.30 |
[TIL] #13. __init__.py (0) | 2021.03.23 |
[TIL] #12. Absolute path & Relative path (0) | 2021.03.23 |
[TIL] #11. Module&Package (0) | 2021.03.23 |