Framework란?

소프트웨어 개발에서 특정 유형의 응용 프로그램을 구축하는 데 도움을 주는 미리 정의된 구조나 템플릿을 말한다.
프레임워크는 개발자가 코드를 작성할 때 특정 규칙이나 디자인 패턴을 따르도록 유도하며, 반복적인 작업을 단순화하여 효율적인 개발이 가능하도록 지원한다.
EX)
Django(Python)
- 웹 애플리케이션을 빠르게 개발할 수 있도록 돕는 프레임워크
- DB연동, 인증 시스템, 관리자 페이지 등을 자동으로 제공하여 이를 직접구현할 필요 없게 만든다
React(JavaScript)
- UI를 만들기 위한 자바스크립트의 라이브러리
- 상태관리 및 데이터 바인딩 기능을 제공하여 동적인 웹 어플리케이션을 개발할 수 있다.
TensorFlow(Python)
- 딥러닝 모델을 구축하고 훈련시키는데 사용되는 오픈소스 라이브러리이다.
프레임워크 == 라이브러리?
그렇다면 이쯤에서 라이브러리와 프레임워크가 같다고 착각할 수 도 있다.
하지만 사용 방식과 개념에서 중요한 차이가 있다.
라이브러리
- Control Flow(제어의 흐름)
- 개발자가 필요할 때마다 라이브러리를 호출하고 사용하는 방식이다.
- 즉, 개발자는 프로그램의 흐름을 완전히 제어하면서 필요할 때마다 기능을 호출한다
- Ex) Numpy는 특정 계산을 할 때마다 호출하여 사용한다.
프레임워크
- Inversion of Control(제어의 역전)
- 프레임워크가 개발자의 코드 흐름을 제어하고, 개발자는 프레임워크에 필요한 부분을 추가하고 수정하는 방식
- 프레임워크는 코드의 구조와 흐름을 결정하고 그에 맞춰서 개발자가 개발하는 방식이다.
- Ex) Django는 웹 어플리케이션의 흐름을 정의하고 개발자는 그 안에 필요한 기능만 구현한다.
즉)
라이브러리는 필요할때 가져오는 도구
프레임워크는 개발방식과 흐름을 규정하는 틀
으로 정리 할 수 있다.