프레임워크
어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조로, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다.
ex)
∙ Java의 Spring
∙ Python의 Django
∙ JS의 Node.js
프레임워크의 장점
생산성 향상
- 코드의 재사용 가능성
∘ 공통적으로 사용되는 기능(로그인, 인증, 데이터베이스 연결 등)을 미리 제공하므로 개발자는 반복 작업을 줄이고 핵심 로직에 집중할 수 있습니다.
- 빠른 개발 기능
∘ 설정된 구조와 도구를 활용하면 초기 개발 속도가 빨라집니다.
표준화된 개발
- 일관된 코드 스타일
∘ 프로젝트에서 일정한 코딩 스타일과 규칙을 유지하도록 돕습니다.
- 모범 사례 준수
∘ 일반적으로 업계의 모범 사례를 반영하여 설계되었으므로, 이를 사용하면 자연스럽게 높은 품질의 코드를 작성할 수 있습니다.
유지보수성 향상
- 코드 구조 개선
∘ 프로젝트를 체계적으로 설계하도록 유도하여 유지보수가 쉬운 코드 구조를 제공합니다.
- 커뮤니티와 문서 지원
∘ 대부분의 프레임워크는 풍부한 문서와 활발한 커뮤니티를 가지고 있어 문제 해결이 용이합니다.
확장성과 유연성
- 모듈화된 설계
∘ 다양한 모듈을 사용하여 기능을 추가하거나 확장하기 쉽게 설계되어 있습니다.
- 다양한 플러그인 및 라이브러리 지원
∘ 필요에 따라 추가 기능을 간단히 통합할 수 있습니다.
보안 강화
- 내장 보안 기능
∘ 인증, 권한 관리, 데이터 보호 등과 같은 기본 보안 기능을 제공하여 보안에 대한 부담을 줄여줍니다.
- 보안 업데이트 지원
∘ 주기적으로 보안 취약점을 수정한 업데이트를 제공합니다.
디베깅 및 테스트 용이
- 내장 디버그 도구
∘ 로그 및 디버깅 도구를 제공해 문제를 쉽게 파악할 수 있게 합니다.
- 테스트 지원
∘ 단위 테스트와 통합 테스트를 위한 도구를 내장하고 있는 경우가 많아 테스트 주도 개발(TDD)을 촉진합니다.
프레임워크 VS 라이브러리
라이브러리
소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임. 즉, 특정 기능을 모아둔 코드, 함수들의 집합이며 코드 작성시 활용 가능한 도구를 의미한다.
쉽게 말해, 현실세계의 라이브러리(도서관)란 필요할 때마다 꺼내볼 수 있는 책(지식)들이 모여있는 곳이다.
프로그래밍에서의 라이브러리란 필요한 기능들이 모여있는 코드의 묶음이라고 생각할 수 있다.
- 라이브러리를 사용하는 애플리케이션 코드는 애플리케이션 흐름을 직접 제어한다.
∘ 단지 동작하는 중에 필요한 기능이 있을 때 능동적으로 라이브러리를 사용할 뿐이다.
- 프레임워크는 거꾸로 애플리케이션 코드가 프레임워크에 의해 사용된다.
∘ 프레임워크에는 분명한 제어의 역전(IoC) 개념이 적용되어 있어야 하낟.
∘ 애플리케이션 코드는 프레임워크가 짜 놓은 틀에서 수동적으로 동작해야 한다.