2019. 7. 25. 20:27ㆍGo to 용어천재
프레임워크 > 라이브러리
Framework와 Library의 차이점을 명확하게 알아보려 한다.
이 두 가지는 서로 다르지만, 관련이 없지는 않다.
Framework안에 Library가 속해있는 느낌이다.
우선, Library는 고유의 기능을 가진 함수의 최소 단위. 또는 그런 함수들의 집합이다.
종류로는 표준라이브러리, 사용자 라이브러리가 있다.
표준라이브러리는 언어별로 제공하는 기본 함수이다. java, c#에서 sdk라 불리는 클래스별 명세서같은 것!
사용자라이브러리는 사용자가 직접 정의하는 함수이다. 오픈소스 라이브러리같은 것!
javascript의 대표적인 Library로 jQuery가 있다!
늘 써오던 jQuery가 라이브러리였군..!
Library는 이미 만들어져 있고, 어떤 기능을 수행하는 함수들이 모여있는 도구함이라고 보면 된다.
내가 모든 기능을 다 만들 수 없으니, 많이 사용되는 함수들을 미리 만들어서 모아두고 불러쓸 수 있게 도구화 해둔 것!
그 도구를 사용하기 위해서, 클래스 또는 패키지를 import 하거나, 외부 경로를 cdn방식으로 호출하는 방법이 있는 것이다.
Library는 굉장히 많기 때문에, 내가 만드는 프로그램에 필요한 라이브러리들을 적절히 조합해서 사용할 줄 아는 노하우가 필요하다.
Framework는 Library들과 다른 Framework를 조합시킨 맞춤형 모듈이다.
이게 말이야 방구야...
결국, Framework도 하나의 도구이다. 하지만 Library와 다른점은, 기능이 독립적으로 존재하지 않고 서로 연관이 있다는 것이다.
Framework는 효율적인 개발을 위해 전체 프로그램의 로직, 방법론을 최적화해둔 것이다.
즉, Framework는 어떤 프로그램이 완성될 수 있는 최적의 개발환경을 제공하는 도구이다!
살짝 과장한 예시를 들자면, 대표적인 웹 프레임워크인 Spring의 사용법에 맞춰 개발하면 웹 사이트를 하나를 뚝딱 만들 수 있다.
물론 설정파일이라는 엄청난 장매물을 넘어야하지만...^^
Framework에는 Library + Framework + DB작업 + 설정정보 등 실행 플랫폼의 반복되는 작업을 알아서 수행하는 기능이 있다.
그래서, Framework를 사용하면 개발자는 실행 플랫폼의 작업을 신경쓰지 않고 개발할 수 있다.
종류로는 Spring, .NET, MyBatis, Hibernate, Django(Python) 등이 있다.
프레임워크, 라이브러리 써야할까?
Framework, Library 둘 다 장단점을 가진다.
우선 단점은,
- 사용하지 않을 기능까지 포함되어 쓸데없는 자원의 낭비가 생기고, 실행 속도가 느려진다
- 사용법이 정해져있기 때문에 내가 원하는데로 통제하기가 힘들다
- 사용법의 학습과 세팅시간이 오래 걸린다
정도가 있다. 그렇다면 이런 단점에도 불구하고 이것들을 사용해야 하는 이유가 되는 장점으로는,
- 잘만쓰면 개발시간을 단축해준다
- 재사용이 가능하다
- 이미 검증된 기능이므로 직접 개발하는 고민들을 줄여준다
편리하지만 넘나 무거운 이 도구들... 과연 어떨 때 사용하는 것이 좋을까?
"속도와 성능이 중요한 서버는 native로 개발하고,
나머지의 경우 필요한 기능을 적절히 제공하는 Framework와 Library를 이용하자"
속도가 중요한 기능만 직접 개발하고, 나머지는 편리한 도구를 사용하는 것이 좋다!
이 도구들을 사용하는 것이 개발 생산성을 늘릴뿐만 아니라 나중에 유지보수를 생각하더라도 좋다고 본다.
결국 개발자가 편리하라고 만들어둔거니까,
사용법을 열심히 익혀서 사용할 수 있을만큼 알차게 사용하자는 결론이다.
정 리
* Framework | Library | |
정의 |
*인터페이스의 집합 |
*API의 집합 |
특징 |
도구에 의해 내 코드가 사용된다 (=제어의 역전) |
내가 도구를 사용한다 (=능동적 제어) |
간단 비유 |
사용법이 정해져 있는 틀 |
도구들이 담겨있는 도구함 |
예시 |
Angular.js, Spring, Vue.js, django, Bootstrap |
jQuery, React, Backbone.js, TensorFlow, Moment.js |
*프레임워크 : 복잡한 정보들을 일정한 사고체계에 맞추어 분류하는 것
*인터페이스 : 필수적 코드 및 알고리즘, DB연동 기능
*API : 단순 활용이 가능한 함수
두 가지의 가장 큰 차이점은
기능의 흐름에 대한 제어권이 도구의 몫인지, 프로그래머의 몫인지의 여부이다.
'Go to 용어천재' 카테고리의 다른 글
#용어 키워드 정리 (0) | 2019.08.11 |
---|