장고 튜토리얼을 따라해보긴 했는데, 어쨌든 개발도 중요하지만
전체의 흐름을 파악하는 게 중요해서 쓰게 됐다.
장고를 알기 위해서, 프레임워크와 라이브러리에 대해
먼저 꼭 알아야 한다
파이썬을 배우고, 이걸 통해 실습을 한다고 했을 때
가장 헷갈렸던 단어들이다.
특정 시스템 구현을 위해서, 공통적으로 요구되는 기능과 구조를
재사용 가능하도록 구현해 놓은 것이다.
내가 사용하고 있는 웹 프레임워크로 예를 들어 보자
모든 웹 시스템은 소켓을 통해서 네트워크와 연결하여
외부 시스템으로 부터 통신을 주고 받을 수 있어야 한다.
모든 웹 시스템은 이러한 기능을 당연히 필수로 구현해야 하는데,
이미 규격화가 되어 있다보니 시스템마다 따로 구현할 필요가 없다.
그럴 때 장고, 플라스크 등(파이썬 기준)을 활용함으로써,
개발자는 웹 시스템을 통해 제공하고자 하는 비즈니스로직에만
집중할 수 있는 것이다.
프레임워크와 비슷한 개념이라서 매우 헷갈렸다.
왜냐하면 둘 다 이미 구현되어 있는 코드라는 점에서,
재사용이 가능하기 때문이다.
그러면 라이브러리는 뭐라고 정의해야 될까?
소프트웨어 개발을 쉽게 하기 위해 기능을 제공하는
도구의 모음이라고 보면 된다.
프레임워크와 라이브러리는 아까 언급했듯이
필요한 기능을 재사용 가능하도록 구현해놓아서, 다른 개발자들이
필요에 의해 사용할 수 있다는 점은 동일하다.
다만, 라이브러리는 개발자가 자신의 코드안에서 직접 실행한다면,
프레임워크는 프레임워크가 개발자의 코드를 직접 실행한다는 점이다.
라이브러리 : 개발자 코드안에 일부 포함되어 개발자 입맛 대로 사용 가능
프레임워크 : 프레임워크가 제공하는 틀 안에서 개발자가 로직 구축
장고의 기본적인 흐름이다.
- 고객이 웹 사이트 상에서 CRUD에 대한 요청을 한다.
- 그러면 요청 분석을 URL.conf가 한다.
- 요청 분석을 통해 처리를 View에 요청(화면을 띄어달라)한다.
- view에서 URL요청에 따라 화면을 보여주기 위해 필요한 데이터를
Model에 요청한다.
- 그러면 모델은 데이터 베이스에 접근하여, 작업한 뒤 결과를 모델에 전달
위 흐름에서 Model이 데이터 관련 작업이 이루어지는구나 라는 걸 알게 됐다.
그리고 이미지를 보면 ORM이라고 있는 데 이게 뭘까?
풀네임은 Object Relational Mapping으로,
객체관계매핑..이라는 뜻이다.
객체와 DB를 매핑을 해줘서 CRUD작업을 하므로,
객체와 RDB를 매핑해주는 프레임워크라고 생각하면 된다.
왜 프레임워크일까?
프레임워크가 제공하는 틀에 맞게 데이터 CRUD작업이 이루어지기 때문!
일반적으로 데이터베이스 관련 작업을 할 때 쿼리문을 입력해야 했는데,
ORM을 통해 쿼리문을 입력하지 않고 DB작업을 할 수 있다는 것이다.
장고의 흐름과 그에 필요한 용어들을 알게 되었으니,
장고 튜토리얼의 프로젝트가 아닌 실제 웹 사이트의 데이터를 이용해
프로젝트를 만들어보자