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