저번 포스팅에서 프레임워크는 소프트웨어나 서버의 개발을 위한 틀이라고 설명했었는데, 그렇다면 우리가 npm패키지로 설치하는 라이브러디들은 무엇일까?
위키백과에서의 라이브러리에 대한 정의는 아래와 같다
주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이며, 여기에는 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.
내가 생각했던 라이브러리의 개념으로 미리 작성된 코드의 집합체를 포함하는 의미를 보여주고 있다.
다른 포스팅이나 검색결과에서 말하는 라이브러리 또한 비슷한 의미로 아래와 같은 설명을 한다.
다른 프로그램에서 사용할 수 있는 코드 모음이며, 이러한 코드 모음은 일반적으로 특정 프로그래밍 언어로 작성되어 있고, 기능적으로 연관된 일련의 함수, 클래스 및 메서드 등을 포함한다.
결국 라이브러리는 우리가 npm을 통해서 설치했을 때 가져오는 외부 코드 모음이며, 직접 코드를 작성하지 않고도, 간단하게 사용할 수 있게 누군가 만들어둔 도구라고 생각하면 쉬울 것이다.
라이브러리는 일반적으로 프로그램 개발을 더욱 효율적으로 만들어준다. 개발자는 이미 작성된 코드를 사용하여 동일한 작업을 수행할 필요 없이 라이브러리를 호출하여 해당 작업을 수행할 수 있다. 따라서 개발 시간을 단축시키고 오류 가능성을 줄여준다.
재사용성: 라이브러리를 사용하면 개발자는 기존 코드를 재사용할 수 있으므로 코드 양을 줄이고 개발 시간을 단축시킬 수 있다.
호환성: 라이브러리는 일반적으로 특정 프로그래밍 언어로 작성되므로 해당 언어와 호환된다. 각 언어에 맞게 그 언어로 작성된 라이브러리는 그 언어로 작성된 프로젝트 및 소프트웨어 코드에서만 사용할 수 있다.
업그레이드 및 유지보수: 라이브러리는 주로 다른 사람이 작성한 코드이기 때문에 업그레이드 및 유지보수가 수월하다.
라이브러리를 사용하면 내가 코드를 짤 필요없이 가볍게 가져다 쓸 수 있지만, 그에 따른 문제점도 야기한다.
라이브러리를 도구에 비유한다면 우리가 무언가 작업을 할 때 1개의 도구가 완벽한 모든 작업을 할 수 있지 않을 뿐 더러, 도구의 사용법을 따로 익혀야하며, 그 도구가 못하는 일은 다른 도구를 가져와서 처리해야하거나, 직접 수작업을 해야할 수도 있다.
생산성 향상: 이미 구현된 기능을 사용하므로 개발 시간을 단축시킬 수 있다.
재사용성: 기존의 코드를 재사용함으로써 유지보수성이 향상시킬 수 있다.
성능 향상: 라이브러리는 최적화된 코드를 제공하므로 성능 향상에 도움이 된다.
따로 학습 필요: 새로운 라이브러리를 사용하려면 해당 라이브러리에 대한 학습이 필요할 수 있고, 이에 따른 코스트가 발생한다.
의존성 문제: 라이브러리를 사용하면 해당 라이브러리와의 의존성 문제가 발생할 수 있다.
제한된 유연성: 라이브러리는 이미 구현된 기능을 사용하기 때문에 개발자가 원하는대로 수정하기 어렵다.
참고자료(출처)
위키백과 라이브러리 (컴퓨팅)
세모잡 블로그 포스팅 라이브러리란?
코딩 잡화점 포스팅 라이브러리란?