프레임워크(Framework) vs 라이브러리(Library) vs 플랫폼(Platform)
스프링을 공부하기 앞서 프레임워크(Framework)에 대해 공부하게 된다. 프레임워크를 공부하다 보면 함께 나오는 용어가 있다. “라이브러리(Library)”와 차이점을 비교하라고 한다.
라이브러리는 자바를 공부하며 쉽게 접해왔다. 예를 들어, 값을 입력 받기 위해 Scanner 클래스 내부에 있는 next() 메서드를 사용한다거나, 객체의 형태를 문자열로 바꿔주기 위해 toString() 메서드 등을 사용하는데 이러한 메서드들이 모두 자바 표준 라이브러리 내부의 메서드들이다.
개발자에게 편리하게 개발할 수 있도록 기능을 제공하는 라이브러리처럼 앞으로 공부할 프레임워크 또한 개발자에게 기능을 제공하기 위한 도구 중 하나이다. 유사한 기능을 제공하기에 프레임워크와 라이브러리를 헷갈려하는 경우가 많다. 그래서 각각 어떤 개념을 가지고 있는지에 대해 공부하기 위해 이 글을 작성한다.
더불어 애플리케이션의 개발과 실행을 위한 전체적인 환경을 제공하는 플랫폼(Platform)의 개념에 대해서도 함께 알아보고자 한다.
프레임워크(Framework)
프레임워크(Framework)는 용어의 이름을 생각하면서 개념을 이해하면 조금 더 쉽게 다가온다. Frame은 직역했을 때 ‘구조, 틀’을 의미한다.
프레임 워크는 말 그대로 틀(frame) 내부에서 작업(work) 할 수 있도록 틀을 제공하는 것이다.
즉, 프레임워크는 개발자가 만들고자 하는 애플리케이션의 뼈대를 제공해주며 이 뼈대에는 이미 구현된 기능들이 포함되어 있어 개발자는 제공된 틀을 기반으로 필요한 기능을 추가하고 확장하면 되는 것이다.
액자를 생각해보았을 때 액자 사이즈에 맞는 사진을 넣어야 사진이 알맞게 들어간다. 만약 사진이 액자보다 크다면 사진을 넣을 수 없다. 이처럼 프레임워크를 사용하게 되면 개발자는 프레임워크에 정의된 규칙에 따라 애플리케이션의 핵심 비즈니스 로직을 작성한다.
프레임워크에서 애플리케이션의 제어 흐름은 프레임워크에 있다.
✨ 핵심 비즈니스 로직이란? 애플리케이션의 핵심 기능 또는 핵심 업무 처리 로직을 의미한다. 이는 애플리케이션의 핵심 목적에 해당하는 부분으로, 애플리케이션의 핵심 비즈니스 요구사항을 해결하기 위한 로직을 의미한다.
프레임워크 사용 이유
- 개발 생산성 향상 : 원하는 기능 구현에만 집중하여 빠르게 개발 할 수 있도록 기본적으로 필요한 기능을 일부 기본 작업을 자동화하고 표준화하여 갖추고 있다.
- 일관상과 표준화 : 틀에 맞춰 작업을 하다보니 일관된 방식으로 코드를 작성하게 되고 구조를 계속해서 유지할 수 있게 된다. 이는 유지 보수를 용이하게 만들어준다.
프레임워크 사용 단점
- 틀을 벗어나기 어려워서 자유로운 개발 및 유연한 개발을 못한다.
- 프레임워크에 대한 이해가 필요하다.
라이브러리(Library)
라이브러리의 뜻은 모두 알고 있듯 직역하면 도서관이다. 처음에는 왜 라이브러리일까 라고 생각했는데 이해하고 나면 그럴 듯 하다.
도서관에서 수 많은 책들이 있고 책에는 정보가 담겨 있다. 그 책을 읽고 이해하고 내가 얻은 지식을 적용하는 것은 도서관에서 책을 고른 사람의 몫이다.
이처럼 라이브러리는 개발에 필요한 기능을 미리 구현해 놓은 코드의 집합체이다. 코드가 책인 셈이다. 라이브러리 내의 코드들은 재사용이 가능하기 때문에 개발자는 자신의 코드에 라이브러리 내의 기능을 호출하여 사용할 수 있다.
라이브러리는 특정 기능만을 제공하고 개발자가 직접 선택하여 어떻게 사용할 지 정하게 된다. 라이브러리 내의 어떤 기능을 어떻게 사용할지는 개발자가 정하는 것이고 이를 활용하여 원하는 것을 개발자가 만들 수 있으면 된다.
라이브러리에서 애플리케이션의 제어 흐름은 개발자에게 있다.
라이브러리 사용 이유
- 라이브러리는 재사용 가능한 코드의 집합이기 때문에 시간 절약을 할 수 있으며 코드의 일관성을 유지할 수 있다.
- 다양한 기능과 기술을 제공하며 개발자는 필요에 따라 이를 선택할 수 있다.
라이브러리 사용 단점
- 라이브러리를 사용하면 사용된 라이브러리에 대한 의존성 충돌이나 버전 관리에 대한 문제가 발생할 수도 있다.
- 라이브러리를 사용하면 추가적인 종속성이 생길 수 있으며 크기를 증가시키고 복잡성을 증가시킬 수 있다.
- 사용을 위해 라이브러리에 대한 학습이 필요하다.
플랫폼(Platform)
플랫폼(Platform)이라 하면 승강장은 지하철의 지하승강장 플랫폼이 먼저 떠오를 것이다. 이처럼 온라인에서 생산 및 소비, 유통이 이루어지는 장소를 플랫폼이라고 한다.
플랫폼은 애플리케이션을 개발하고 실행하기 위한 하드웨어와 소프트웨어의 조합이다. 플랫폼은 개발 환경을 구성하고 애플리케이션을 실행하기 위해 필요한 기반을 제공한다.
예를 들어, Android나 iOS와 같은 모바일 플랫폼은 모바일 애플리케이션 개발과 실행을 위한 하드웨어와 운영체제, 개발 도구 등을 포함한다. 플랫폼은 개발자가 특정한 운영체제나 환경에서 애플리케이션을 개발하고 실행할 수 있도록 지원한다. 또한, 플랫폼은 애플리케이션을 배포하고 사용자들이 애플리케이션을 다운로드하고 실행할 수 있도록 도와준다.
✅ 프레임워크 VS 라이브러리 VS 플랫폼의 차이점
역할 | 사용방식 | 의존성 | |
프레임워크 | 구조와 규칙 제공 | 제공하는 규칙과 인터페이스에 따라 구현 | 개발자는 프레임워크의 규칙과 인터페이스에 따라 개발을 진행 |
라이브러리 | 재사용 가능한 코드의 모음 | 필요에 따라 라이브러리의 함수, 클래스, 모듈 등을 개발자 직접 호출 | 필요한 기능 라이브러리에서 선택적으로 사용 |
플랫폼 | 소프트웨어 개발과 실행을 위한 기반 및 환 | 개발자는 플랫폼을 기반으로 애플리케이션을 개발하고 실행 | 플랫폼 위에서 애플리케이션을 개발하고 실행 |
스프링을 배우기에 앞서 프레임워크의 특징과 스프링의 특징을 배우고 있다. 이전에 객체지향프로그래밍에 대한 공부와 이해가 부족했나 싶기도 하고 또 새로운 용어들을 마주하게 되어 검색창이 오억개 켜져있다. ㄷㄷ
진짜 쉽지 않고 시간도 매일 매일이 너무 부족하다. 어떡하지...? 오늘 블로깅을 건너뛰고 싶었지만 그러면 정말 안될 것 같아 하고 잔다. 가면 갈 수록 조금씩 나태해 지는 것 같아 스케줄 표를 짜서 사용하는 습관을 들이도록 해야겠다는 생각이 든다.
6월이다. 시간 진자 빠르다... 화이팅해야지 : )