본문 바로가기
Programming

Django 시작 전 반드시 알아야 할 것 들

by 하하호호 2021. 9. 28.
반응형



 

Django를 사용해서 백엔드 개발자가 되고자 한다면 아래의 글들을 자세히 읽어보길 바란다. 프레임워크가 많은 것을 해결해주고 있지만, 궁극적으로 기본 개념은 알고 있어야 한다는 것이다.

 

프레임워크를 배우는 것은 어렵다. 여러분은 사물이 작동하는 방식, 모든 것이 위치한 위치, 그리고 여러분에게 제공된 도구를 최대한 활용하는 방법에 익숙해져야 합니다. 장고 역시 예외는 아니다. 코드 베이스가 상당히 넓으며 많은 툴과 기능을 갖추고 있습니다. 장고가 제공하는 모든 것을 배우는 것은 정말 오랜 시간이 걸릴 수 있다. 다행히도, 대부분의 경우 여러분은 장고에 대해 알아야 할 모든 것을 배우지 않고도 실제로 목표를 달성할 수 있습니다.

이번 포스트에서는 장고 개발자로 취업하기 위해 알아야 할 가장 중요한 개념에 대해 설명하겠습니다.

이 목록은 전적으로 내 생각이라는 것을 언급할 가치가 있다. 그것은 지난 3년간 장고 전문 개발자로 일한 결과이다.

 

전체적인 개념은 다음과 같습니다.

1. 데이터베이스 설계
2. Auth + Authentication
3. 데이터 흐름 (forms → views → database → and back)
4. static 및 미디어 파일 구성이 Django와 어떻게 호환되는지 여부
5. 배표
6. 조사

7. 불편한 것에 익숙해질 것

 


데이터베이스 설계

 

데이터는 모든 웹 앱에서 가장 중요한 부분입니다. 프로젝트의 나머지 부분이 데이터를 기반으로 하기 때문에 데이터의 저장, 검색 및 사용 방법이 중요합니다. 따라서 새 장고 프로젝트를 시작할 때 데이터베이스 설정은 첫 번째 단계 중 하나입니다.

계속해서 Django의 모델을 사용하여 데이터베이스 스키마를 설계할 수 있습니다. 스키마는 나머지 프로젝트에 큰 영향을 미치므로 올바르게 설계했는지 확인하는 것이 중요합니다. 데이터베이스 설계를 향상시키려면 Django's Model에 매우 익숙해야 합니다. 이렇게 하려면 외부 키, OneToOneFields 및 ManyToManyFields와 같은 모든 유형의 테이블 관계를 이해해야 합니다.

데이터베이스 설계를 잘 이해하는 것은 장고를 잘 이해하는 기초이다.

 

 

Auth & Authentication module

 

내가 장고를 배울 때 나는 이 부분을 너무 오랫동안 소홀히 했다. 이 부분이 제가 가장 많은 시간을 보낸 부분이었어야 했어요. 빌드할 거의 모든 웹 애플리케이션에는 어떤 형태의 인증이 필요합니다.

첫 번째 단계는 Auth와 Authentication의 차이점을 이해하는 것입니다. 먼저 Django가 제공하는 기본 인증부터 배우기를 권합니다. Django의 인증 모듈에는 인증 로직을 구성하는 많은 보기와 양식이 포함되어 있습니다. 코드를 살펴보고 각 형태와 뷰가 무엇을 하는지 이해한다면 Django서 작동하는 방식에 대한 좋은 출발점이 될 것입니다.

기본 인증을 학습하는 동안 세션 및 토큰 인증과 같은 다양한 인증 유형을 학습하는 것도 좋습니다. 이러한 내용을 잘 알고 있다면 JWT 인증을 살펴보는 것이 좋습니다.

인증에 대해 잘 알고 있다면 Django AllAuth와 같이 가장 일반적으로 사용되는 패키지를 살펴보는 것이 좋습니다. 인증은 매우 반복적이기 때문에 타사 패키지를 사용하여 인증을 처리할 가능성이 높습니다. 따라서 사용 가능한 패키지와 사용 사례에 가장 적합한 패키지에 익숙해지십시오.

 

 

 

Flow of data

 

CRUD 약어(Create Retrieve Update Delete)를 들어본 적이 있을 것입니다. 이 머리글자는 웹 응용 프로그램에서 수행되는 작업 유형을 나타냅니다. CRUD를 사용하여 이러한 작업 중 하나 이상을 수행하도록 보기를 설계할 수 있습니다.

만들기 작업을 예로 들어 보겠습니다. 이 작업을 구현하려면 일반적으로 Django 모델을 통해 데이터를 받아들이고 리소스를 생성하는 양식을 구현해야 합니다. Django의 클래스 기반 보기는 CRUD 보기에 기록된 코드의 양을 최소화하는 데 매우 능숙하지만 많은 논리를 추상화하기도 합니다. 모든 Django의 일반 클래스 기반 뷰(CBV)의 소스 코드를 살펴보고 각 메서드가 수행하는 작업, 해당 메서드의 실행 순서를 이해하고 궁극적으로 이러한 뷰가 CRUD의 논리를 어떻게 처리하는지 이해하는 것이 좋습니다.

Django의 FormView에는 특히 접근할 수 있는 많은 방법들이 있다. 다음과 같은 일반적인 방법을 이해해야 합니다.

 

  • get_context_data
  • get_form_class
  • get_form_kwargs
  • get_success_url
  • form_valid
  • form_invalid
  • post

데이터의 흐름을 이해하는 것 중 하나는 사용자와 데이터베이스 간에 데이터가 이동하는 방식을 이해하는 것입니다. 즉, 데이터베이스에서 데이터를 검색하여 보기로 전달하고 템플릿에 표시하는 방법을 이해해야 합니다. 이와 마찬가지로, 양식으로 전달되어 보기에 제출되고 데이터베이스에 저장되는 데이터 이해도 마찬가지입니다.

 

 

Static and media file configuration

 

더 어려운 개념 중 하나는 정적 및 미디어 파일입니다. 이것은 당신이 지역 개발 중이냐 생산 중이냐에 따라 설정이 다르기 때문이다. 그 둘 사이의 차이점을 이해하는 것은 중요하다. 또한 S3 프로토콜에 대해 배우고 디지털 오션 스페이스와 같은 서비스를 사용하여 파일을 별도의 서버에 저장하는 것이 유리한 이유를 배울 것을 추천합니다.

정적 및 미디어 파일을 이해하면 최신 웹 애플리케이션의 배포 아키텍처를 이해하는 데도 도움이 됩니다.

 

 

Service  배포 & 운영

 

이것은 웹 개발의 가장 중요한 부분 중 하나이다. 오늘날 Django 프로젝트를 배포하는 데 사용할 수 있는 서비스는 많지만, 중요한 것은 프로덕션에서 Django 서버를 실행하는 방법에 대한 기본 사항입니다. 전통적인 설정은 서버에 gunicorn과 nginx를 수동으로 설정하는 것을 포함한다. 좀 더 현대적인 접근 방식은 도커를 사용하고 도커 컨테이너를 배치하는 것이다.

사실, 저는 여러분이 장고 프로젝트를 배치하는 것에 대해 더 많이 알수록, 잠재적인 고용주들에게 더 좋게 보일 것이라고 말하고 싶습니다.

 

 

Research

 

때때로 여러분이 일을 하고 있을 때, 여러분은 바로 그 답을 모를 수도 있습니다. 그리고 괜찮아요! 우리는 컴퓨터가 아닙니다. 우리는 모든 것을 다 외워서는 안 됩니다. 하지만 여러분이 잘해야 하는 것은 연구입니다. 제가 배운 것은 경험이 있는 개발자들은 그들이 전에 직면하지 않았던 버그나 문제들을 발견했을 때 어디에서 무엇을 찾아야 하고 무엇을 찾아야 하는지 단순히 기억한다는 것입니다.

불행하게도, 이것을 더 잘 할 수 있는 유일한 방법은 프로젝트를 계속하는 것이다. 더 많은 프로젝트를 진행할수록 새로운 도전에 직면하고 새로운 것을 배울 수 있는 기회가 많아집니다.

 

 

불편함에 익숙해지기

 

이것은 진부한 말들 중 하나로 보일 수도 있지만, 사실이다 - 올바른 태도를 갖는 것은 매우 중요하다. 때때로 여러분의 일은 여러분이 원하지 않는 일을 하거나 여러분이 예상치 못한 버그를 고치도록 요구합니다.

 

 

API 통합 서비스 구현하기

 

내 생각에 이것은 아마도 가장 과소평가된 기술일 것이다.

JustDjango를 구축하면서 제가 직면했던 가장 어려운 문제 중 하나는 웹사이트의 청구 모델 아키텍처였습니다. 완벽한 맞춤형 결제 프로세스를 원했기 때문에 Stripe와 통합된 많은 기능을 구축해야 했습니다.

스트라이프는 한 가지 예일 뿐입니다. GitHub, Slack, Twitter와 같은 API와 통합할 수 있다면 Django의 거의 모든 기본 측면을 이해한다는 것을 보여주는 것입니다.

오늘날에는 전체 비즈니스가 다른 회사의 API를 기반으로 구축되어 있습니다. 이 기술은 제게는 매우 중요한 기술입니다. API를 활용하는 다른 회사들도 많을 겁니다.

 

Frontends와 통합하기

 

오늘날의 프런트엔드는 자바스크립트 라이브러리가 지배하고 있다. 대부분의 애플리케이션은 프런트엔드 및 백엔드를 분리하므로 풀스택 개발자로 간주되려면 자바스크립트 측면에서 전문 지식을 개발해야 합니다.

React와 Vue는 내가 추천하는 두 가지이다. 나는 더 큰 프로젝트라면 리액트를 선호하지만 그건 네 취향에 달렸어. 리액트가 부보다 더 배우기 어렵다는 것은 대체로 동의하는 바입니다. 그래서 리액트가 더 인상적인 스킬이 될 것입니다.

 

 

 

Docker

Docker는 팀 구성원 간에 일관된 환경을 조성하는 데 유용한 도구입니다. 대규모 팀에 합류할 경우 도커와 함께 일할 가능성이 높으므로 사전에 이 기술을 개발하면 생활이 더 편리해질 것입니다.

Docker는 배포에도 널리 사용됩니다. Django 프로젝트를 도킹하는 방법에 대한 튜토리얼이 많이 있으며 이해하기 쉽습니다. 나는 이것이 네가 쉽게 활용할 수 있는 기술이라고 생각한다. 하지만 도커에서 전문가가 되려고 노력하지 않을 것이다. 기초는 네가 살아가기에 충분하고도 남는다.

 

 

Building APIs

 

장고와 API를 구축하는 것은 매우 흔하다. 대부분의 Django 프로젝트는 시작되거나 Rest API로 변환되는 것이 일반적입니다. 이것은 당신이 작업하게 될 프로젝트에 달려 있다.

Django Rest Framework는 API 구축에 가장 많이 사용되는 프로젝트이다. DRF와 통합되어 다양한 기능을 제공하는 전체 패키지 에코시스템이 있습니다.

이 단계는 분명 도전적인 학습 곡선이며, 힘들다면 천천히 학습하는 것이 좋습니다. DRF에 뛰어들기 전에 장고의 핵심을 이해하는 것이 훨씬 더 중요하다.

API를 구축할 수 있다는 것은 기술 목록에 큰 자산입니다.

 

 

Task Queuing

이것은 확실히 프로젝트에 가장 의존하는 기술이다. 일부 프로젝트에는 비동기 태스크가 필요하지 않습니다. 그것은 또한 숙달하기 매우 어려운 기술이다. 많은 개발자들이 비동기식 작업에 대한 지식을 공유해 왔습니다. 비동기식 작업은 처리해야 할 일련의 새로운 과제와 어려움을 지속적으로 제공했기 때문입니다.

나는 이 기술을 전문적으로 다룰 수 있는 전체 분야라고 생각한다.

 

 

 

결론

이 글머리 기호에서 볼 수 있는 것은 그것들이 장고만의 것이 아니라는 것입니다. 이러한 기술들은 어떤 종류의 개발자가 되든 적용된다. 차이점은 장고는 프레임워크이기 때문에 이러한 개념을 이해하고 장고가 디자인한 방식으로 적용할 수 있을 것으로 기대됩니다.

Django의 메시지 프레임워크, 신호, 모델 관리자, Django 관리자 사용자 지정과 같은 개념은 이해해야 할 우선순위가 아니다. 이것들은 장고에 대한 이해를 높이는 데 도움이 되는 작은 도구들이지만, 꼭 필요한 것은 아닙니다.

반응형

댓글