개발자도 헷갈리는 용어 – 프레임워크와 라이브러리

developer-tools

개발자들은 최대한 적은 비용으로, 효율적인 개발을 하기 위해 프레임워크와 라이브러리를 사용하게 됩니다. 하지만 용어를 사용하면서도, 실제 해당 도구를 사용하면서도 차이가 무엇인지 명확하게 설명하기는 어렵기도 합니다. 막연하게 이해하고 있는 두 가지 개발 용어를 정리해 봅니다.

프레임워크(Framework)

프레임워크란 ‘frame’이라는 단어에서도 눈치챌 수 있듯이 원하는 기능을 구현하기 위해 가이드를 해주는 ‘뼈대’를 의미합니다. 예를 들어 웹 서버 개발을 위한 프레임워크의 경우 필수적으로 어드민 페이지, DB 연동, URL 정의 등의 기능들을 제공해야 할 것입니다. 프레임워크는 이러한 기능을 제공하는 기본적인 구조와 작성 규칙을 정해서 개발자에게 가이드로 제공하고, 개발자들은 이러한 뼈대 위에서 정해진 규칙을 따라 코드를 작성합니다. 그리고 이러한 규칙을 잘 따라서 작성을 하게 되면, 뒷단의 복잡한 부분까지 직접 코드를 구현할 필요 없이 훨씬 손쉽게 원하는 프로그램을 개발할 수 있게 되죠.

프레임워크

라이브러리(Library)

라이브러리란 유용하게 쓰일 수 있는 기능을 구현해놓은 코드, 함수들의 모음을 의미합니다. 원하는 정보를 얻기 위해 도서관에 가서 책을 빌리듯, 개발자들은 원하는 기능을 쉽게 구현하기 위해 전세계의 똑똑한 개발자들이 미리 구현해놓은 라이브러리를 설치해 쓸 수 있습니다. 파이썬으로 데이터 분석을 하기 위해서는 pandas라는 라이브러리를 많이 사용하는데, 이 라이브러리를 활용하면 코드 한 줄 만으로도 csv 파일을 읽어들이고 판다스 데이터프레임 객체로 만들어 데이터 분석을 위한 준비를 할 수 있습니다.

두 가지 도구의 공통점과 차이점

  • 공통점: 개발 속도가 빨라지고, 더 쉬워진다.

두 가지 도구는 누군가 미리 작성해놓은 코드들입니다. 그리고 우리는 더 빨리 원하는 기능이나 소프트웨어를 구현하기 위해 이 도구들을 사용합니다.

  • 차이점: 제어 흐름의 주체가 개발자인가, 도구인가?

개발자는 라이브러리를 사용할 때 내가 원하는 기능을 구현하기 위해 라이브러리의 함수를 이용합니다. 해당 함수가 필요한지 개발자가 능동적으로 판단하고, 활용하는 것입니다. 코드의 흐름을 제어하는 주체가 개발자인 셈이지요.

반면 프레임워크를 사용할 때 개발자가 짜는 코드는 프레임워크가 동작시키는 프로그램 위에서 수동적으로 동작합니다. 전반적인 프로그램 동작의 흐름은 프레임워크에 이미 구현이 되어있고, 개발자의 코드는 그 흐름에 이용되는 것입니다. 이러한 개념을 ‘제어의 역전'(Inversion of Control)이라고 표현하기도 합니다. 일반적인 경우라면 구현하는 주체가 흐름을 주체해야하지만, 프레임워크에는 애플리케이션이 사용자가 작성한 코드를 호출해서 직접 애플리케이션의 흐름을 제어하는 개념이 적용되어 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *