프레임워크란?
프레임워크의 사전적인 의미를 찾다 보면 공통적으로 나오는 말이 있다.
프레임워크라는 명칭만 보아도 Frame(틀) + Work(일)의 합성어임을 볼 수 있는데, 한 마디로 일하는데 기본적인 틀을 제공해준다는 것이다.
정말 간단하게 정리하면 '개발을 도와주는 도구'라고 볼 수 있다.
왜 사용할까?
프레임워크가 개발하는데 도움을 준다는데 어떤 도움을 주는것일까?
그렇다면 장점만 있을까?
물론 장점만 있다면 좋겠지만, 단점도 존재한다.
그 외의도 몇몇 세세한 단점들이 존재한다.
대표적인 프레임워크들
- BE
- JAVA - Spring(스프링)
- Python - Django(장고)
- Ruby - Ruby on Rails
- FE
- Angular
- Vue
라이브러리란?
라이브러리는 Library(도서관)의 의미대로 보자면, 도서관에서 필요한 책을 뽑아 볼 수 있듯, 프로그래밍할 때 필요한 기능들을 빼와서 사용할 수 있도록 만들어져있는 코드와 리소스의 모음이다.
일반적으로 함수, 클래스, 모듈, 템플릿 등의 형태로 제공되며, 개발자가 프로그램을 더 빠르고 효율적으로 개발할 수 있도록 도와준다.
(설명만 보면 프레임워크와 큰 차이는 없어보인다)
프레임워크와 라이브러리의 가장 큰 차이는 "제어 흐름"의 권한이 어디에 있는가이다.
제어의 역전(Inversion of Control)이라는 개념이 있는데,
프레임워크는 해당 개념을 따르고 있어 프로그램의 제어 흐름이 프레임워크에 의해 결정되며,
라이브러리는 해당 개념을 따르지 않아 프로그램을 작성할 때 개발자가 코드를 작성하고 실행 흐름을 제어한다.
한마디로 프레임워크와 라이브러리 둘 다 개발자의 개발을 도와주는 것들이나, 프레임워크는 제어권을 직접 가져와 적극적으로 개발에 도움을 주는 것이고, 라이브러리는 개발자가 필요할때 기능을 제공해주는 좀 더 수동적인 도움을 제공한다.