디자인 패턴, 라이브러리와 프레임워크의 차이
1. 디자인 패턴
디자인패턴은 프로그램을 설계할 때, 발생했던 문제점들을 객체 간의 상호 관계 등을 이용해서 해결할 수 있도록 미리 정해준 일종의 규약을 말합니다.
대표적인 디자인 패턴에는 다음과 같은 것들이 있습니다.
싱글톤 패턴
팩토리 패턴
전략 패턴
이터레이션 패턴
의존성 주입과 의존관계역전
전략 패턴
프록시 패턴
MVC, MVP, MVVM 패턴
Spring MVC
2. 라이브러리 vs. 프레임워크
2-1. 라이브러리
소프트웨어를 개발할 때, 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임.
특정 기능들을 모아둔 코드 및 함수들의 집합이고 코드 작성시 활용 가능한 도구들을 의미한다.
예로 들면, 아래와 같은 것들이 라이브러리에 해당한다.
python pip 로 설치한 패키지나 모듈 - tensorflow, pandas, beautifulsoup 등
C++ 표준 템플릿 라이브러리 STL
Node.js 에서 npm 으로 설치한 모듈들
HTML 의 클라이언트 사이드 조작을 단순화 해주는 Jquery
웹에서 사용자 인터페이스 개발에 사용되는 react.js
리엑트는 프레임워크로 많이 오해하지만 사실은 라이브러리다.
참고로 Express.js 는 Node.js 에서 가장 인기가 많은 웹 프레임워크이다.
2-2. 프레임워크
원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다.
어플리케이션 개발시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 쉽게 구현할 수 있게 돕기 위하여 미리 어느정도 골격(뼈대)를 제공하고 이 뼈대 위에 코드를 작성하면서 개발자는 어플리케이션을 개발하게 된다.
앱/서버 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하고, 사용자는 프레임워크가 정해준 방식대로 클래스나 매서드를 구현한다.
예시
java 서버 개발에 사용되는 spring
python 서버 개발에 사용되는 django, flask
안드로이드 앱 개발에 사용되는 android
웹 개발에 사용되는 angular, vue.js
루비 MVC 를 이용하는 ruby on rails 등
라이브러리 vs. 프레임워크
제어의 주체가 누구인가!
라이브러리의 경우, 개발자가 작성한 어플리케이션 코드가 어플리케이션의 흐름을 제어하게 된다. 필요에 따라서 기능을 위해 능동적으로 라이브러리를 사용할 뿐이다.
반면 프레임워크는 다르다. 어플리케이션의 코드가 프레임워크에 의해서 "사용된다". 프레임워크가 주도권을 가지고 전체적인 틀을 만들어두면, 사용자인 개발자는 그 내부에서 그 틀에 맞추어 수동적으로 동작하는 코드를 작성한다.
이처럼 프레임워크에는 분명하게 "제어의 역전" 개념이 적용되어있어야 한다.
참고
토비의 스프링
Last updated