본문 바로가기
[이직 면접] 질의 응답

[Web 개발 기본] Framework이란 무엇인지 설명하세요.

by 막개발자 2020. 12. 29.

# 질의 응답 상황

[면접관]

지원자님 Spring Framework을 주로 사용하셨는데 여기서 Framework이란 무엇인지 간략하게 설명하세요.

 

[막개발자] 

Framework 이란 

설계의 기반이 되는 부분을 기술한
확장 가능한 기반 코드

 
사용자가 이 코드를 확장하는 데 필요한 라이브러리

이 두 가지 요소가 통합되어 제공되는 형태를 의미 합니다.
 
사용자는 이러한 Framework을 이용해서 
 
일정 수준 이상의 품질을 보장받는 코드를,

비교적 빠른 시간에 완성 및 유지 보수할 수 있는
환경을 제공해주는 솔루션 입니다.

 

 

# 상세 설명

 

    • **프레임워크(Framework)**는 소프트웨어 개발에서 특정 목적을 달성하기 위해 미리 정의된 구조와 규칙을 제공하는 재사용 가능한 코드의 집합입니다. 이를 통해 개발자들은 공통적으로 반복되는 작업을 효율적으로 처리하고, 프로젝트 개발 시간을 단축하며, 품질을 보장할 수 있습니다. 프레임워크는 주로 소프트웨어 아키텍처와 설계 원칙을 따르며, 특정 도메인이나 목적에 최적화되어 있습니다.
      • 미리 정의된 구조
        개발 작업을 위한 뼈대를 제공하며, 개발자는 이를 기반으로 애플리케이션을 구성합니다.
        예: MVC(Model-View-Controller) 패턴을 따르는 웹 프레임워크.
      • 재사용성
        코드와 설계를 재사용함으로써 개발 비용과 시간을 절감합니다.
        예: 데이터베이스 연결, 인증 시스템 등의 반복적인 작업을 위한 기능 포함.
      • 표준화된 방식
        일관된 규칙을 제공해 협업 및 유지보수가 용이합니다.
        예: 코드 작성 방식이나 파일 구조가 일정.
      • 확장성
        기본적인 기능을 제공하면서, 개발자가 이를 확장하거나 커스터마이징할 수 있도록 설계되어 있습니다.
      프레임워크의 종류
      • 웹 프레임워크
        웹 애플리케이션 개발에 특화된 프레임워크.
        예:
        • Django (Python): 빠르고 간결한 웹 개발.
        • Spring (Java): 강력한 엔터프라이즈 솔루션 제공.
        • Ruby on Rails (Ruby): 간단하고 직관적인 웹 개발.
      • 프론트엔드 프레임워크
        웹사이트의 사용자 인터페이스를 개발하는 데 초점.
        예:
        • React: 컴포넌트 기반 UI 개발.
        • Angular: 강력한 데이터 바인딩과 도구 제공.
        • Vue.js: 가볍고 유연한 UI 구축.
      • 백엔드 프레임워크
        서버 측 로직을 처리하고 데이터베이스와의 통신을 관리.
        예:
        • Express (Node.js): 경량의 웹 애플리케이션 프레임워크.
        • Laravel (PHP): PHP 개발을 위한 강력한 도구 모음.
      • 데스크톱 애플리케이션 프레임워크
        데스크톱 소프트웨어를 개발하는 데 사용.
        예:
        • Electron: 웹 기술로 데스크톱 앱 개발.
        • Qt: 크로스 플랫폼 GUI 애플리케이션 개발.
      • 모바일 애플리케이션 프레임워크
        모바일 앱 개발에 필요한 도구 제공.
        예:
        • Flutter: 크로스 플랫폼 모바일 앱 개발.
        • React Native: JavaScript로 네이티브 모바일 앱 개발.

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

      • 프레임워크: 개발자가 정해진 구조와 규칙에 따라 코드를 작성해야 함. 개발의 흐름을 프레임워크가 제어(제어의 역전, Inversion of Control).
      • 라이브러리: 개발자가 필요할 때 호출하는 방식으로 동작하며, 개발자가 전체 흐름을 제어.

예: React는 UI 라이브러리로 간주되며, Angular는 프레임워크로 간주됩니다.

장점

      • 생산성 향상: 반복 작업 감소.
      • 코드 품질 보장: 검증된 설계를 따름.
      • 협업 용이: 표준화된 구조.

단점

    • 학습 곡선: 복잡한 프레임워크는 학습에 시간이 걸릴 수 있음.
    • 제한적 자유도: 제공된 규칙을 따르지 않을 경우 호환성 문제 발생 가능