프레임워크 vs 라이브러리

김대경·2022년 4월 18일
9

스프링 공부 과정

목록 보기
2/6

개요

컴퓨터 프로그래밍에서, 소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다. -위키백과

라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴, 클래스, 값, 자료형 사양을 포함할 수 있다 - 위키백과

사전적인 정의는 위와 같다. 하지만 학부생을 거쳐 개발자로 취업을 한 지금 프레임워크가 뭐야? 라이브러리가 뭐야? 둘의 차이가 뭐야? 라고 여쭤보시는 대표님의 질문에 정확히 설명할 수 없었고, 대표님은 프레임워크의 장단점, 라이브러리의 장단점, 둘의 차이점과 비교 등 다양한 과제를 내 주셨다.
이번 기회에 정확히 머릿속에 집어넣어야겠다.

공부하며 작성한 포스트입니다. 정확한 내용이 아닐 수 있습니다.
정확한 내용이 아니거나 내용이 부실하다면, 알려주시면 감사하겠습니다 😀


프레임워크? 라이브러리?

일반적으로 초보 개발자는 "프레임워크", "라이브러리" 라는 개념을 혼동하기 쉽다고 한다. 정확히는 머릿속에 정확히 정립이 되어있지 않은 상태에서 사용한다고 한다.

프레임워크와 라이브러리는 일반적인 문제를 해결하는 데 사용하는 다른 사람이 작성한 코드이다.
예를 들어, DRY원칙에 의해 다음과 같은 재사용 가능한 코드를 작성했다고 생각해보자.

Public DRY{

    private int a;
    private int b;
  
    public DRY(int a, int b){
    this.a = a;
    this.b = b;
    }
    Public int sum() {
        System.out.println("덧셈");
        result = this.a+this.b;
        return result;
    }

    public int sub(){
        System.out.println("뺄셈");
        result = this.a+this.b;
        return result
    }
}

이처럼 단순한 코드도 라이브러리가 될 수 있다. 하지만 프레임워크는 Spring, Django, Vue.js 등, 일반적으로 어떤 프로젝트에 사용하는 뼈대가 될 수 있는 코드의 집합을 일컫는다고 말할 수 있다.

차이점

여러 비유로 설명할 수 있겠지만, 글을 쓰는 지금은 구글링을 하다가 어떤 비유를 보고 단박에 이해했다.

프레임워크

집을 짓기 위한 과정을 라이브러리와 프레임워크에 비유해보면, 프레임워크는 모델하우스를 짓는것에 비유할 수 있다. 모델하우스의 소파의 위치, 의자와 책상의 위치, 방의 용도 등. 우리가 수정할 수 있는 범위는 제한적이다. 주방의 위치, 기둥의 개수, 방의 개수 등 집을 이루고있는 굵직한 뼈대는 수정할 수 없다. 사용자는 모델하우스가 제공하는 청사진 안에서"만" 움직일 수 있다. 프레임워크가 제공하는 틀에 따라 코드를 작성해야 하는것이다. 즉, 통제권은 사용자가 아닌 프레임워크가 쥐고 있다.

라이브러리

하지만 라이브러리는 이케아에서 산 재료로 가구를 조립하는것에 비유할 수 있다. 집에서 사용할 가구를 조립하거나 만들기 위해 벌목부터 시작해서 목공을 하거나, 가죽을 얻기위해 사냥을 하고싶은 사람은 거의 없을것이다.🙄 그래서 이케아 혹은 가구점에 가서 기본적인 재료를 사서 입맛대로 조립하고 배치할 수 있다. 재료의 선택권이나 통제권은 사용자에게 있는 것이다.

제어역전?

프레임워크와 라이브러리를 리서치, 검색하다보면 "제어역전" 이라는 개념이 계속해서 나온다.
제어역전이란, 개발자가 해왔던 일(제어)을 프로그램. 즉, 프레임워크가 대신 해준다는 의미이다. 스프링과 같은 프레임워크를 사용하다보면, 스레드를 직접 만들고, 객체의 생명주기를 직접 코딩하진 않는 것 처럼. 원래 개발자가 가지고 있어야 할 객체의 제어권을 프레임워크가 대신 해준다는 의미로,
"제어권이 역전되었다" 라는 뜻에서 제어역전 이라고 한다.

결론

  1. 프레임워크와 라이브러리는 둘 다 코드 작성에 도움이 되는 타인이 작성한 코드의 집합이다.
  2. 프레임워크는 프로그램이 필요한것을 개발자에게 알려줌으로써 제어권을 역전하고, 라이브러리는 개발자가 필요할 때 마다 설치, 혹은 호출함으로써 개발자가 능동적으로 사용하게 된다.
profile
무언가를 개발한지 4년이 되어가는 중입니다 :) With @KSASolution

1개의 댓글

comment-user-thumbnail
2023년 11월 3일

프레임워크와 라이브러리의 차이점을 이해가 가도록 정리해주셔서 감사합니다.

답글 달기