Framework
서비스 개발에 필요한 기능들을 미리 구현해서 모아놓은 것.
- 프레임 워크를 활용하면 웹 서비스 개발에 있어서 모든 것들을 직접 개발할 필요 없이, 만들고자 하는 본질에 집중하여 개발 가능
- 대규모 프로젝트에서 개발 일관성 향상, 유지보수 용이
- 소프트웨어의 생산성과 품질을 높일 수 있음
Library vs Framework
- 라이브러리와 프레임워크의 차이는 제어의 흐름에 대한 주도성이 어디에 있는가에 달려있음
- 프레임워크에는 분명한 제어의 역전 개념이 적용
- 프레임워크는 전체적인 흐름을 스스로 쥐고 있으며, 사용자(개발자)는 그 안에서 필요한 코드를 짜 넣는 반면, 라이브러리는 사용자(개발자)가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것
- 동작하는 중에 필요한 기능이 있을 때 메소드를 능동적으로 사용 ⇒ 라이브러리
- 미리 만들어진 메소드가 클라이언트 코드를 호출하는 것 ⇒ 프레임워크
- 쉬운 예시
- 망치, 톱, 삽 = 라이브러리
- 자동차, 비행기, 배 = 프레임워크
Django
- Python으로 작성된 프레임워크
- 수많은 여러 유용한 기능
- 검증된 웹 프레임워크
- 화해, Toss, 두나무, 당근마켓, 요기요 등 많은 서비스들이 사용
Django의 설계 철학
- 표현과 로직(view)을 분리
- 템플릿 시스템은 표현을 제어하는 도구이자 표현에 관련된 로직일 뿐,
이러한 기본 목표를 넘어서는 기능을 지원하지 말아야 함
- 중복을 배제
- DRY(Don’t Repeat Yourself) 원칙