프레임워크

기술노트

프레임워크 (Framework)

프레임워크(Framework)는 소프트웨어 개발을 위한 뼈대 또는 기반 구조를 의미합니다. 특정 목적의 애플리케이션을 개발하는 데 필요한 기본적인 구조, 라이브러리, 도구, 규칙 등을 제공하여 개발자가 비즈니스 로직 구현에 집중할 수 있도록 돕습니다.


🧱 프레임워크의 주요 특징 및 역할

  • 제어의 역전 (IoC, Inversion of Control) : 프레임워크의 가장 큰 특징 중 하나로, 객체의 생성, 생명주기 관리 등 제어권이 개발자에서 프레임워크로 넘어가는 설계 원칙입니다. 개발자는 프레임워크가 정한 규칙에 따라 코드를 작성하고, 프레임워크가 필요할 때 개발자의 코드를 호출합니다.
  • 확장성 : 프레임워크는 기본적인 구조를 제공하지만, 개발자가 필요한 기능을 추가하거나 확장할 수 있도록 유연성을 제공합니다.
  • 재사용성 : 공통적으로 사용되는 기능들을 미리 구현해 놓아 개발자가 반복적인 작업을 줄이고 코드 재사용성을 높일 수 있습니다.
  • 생산성 향상 : 개발에 필요한 많은 부분을 프레임워크가 처리해주므로, 개발자는 핵심 비즈니스 로직 구현에 집중하여 개발 속도를 높일 수 있습니다.
  • 표준화된 구조 : 애플리케이션의 구조를 표준화하여 여러 개발자가 협업하기 용이하며, 코드의 일관성을 유지할 수 있습니다.

💡 프레임워크와 라이브러리의 차이

프레임워크와 라이브러리의 가장 큰 차이점은 제어 흐름(Flow)에 대한 주도권이 누구에게 있느냐입니다.

  • 프레임워크 : 프레임워크 자체가 전체적인 제어 흐름을 가지고 있으며, 개발자는 프레임워크가 정해놓은 틀(구조) 안에서 필요한 코드를 작성합니다. 프레임워크가 개발자의 코드를 호출하는 방식입니다.
    • 예시 : Spring (Java), Django (Python), Angular (JavaScript), Ruby on Rails 등
  • 라이브러리 (Library) : 개발자가 전체적인 프로그램의 흐름을 제어하며, 필요한 시점에 라이브러리의 기능을 능동적으로 호출하여 사용합니다. 즉, "개발자가 라이브러리를 호출한다"고 표현할 수 있습니다.
    • 예시 : jQuery, React (UI 라이브러리), NumPy, Pandas 등

프레임워크는 라이브러리를 포함하는 더 큰 개념으로 볼 수 있으며, 프레임워크는 개발자의 고민을 덜어주고 애플리케이션의 구조적 설계를 튼튼하게 만들어주는 효과가 있습니다.


💡 개발자 핵심 Point

  • 프레임워크는 특정 분야의 애플리케이션 개발을 위한 강력한 도구이며, 개발 생산성과 유지보수성을 크게 향상시킵니다.
  • 프레임워크를 사용할 때는 프레임워크의 설계 철학(예: IoC, DI)과 핵심 개념을 이해하는 것이 중요합니다.
  • 특정 프레임워크에 대한 경험이 있다면, 해당 프레임워크의 장단점, 핵심 기능, 그리고 실제 프로젝트에서 어떻게 활용했는지 자신의 경험과 연결하여 설명할 수 있어야 합니다.