[IT열쇳말] 장고

가 +
가 -

웹 프레임워크란?

웹 사이트를 만들 때는 비슷한 요소들이 필요하다. 예컨대 회원가입을 할 수 있어야 하고, 로그인해야 하며, 포스트를 만들 수 있어야 한다. 다수의 웹 사이트에서 이런 기능을 기본적으로 갖춰져 있다. 담고 있는 콘텐츠가 다르고, 성격에 따라 필요한 추가기능이 들어가는 식이다.

예컨대 정말 ‘집’을 짓는 일이라고 생각해보자. 보통 집이라면 거실이나 화장실이 있고, 보일러 시설이나 개수대 등이 있다. 이런 기본적인 요소를 바탕으로 나름의 콘셉트를 잡고 벽지를 칠하고, 가구를 들이고, 외관을 꾸며 집을 만든다. 집마다 다 다르지만 대부분 보일러 시설이나 화장실, 개수대 같은 기능은 기본적으로 필요하다. 웹사이트도 이와 비슷하다. 공통적인 기능이 있다.

개발자는 비슷하거나 같은 일을 한 번에 처리하고자 한다. 비슷한 일을 여러 번 반복하는 것을 비효율적이라고 생각한다. 웹 개발자들은 새로운 웹 사이트를 만들 때 비슷한 문제를 만난다는 걸 알게 됐고, 웹 사이트에 필요한 기본적인 구성요소들을 빠르게 만들 수 있는 다양한 프레임워크를 만들었다. 장고도 그중 하나다.

이처럼 프레임워크는 설계에 필요한 기본 틀과 각종 기능을 모아둔 것으로, 제작자 나름의 철학에 따라 만들어진 일종의 구조를 말한다. 장고는 파이썬 문법을 기반으로 웹 애플리케이션을 만드는 데 도움을 주는 프레임워크다. 웹 개발의 번거로움을 덜어주기 때문에 기능구현에만 집중할 수 있게 돕는 역할을 한다. 장고라는 이름은 집시 재즈 기타리스트인 장고 라인하르트의 이름을 따왔다.

▲파이썬 창시자 귀도 반 로섬 (출처: 위키피디아 CC BY-SA 2.0)

파이썬의 특징

앞서 말했듯 장고는 파이썬을 기반으로 설계됐다. 파이썬은 입문자가 이해하기 쉽고, 다양한 분야에서 활용할 수 있어 주목받는 언어다. 네덜란드 개발자 귀도 반 로섬이 만들었다.

파이썬은 문법이 간결하고 표현 구조가 인간의 사고 체계를 반영하고 있다. 유지 보수와 관리가 쉽다는 장점이 있으며, 풍부한 라이브러리가 있어 다양한 용도로의 확장도 용이하다. 데이터 분석, 머신러닝, 그래픽, 웹 개발 등 여러 분야에서 활용되고 있다.

장고의 기본 원리

웹 사이트의 주소를 적고 엔터를 누른다는 말은 “이 사이트의 내용을 나에게 가져다주세요”라는 의미와 같다. 편지를 보내고 받는 것과 근본적으로 같다. ‘웹사이트의 내용을 가져다 달라’는 요청을 받는 쪽은 ‘서버’다. 요청을 받고 서버에서 가지고 있는 내용을 보내준다.

웹 서버에 요청이 오면 장고로 전달된다. 장고 url리졸버는 웹 페이지의 주소를 가져와 무엇을 해야 할지 확인하고, 패턴 목록을 가져와 URL과 맞는지 하나씩 대조해 식별한다. 일치하면 해당 요청을 관련한 뷰(view)에 넘겨준다. 뷰는 사용자의 요청을 처리하고, 결과를 반환하기 위한 로직을 담고 있다.

뷰는 애플리케이션의 로직을 넣는 곳이다. 모델에서 필요한 정보를 받아와 템플릿에 전달하는 역할을 한다. 장고의 모델은 객체의 특별한 종류다. 모델을 저장하면 데이터베이스에 저장된다. 예컨대 블로그 사이트를 만든다고 하면 ‘포스트’ 모델을 구성해서 사용하는 식이다. 템플릿 안에 있는 값이 출력되면 비로소 우리가 볼 수 있는 형태가 된다.

장고 사이트 갈무리

장고의 기능과 장점

장고는 웹 애플리케이션 개발에 일반적으로 요구되는 다양한 툴을 제공한다. 다음과 같다.

  • 인증
  • 캐싱
  • 로깅
  • 이메일 보내기
  • 페이지네이션
  • 메시지 프레임워크
  • 직렬화
  • 세션
  • 사이트맵 등…

그 외에 장고 프레임워크의 다른 핵심 기능으로는 조건부 콘텐츠 처리, 리다이렉션, 시그널, 시스템 확인 프레임워크 등이 있다. 장고의 장점은 다음과 같은 것들이 꼽힌다.

빠르다 : 장고는 개발자가 가능한 한 빨리 콘셉트에서 애플리케이션 완성까지 갈 수 있도록 설계됐다.

충분한 기능 : 장고는 일반적인 웹 개발 작업을 처리하는 데 쓸 수 있는 수십 개의 추가 기능을 포함하고 있다. 장고는 사용자 인증, 콘텐츠 관리, 사이트 맵, RSS 피드 등의 작업을 처리할 수 있게 돕는다.

신뢰성 : 장고는 SQL인젝션, 크로스 사이트 스크립팅, 사이트 간 요청 위조 및 클릭재킹(clickjacking)과 같은 보안 문제를 피하는 데 도움이 된다. 사용자 인증 시스템으로 사용자 계정과 암호를 안전하게 관리할 방법을 제공한다.

확장성 : 세계에서 가장 활발하게 사용되는 사이트 중 몇몇은 무거운 트래픽을 감당하기 위해 장고의 빠르고 유연한 확장성을 활용한다.

다용도 : 다양한 분야에서 장고를 사용해 콘텐츠 관리 시스템(CMS)부터 소셜네트워크 서비스, 과학 컴퓨팅 플랫폼까지 구축해서 사용한다.

※ 참고

네티즌의견(총 0개)