-
Framework와 Library의 차이각종 학습 요약/Spring 2022. 6. 14. 11:12
Framework와 Library의 차이
프레임워크와 라이브러리의 차이를 검색하면 흐름이 어쩌고 제어가 저쩌고 하는 이야기들을 많이 볼 수 있습니다.
이 글도 그러한 글인데, 스스로 이해를 했는지 검토하기 위해 자신의 언어로 나름 풀어보려는 시도입니다.프레임워크나 라이브러리나...
프레임워크나 라이브러리나 둘 다 개발자가 코딩하긴 마찬가진데 제어권이 어디에 따로 있다는 거야?
라는 생각을 저만 했던 건 아니겠지요...
일단 쉽게 알 수 있는 차이는 이것입니다.- 라이브러리 : 기능의 집합
- 프레임워크 : 기능과 규칙의 집합
라이브러리가 좀 더 간단하게 이해할 수 있기 때문에 라이브러리부터 설명을 해볼게요.
비유하자면, 라이브러리는 설명서가 존재하지 않습니다. 라이브러리는 도구예요. 그 도구를 작동시키는 사용법은 존재하지만, 설명서는 존재하지 않습니다. 전동 드라이버를 사용하는 법을 익혔다면, 그걸로 의자의 나사를 조이든, 컴퓨터 부품을 조이든, 코를 후비든 사용자의 의도와 목적에 따라 사용하면 되는 것입니다.이러한 특성을 '제어권이 사용자(개발자)에게 있다'라고 표현하더라구요.
반면 프레임워크는 목적이 존재합니다. 유용한 기능들도 제공하지만, 그것들은 무엇을 만드는 데에 적합할지 결정되어있습니다. 단순히 '자른다'는 기능이 필요하다면 커터칼이 필요한지 부엌칼이 필요한지 톱이 필요한지 알 수 없지만, '가구를 만든다'는 목적에서는 톱이 적당하며, 가구를 만들기 위해 톱을 사용하는 적당한 방법이 존재합니다. 프레임워크는 그 부분을 제한하는 것이고, 제한함으로써 목적에 충실하도록 하는 것이죠.
이케아에 가서 식탁을 사왔다면, 그 부품들로 식탁을 조립하는 방식과 도구들을 함께 제공하겠죠?
근데 만약 그걸 사온 사람이 "나는 침대 만들고 싶은데? 의자 만들고 싶은데?"라고 한다면, 어떻게든 가능은 하겠지만(어쩌면 아닐수도), 제공된 기능을 잘 활용하지도 못하는 것이고 목적에도 맞지 않는 사용일 거에요. 이 역시 반대로 말하면, 식탁을 만들기에 최적화된 작업 환경을 얻은 거라고 볼 수도 있겠죠.이러한 특성을 '제어권이 프레임워크에 있다'라고 표현하게 됩니다.
사족
저는 Spring이라는 웹프레임워크를 접하게 되면서 위의 질문에 직면했습니다. 스프링은 웹 프로젝트를 잘 구현하기 위한 목적으로 만들어져있는 프레임워크에요.
그러니까 스프링의 규약을 잘 따르지 않고 제멋대로 코딩하기 시작한다면 그것은 이상한 웹프로젝트를 만들어낼 수 있는 위험이 생기는 거겠죠?
반대로 Java와 웹과 HTTP를 잘 알고 Spring의 규칙을 따라 코딩한다면, 그건 '웹 프로젝트'가 확실히 될 수 있을 거란 이야길 거예요.
당분간 Spring 이야기를 많이 포스팅하게 될 것 같아 사족을 붙여보았습니다. :D'각종 학습 요약 > Spring' 카테고리의 다른 글
Spring: Proxy를 통한 Spring Data Repository 초기화와 설정 (2) 2022.07.01 Spring: AOP의 기본적인 개념 & SpringAOP 훑어보기 (2) 2022.06.20 Error Handling: Spring에서 Exception 대응하기 (0) 2022.06.17 Spring: 의존관계 주입(DI, Dependency Injection) 방식 네 가지 요약 (0) 2022.06.16 Spring: IoC와 DI를 예시로 쉽게 이해해보자 (0) 2022.06.16 Spring: Spring Container와 Bean (0) 2022.06.16