-
프레임워크와 라이브러리란 무엇일까?개발에 필요한 기초 지식 2022. 2. 21. 00:06
# 프레임워크 (Framework)
- 뼈대나 구조를 의미
- 장점 : 상대적으로 큰 프로젝트에 더 적합 (확장성이 좋다)
- 장점 : 제어의 역전(IOC)로 인해 보다 더 코드에 집중할 수 있다.
- 단점 : 로딩 시간이 길어지고 간단한 프로그램을 개발할 경우 상대적으로 복잡해질 수 있다.
- Spring, Django, NodeJs 등
# 라이브러리 (Library)
- 어떤 기능을 구현하기 위해 모아놓은 도구나 함수들을 의미
- 장점: 특정 기능만 필요할 경우 거기에 맞는 라이브러리를 검색해서 쉽게 사용 가능
- 단점: 해당 라이브러리를 직접 컨트롤해야 해서 상대적으로 에러가 발생할 확률이 높다.
- React, JQuery 등
- 파이썬에서는 math, time 등
# 라이브러리와 프레임워크의 차이점은?
- 프레임워크에는 제어의 역전(Inversion Of Control)이 적용되어 있다.
- 프레임워크가 틀이나 구조가 이미 잡혀 있는 집이라면 라이브러리는 망치와 같은 도구라고 생각하면 조금 더 이해하기 쉽다.
# 제어의 역전(Inversion Of Control)이란?
- 프레임워크와 라이브러리를 구분짓게 하는 중요한 개념
- 제어 : 프로그램의 기능들이 어떤 순서로 작동하게 할 것인지를 정하는 것
- 제어의 역전 : 제어를 관리하는 주체가 프로그래머가 아닌 프레임워크인 것
# 결론
- 간단한 프로그램을 만들 경우에는 라이브러리만으로 만드는 것이 더 효율적일 수 있으나 프로그램이 복잡해질수록 어떤 틀의 필요성이 커지기에 프레임워크를 사용한다면 작업 효율성을 높일 수 있다.
Q1. Django를 프레임워크로 선택해서 사용했던 이유는?
Flask와 Django 중에 어떤 프레임워크에 대해 학습하고 사용할지에 대한 고민을 많이 했습니다.
크게 두가지의 이유로 Django를 선택했었습니다.
1. 파이썬과 함께 어떤 프레임워크를 가장 많이 사용하는가?
JETBRAINS의 투표에서는 근소한 차이였지만 국내 채용시장에서 검색했을 때는 Django가 압도적으로 많았습니다.
2. Django와 Flask는 어떤 차이점이 있고 이제 막 개발을 시작한 나에게 더 적합한 것은 어떤 것일까?
Django에 비해 Flask는 가볍다는 것이 장점입니다. 가볍기에 빠르지만 그만큼 프로그래머가 설정해야 하는 것이 많다는 것을 알았습니다. Flask의 그런 장점은 Python에 대해서 이제 막 배웠던 저에게 러닝 커브가 좀 더 있다고 판단했습니다.
그리고 보다 더 코드에만 집중할 수 있다고 생각해서 결국 Django를 배우고 사용하기로 결정했습니다.
Q2. NestJS를 프레임워크로 선택해서 학습하고 사용하겠다고 생각했던 이유는?
1. 먼저 왜 NodeJS였냐고 물으신다면 다양한 언어와 프레임워크를 보다 빠른 시간내에 경험해 보고 싶었고 언젠가는 규모가 큰 서비스를 개발하고 관리하고 싶었는데 NodeJS는 한가지 언어인 자바스크립트를 사용해서 빨리 개발할 수 있다는 장점에 매료되었습니다.
2. Express와 NestJS 중에서는 NestJS가 Express에 비해 보다 적은 부분만을 신경쓰면 되서 상대적으로 빠른 시간 내에 학습이 가능하다고 생각해서 였습니다. Javascript에 대해서도 몰랐기에 이에 대한 기초를 함께 공부하면서 NestJS를 익히고 사용하면서 CS에 대해서도 조금씩 함께 배우는 것이 장기적으로 좋다고 생각했기에 NestJS를 선택했습니다.
3. 현재 기업협업 중인 제누이오의 노션 페이지를 봤는데 정말 자세하게 글을 써주셨고 대표님도 개발자시고 백엔드 개발자도 계신다는 점도 이 프레임워크를 선택했던 점에 큰 부분이었습니다.
'개발에 필요한 기초 지식' 카테고리의 다른 글
서버(세션) 기반 인증 방식의 장단점 및 동작 방식 (0) 2022.03.23 JWT (Json Web Token) (0) 2022.03.21 정적 언어와 동적 언어의 특징 및 차이점 (0) 2022.03.15 REST API (0) 2022.03.11 객체 지향 프로그래밍(OOP) 시리즈 - 객체 지향 프로그래밍이란? (0) 2022.01.23