☑️ 프레임워크
프레임워크는 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것을 말합니다. 폴더명, 파일명 등에 대한 규칙이 있으며 라이브러리에 비해 좀 더 엄격합니다.
☑️ 라이브러리
라이브러리는 공통으로 사용될 수 있는 특정한 기능들을 모듈화한 것이며 폴더명, 파일명 등에 대한 규칙이 없고 프레임워크에 비해 자유롭습니다.
프레임워크와 라이브러리의 공통점은 "공통으로 사용될 수 있는 특정한 기능들을 모듈화"한 것입니다.
그렇다면 차이점에 집중해보겠습니다.
자세한 설명에 앞서 이해를 돕기 위해 비행기와 차로 예시를 들어 서울에서 부산까지 이동한다고 가정해 보겠습니다.
🛫 비행기(프레임워크) : 비행기를 이용하면 정해진 비행 루트와 절차에 따라 목적지까지 이동합니다. 직접 경로를 바꿀 수는 없지만 정해진 시스템과 규칙에 따라 효율적이고 신속하게 이동할 수 있습니다. 이처럼 프레임워크는 개발자가 큰 틀에서 정해진 규칙과 흐름을 따르도록 설계되어 있습니다.
🚗 차(라이브러리) : 차를 타고 이동할 경우 사용자가 원하는 경로로 자유롭게 운전할 수 있습니다. 고속도로를 이용할 수도, 국도를 따라갈 수도 있습니다. 이처럼 라이브러리는 개발자가 필요한 기능만 골라 쓰고 자기만의 방식으로 구성할 수 있도록 합니다.
이제는 위의 예시를 바탕으로 IoC 설명으로 넘어가보겠습니다.
☑️ 제어의 역전(Inversion of Control)
제어 흐름에 대한 주도권이 어디에 있는가를 기준으로 두 기술을 구분하겠습니다.
프레임워크는 제어 흐름의 주도권을 프레임워크 자체가 가집니다.
- 개발자는 프레임워크의 규칙에 따라 코드를 작성하며, 특정 시점에 프레임워크가 개발자의 코드를 호출합니다.
- 예를 들어 Spring은 개발자가 작성한 특정 메서드(ex: Controller 메서드)를 요청이 들어올 때 호출합니다.
라이브러리는 제어 흐름의 주도권이 개발자에게 있습니다.
- 개발자는 필요한 라이브러리의 기능을 골라 호출하고, 그 호출 시점과 방식도 모두 스스로 결정합니다.
- 예를 들어 Pandas 라이브러리는 개발자가 원하는 데이터프레임 작업을 호출하여 실행합니다.
특징 | 프레임워크 | 라이브러리 |
제어 흐름 주도권 | 프레임워크가 제어 | 개발자가 제어 |
유연성 | 정해진 규칙과 흐름을 따라야 함 | 개발자가 필요한 방식으로 자유롭게 사용 가능 |
예시 | Spring Framework, Angular, Vue.js, Django, Flask, Android | TensorFlow, Pandas, axios, jQuery |
'CS' 카테고리의 다른 글
[운영체제] 운영체제와 컴퓨터 시스템: 구조, 인터럽트, 시스템콜 정리 (0) | 2025.01.17 |
---|---|
[Network] TCP의 3 Way-Handshake 및 4 Way-Handshake 과정 (0) | 2025.01.09 |
[Network] MTU와 MSS와 PMTUD (0) | 2025.01.07 |
[Network] TCP/IP 4계층 정리 (1) | 2025.01.07 |
[Network] 네트워크 토폴로지(Network Topology) 정리 (1) | 2025.01.06 |