코젤브

엔진 (Engine) vs 프레임워크 (Framework) vs 라이브러리 (Library) 본문

컴공의 일상

엔진 (Engine) vs 프레임워크 (Framework) vs 라이브러리 (Library)

코딩하는 젤리 2024. 11. 12. 12:58

컴퓨터 과학, 프로그래밍을 공부하다보면 엔진, 프레임워크, 라이브러리라는 개념을 접하게 됩니다.

이는 비슷해보이지만 각기 다른 의미를 가지고 있습니다.

 

컴퓨터 과학에서 엔진, 프레임워크, 라이브러리는 각기 다른 역할을 하며, 소프트웨어 개발의 다양한 요구 사항을 해결하기 위해 사용됩니다.

이들 간의 차이를 구체적으로 설명하면 다음과 같습니다.

 


 

1. 엔진 (Engine)

엔진은 특정 작업을 수행하는 핵심 컴포넌트기술의 중심부입니다. 엔진은 게임, 그래픽 렌더링, 데이터베이스, 검색 등 다양한 분야에 특화된 기능을 제공합니다.

  • 용도: 주로 복잡한 연산이나 시스템의 핵심 처리를 담당합니다.
  • 독립성: 엔진은 자체적으로 실행될 수 있으며, 다른 소프트웨어나 프레임워크와 통합하여 사용할 수 있습니다.
  • 예시:
    • UnityUnreal Engine 같은 게임 엔진은 물리 연산, 그래픽 렌더링, 오브젝트 관리 같은 핵심 기능을 제공합니다.
    • MySQL 엔진은 데이터베이스 작업을 처리하고 쿼리를 실행합니다.

 


 

2. 프레임워크 (Framework)

프레임워크는 소프트웨어 개발의 전체 구조를 제공하는 뼈대 역할을 하며, 특정 스타일이나 아키텍처를 따릅니다. 프레임워크는 코드의 흐름을 결정하고, 개발자가 그 틀 안에서 코드를 작성하도록 유도합니다.

  • 용도: 애플리케이션의 구조를 정의하고, 개발자가 플러그인처럼 코드를 삽입해 기능을 확장하게 만듭니다.
  • 제어의 역전 (IoC): 프레임워크는 코드의 실행 흐름을 제어합니다. 즉, 개발자는 프레임워크의 규칙에 따라 코드를 작성해야 하며, 프레임워크가 메인 실행 흐름을 담당합니다.
  • 예시:
    • ASP.NETSpring은 웹 애플리케이션을 구축하기 위한 프레임워크입니다.
    • ReactVue.js는 프론트엔드 웹 애플리케이션 개발을 위한 프레임워크입니다.

 


 

3. 라이브러리 (Library)

라이브러리는 특정 기능을 구현한 코드의 모음으로, 필요에 따라 가져다 쓰는 도구입니다. 프레임워크나 애플리케이션이 라이브러리를 호출하여 사용하며, 라이브러리는 호출된 코드만을 실행하고, 전체 코드 흐름을 제어하지 않습니다.

  • 용도: 재사용 가능한 함수나 클래스를 제공하여, 특정 작업을 쉽게 처리할 수 있도록 합니다.
  • 자유도: 개발자가 필요한 기능을 선택적으로 호출하여 사용할 수 있으며, 코드의 흐름을 제어하지 않습니다.
  • 예시:
    • LodashjQuery 같은 자바스크립트 라이브러리는 특정 기능(예: 배열 조작, DOM 조작)을 제공합니다.
    • NumPyPandas는 파이썬의 수학 및 데이터 처리 라이브러리입니다.

 


 

비교 정리

구분 역할 및 특징 제어 흐름 사용 예시
엔진 특정 작업(게임, 데이터베이스, 검색 등)을 위한 핵심 기술을 제공 독립적 실행 가능 Unity, MySQL 엔진
프레임워크 전체 구조와 흐름을 정의하며, 개발자가 특정 규칙에 따라 코드를 작성하도록 유도 프레임워크가 흐름을 제어 ASP.NET, Spring, React
라이브러리 특정 기능을 제공하여 필요할 때 호출 가능 개발자가 흐름을 제어 Lodash, jQuery, NumPy

요약하자면, 라이브러리는 필요한 기능을 가져다 쓰는 도구, 프레임워크는 애플리케이션의 틀을 제공하며 코드 흐름을 제어하고, 엔진은 특정 작업을 위한 핵심 시스템을 제공합니다.