이름이 있는 프로그램 이야기를 하다보면, 엔진, 솔루션, 플랫폼 등의 용어들을 사용하는데 물론 각자 다르겠지만 비전문가인 나에게는 혼용해서 사용되는 느낌이라 용어를 정리해보았다.
엔진(Engine)
특정 작업을 수행하거나 기능을 제공하는 것
- 프로그래밍 언어의 코드를 실행 or 특정 기능을 최적화
- 예시
- 코드 실행: 자바스크립트 엔진(V8, SpiderMonkey 등)은 자바스크립트 코드를 실행
- 성능 최적화: 엔진은 JIT(Just-In-Time) 컴파일 등의 기술을 사용하여 코드를 더 빠르게 실행할 수 있도록 최적화
- 특정 기능 처리: 게임 엔진(Unity, Unreal Engine 등)은 게임 개발에 필요한 다양한 기능(그래픽 렌더링, 물리 엔진, 사운드 등)을 제공
솔루션 (Solution)
특정 문제나 요구를 해결하기 위해 사용되는 포괄적인 소프트웨어 제품/시스템
- 여러 구성 요소를 포함할 수 있음
- 특정 비즈니스 문제나 기술 문제를 해결하는데 초점
- 구성요소: 하드웨어, 소프트웨어, 서비스 등 여러 구성 요소를 포함할 수 있음
소프트웨어가 실행되거나 개발될 수 있는 기본 환경 제공
- 하드웨어/소프트웨어 인프라를 포함하여 애플리케이션이 실행되거나 서비스가 제공될 수 있도록 지원
- 특징
- 기반 환경: 소프트웨어 실행을 위한 기본 환경을 제공. (예: 운영체제(Windows, macOS, Linux)는 소프트웨어 플랫폼)
- 개발 및 실행: 개발자가 애플리케이션을 개발, 배포, 실행할 수 있는 환경을 제공 (예: Android와 iOS는 모바일 애플리케이션 개발을 위한 플랫폼)
- 확장성: 다양한 애플리케이션과 서비스가 실행될 수 있도록 확장 가능
서로와의 관계
- 엔진은 플랫폼의 구성 요소로 작동할 수 있음
- 예: V8엔진은 구글 크롬 브라우저(플랫폼)의 자바스크립트 실행 엔진
- 예: Unity엔진은 Unity플랫폼의 일부로 게임 개발에 필요한 핵심 기능 제공
- 솔루션은 플랫폼 위에서 실행될 수 있음
- ‘위에서 실행된다’: 플랫폼이 마련한 환경과 자원을 활용해 솔루션이 동작한다는 것
- 예: 클라우드 솔루션은 클라우드 플랫폼(AWS, Azure 등) 위에서 제공
- 엔진은 솔루션의 구성요소로 포함될 수 있음
- 예: 웹 애플리케이션 성능 최적화 솔루션은 V8엔진을 활용하여 Javascript 코드를 최적화 할 수 있음
- 예: 게임 개발 솔루션은 게임 엔진(Unity, Unreal Engine)을 포함하여 개발자가 게임을 제작할 수 있는 도구와 환경을 제공
관계를 정리하면
- 플랫폼은 엔진과 솔루션을 포함할 수 있음
- 솔루션은 특정 요구를 충족하기 위해 엔진과 플랫폼을 활용할 수 있음