프레임워크와 라이브러리는 둘 다 소프트웨어 개발을 돕기 위해 사용되는 개발 도구이다. 둘의 차이점은 사용 방식과 제어 흐름의 권한을 누가 가지고 있느냐에 있다. 쉽게 비유하자면 집을 짓는다고 했을 때, 프레임워크는 설계도와 구조도를 제공하는 것이고, 라이브러리는 공구나 자재를 제공하는 것과 비슷하다고 할 수 있다.
프레임워크는 사용자가 그들이 규정한 규칙과 방식을 따르며 정해진 틀에 맞게 개발을 진행한다. 즉, 프레임워크가 전체 흐름을 제어하며 개발자는 프레임워크가 요구하는 대로 코드를 작성하여 채워 나가는 방식으로 작업을 한다. 개발자가 아닌 프레임워크가 프로그램의 흐름을 제어한다는 점에서 "Inversion of Control(제어의 역흐름)"이라고도 한다.
라이브러리는 특정 기능을 수행하는 코드의 집합을 말하며, 개발자가 필요에 따라 호출하여 사용한다. 라이브러리는 개발자가 프로그램의 흐름을 제어하면서 필요한 시점에 적절한 라이브러리를 호출하여 사용한다.
이러한 관계를 간단한 그림을 통해 살펴보면 이해하기가 더 쉽다.
프레임워크는 "내 코드를 프레임워크 안에 쓴다"는 개념이고, 라이브러리는 "내 코드 안에 라이브러리를 쓴다"는 개념이 되는 것이다. 대표적인 프레임워크로는 Vue, Spring, Django 등이 있으며, 라이브러리에는 Lodash, Pandas, NumPy 등이 있다.
프레임워크와 라이브러리의 개념이 헷갈린 이유는 React 때문이다. 당연히 프레임워크라고 생각하고 있었는데 프레임워크가 아니라 라이브러리였다. React는 사용자 인터페이스(UI)를 구축하기 위한 라이브러리이며, 다른 라이브러리(React Router, Redux 등)과 함께 사용되어 마치 프레임워크처럼 확장되어 사용되는 것이었다.
추가) 좀 더 쉬운 설명으로는 라이브러리는 폴더명이나 파일명에 대한 규칙이 없고, 프레임워크는 있다는 것이다.
[개발 방법론] 폭포수(Waterfall) 방법론 vs 애자일(Agile) 방법론 (0) | 2024.05.09 |
---|---|
[개발 기법] TDD(Test-Driven Development, 테스트 주도 개발) (0) | 2024.05.06 |
재귀 함수/재귀적 호출(Recursion Function/Recursion Call) (0) | 2024.05.05 |
객체 지향 프로그래밍(Object-Oriented Programming, OOP) (0) | 2024.05.02 |
코드 리팩토링(Code Refactoring) (0) | 2024.05.01 |