2025-09-08 02:52
프레임워크
- 애플리케이션 개발의 뼈대를 제공하여 개발자가 비즈니스 로직에 집중하게 해주는 소프트웨어 환경입니다.
- 제어의 역전]은 프레임워크가 개발자의 코드를 호출하는 핵심 원리로, 라이브러리와의 가장 큰 차이점
- 프레임워크를 사용하면 개발 속도 향상, 표준화된 구조, 보안 강화 등의 장점이 있지만, 학습 곡선과 유연성 제한이라는 단점도 존재
프레임워크(Framework) 란, 특정 목적의 애플리케이션을 더 쉽고 효율적으로 개발하기 위해 미리 정해진 구조와 규칙, 그리고 필수 라이브러리들의 묶음을 제공하는 소프트웨어 환경입니다.
‘헐리우드 원칙(Hollywood Principle)‘에 비유. “Don’t call us, we’ll call you.” (먼저 전화하지 마세요, 우리가 필요하면 전화하겠습니다.)
- 일반적인 프로그래밍 (라이브러리 사용): 내 코드 → 라이브러리 호출
- 프레임워크 기반 프로그래밍: 프레임워크 → 내 코드 호출 (제어의 역전)
장점 (Pros) | 단점 (Cons) |
---|---|
개발 속도 향상 | 높은 학습 곡선 |
반복적인 작업을 자동화하고 필수 기능을 제공하여 핵심 로직 개발에 집중할 수 있습니다. | 프레임워크 고유의 구조와 동작 방식을 배우는 데 시간이 걸립니다. |
코드 표준화 및 유지보수 용이 | 유연성 및 자유도 제한 |
정해진 구조와 규칙을 따르므로 코드의 일관성이 높아지고, 다른 개발자가 코드를 이해하기 쉽습니다. | 프레임워크가 정해놓은 방식에서 벗어난 구현을 하기가 어렵습니다. |
보안 강화 | 성능 오버헤드 및 코드 블로트(Bloat) |
일반적인 보안 취약점에 대한 방어 로직이 내장되어 있어 더 안전한 애플리케이션을 만들 수 있습니다. | 사용하지 않는 기능까지 포함되어 있어 애플리케이션이 무거워질 수 있습니다. |
강력한 커뮤니티와 생태계 | 프레임워크에 대한 의존성 |
문제가 발생했을 때 참고할 수 있는 자료가 많고, 유용한 확장 기능이나 라이브러리를 쉽게 찾을 수 있습니다. | 프레임워크의 업데이트나 정책 변경에 따라 프로젝트가 영향을 받을 수 있습니다. |
구분 | 프레임워크 (Framework) | 라이브러리 (Library) |
---|---|---|
제어권 | 프레임워크가 내 코드를 호출 (제어의 역전) | 내 코드가 라이브러리를 호출 |
역할 | 애플리케이션의 뼈대, 전체적인 구조 | 특정 기능을 수행하는 도구의 모음 |
비유 | 집의 골조, 자동차의 섀시 | 망치, 스패너, 렌치 같은 공구 |
사용법 | 규칙에 맞춰 코드를 작성하고 끼워 넣음 | 필요할 때마다 함수를 가져와서 사용 |
예시 | Django, Spring, React, Angular | jQuery, Pandas, Requests |