-
Django ORM defer 기능
시작하기 전에 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 jujun입니다. django orm 은 디폴트로 해당 모델의 모든 컬럼을 불러옵니다. only 기능을 사용한다면 필요한 항목만 불러올 수 있게 됩니다. 이번 포스트에서는 only()와 반대(?)인 defer()기능은 명시된 컬럼을 빼고 모든 컬럼을 가져옵니다. 이는 불필요한 데이터를 불러오지 않게하여 컴퓨터 자원을 보다 효율적으로 사용할수 있습니다. 하지만 잘못 사용하면 lazy lading 에 의해 불필요한 쿼리를 발생시킵니다. 자세히 알아보겠습니다. . 본론 예제코드 저번 블로그와 같이 아래와 같은 모델이 있습니다. # api.raw.models class...
-
Django ORM only 기능
시작하기 전에 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 jujun입니다. django orm 은 디폴트로 해당 모델의 모든 컬럼을 불러옵니다. 하지만 only 기능을 사용한다면 필요한 항목만 불러올 수 있게 됩니다. 이는 불필요한 데이터를 불러오지 않게하여 컴퓨터 자원을 보다 효율적으로 사용할수 있습니다. 하지만 잘못 사용하면 lazy lading 에 의해 불필요한 쿼리를 발생시킵니다. 자세히 알아보겠습니다. . 본론 예제코드 아래와 같은 모델이 있습니다. # api.raw.models class Party(models.Model): country = models.ForeignKey("raw.Country", verbose_name="국가", on_delete=models.SET_NULL ,null=True) owner = models.ForeignKey("user.User", verbose_name="소유자", on_delete=models.SET_NULL ,null=True)...
-
데이터베이스 관계
안녕하세요, 똑똑한개발자에서 백엔드 개발을 하고 있는 권창식입니다. 벌써 3번째 데이터베이스 이야기입니다.😃 오늘은 데이터베이스 관계의 개념에 대해 소개해드리고 자 합니다. 관계의 정의 관계는 개체와 개체 사이의 논리적인 연결을 의미합니다. 관계에는 개체 간의 관계와 속성 간의 관계가 있습니다. 관계의 형태 1:1(One To One) : 개체 집합 A의 각 원소가 개체 집합 B의 원소 한 개와 대응하는 관계입니다. 1:N(One To Many) : 개체 집합 A의 각 원소는 개체 집합 B의 원소 여러 개와 대응하고 있지만, 개체 집합 B의...
-
Resize-Image
안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 김영환 입니다. 웹 개발을 하다보면 다량의 이미지를 업로드해야되는 경우가 생김니다. 서로 다른 이미지 크기와 용량으로 사이트 업로드의 시간을 늦출수있는 경우가 있습니다. 그런 경우를 대비해서 이미지 리사이즈를 시켜준뒤 저장하는 방법에 대해 알아보겠습니다. 기존의 이미지 처리 방식 업로드 시에 이미지를 리사이징하거나 렌더링 해야하기 때문에 연산이 많아진다 (서버 사양이 좋아야한다.) 다양한 해상도의 이미지를 저장하기 때문에 스토리지 비용이 원본 하나 저장할 때 보다 증가한다. 이미지 스토리지 마이그레이션 시간과 비용이 장난이 아니다. 이러한...
-
데이터베이스 모델
안녕하세요, 똑똑한개발자에서 백엔드 개발을 하고 있는 권창식입니다. 오늘은 데이터베이스 모델의 개념에 대해 소개해드리고 자 합니다. 데이터베이스 모델의 정의 데이터 모델은 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형입니다. 데이터 모델은 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약 조건등을 기술하기 위한 개념적 도구들의 모임입니다. 현실 세계의 데이터베이스에 표현하는 중간 과정, 즉 데이터베이스 설계 과정에서 데이터의 구조를 논리적으로 표현하기 위해 사용되는 지능적 도구입니다. 데이터 모델의 구성요소 개체(ENtitiy) : 데이터베이스에 표현하려는 것으로, 사람이...
-
Python Web Framework 3종 비교
Intro 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 강수빈입니다. 오늘은 파이썬의 대표적인 Web Framework 3가지를 소개하고 비교해보도록 하겠습니다. Django 첫번째로 가장 많이 쓰이고 있는 Django입니다. Django는 20003년에 만들어져, 전 세계에서 가장 많은 인기를 누리고 있는 웹 프레임워크 중 하나로 Instagram, Youtube등에서 활용되고 있습니다. 견고하고 직관적인 특징을 갖고 있으며, 재사용 가능한 코드를 장려함으로써 큰 인기를 얻고 있습니다. 특히 풀스텍 웹 프레임워크로써는 Django가 압도적인 지지를 받고 있습니다. 장점 Django는 보안부터 DRF(Django Rest Framework), ORM, 서드파티와의 연계 등...
-
Django Session 알아보기
시작하기 전에 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 jujun입니다. 오늘은 Django 의 세션에 대해 알아보려합니다. 세션에 대해 막연하게만 알고 있어서 이번 기회에 보다 깊이 이해해 보려고 합니다. . 본론 Session? a session is a temporary and interactive information interchange between two or more communicating devices, or between a computer and user (see login session). An established communication session may involve more than one message in each direction. A session is typically stateful, meaning that...
-
하둡에 대해서
하둡에 대해서 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 김준성입니다. 동료의 추천으로 토스의 기술 컨퍼런스 slash21 을 접하여 내용을 들여다 보았습니다. link 토스의 백엔드는 어떻게 구성되어 있는 지에 대한 이야기였습니다. 떨리는 마음으로 이야기를 듣기 시작했는데 전혀 이해가 되지 않았습니다. 심지어 아는 단어도 하나 없었습니다. 으엥 그래서 해당 내용을 공부해 보았습니다. . . 본론 hadoop 하둡은 Java로 개발된 오픈소스 분산 클러스터 파일시스템입니다. 컴퓨터를 스케일링하는 과정에서 한대의 컴퓨터의 성능을 높일 수 있습니다. 한편으로는 여러대의 컴퓨터를 연결시켜 성능을...
-
데이터베이스 설계
안녕하세요, 똑똑한개발자에서 백엔드 개발을 하고 있는 권창식입니다. 오늘은 데이터베이스 설계의 개념에 대해 소개해드리고 자 합니다. 데이터베이스 설계의 개념 데이터베이스의 설계란 사용자의 요구를 분석하여 그것들을 컴퓨터에 저장할 수 있는 데이터베이스의 구조에 맞게 변형한 후 특정 DBMS로 데이터베이스를 구현하여 일반 사용자들이 사용하게 하는 것입니다. 고려사항 무결성 : 삽입, 삭제, 갱신 등의 연산 후에도 데이터베이스에 저장된 데이터가 정해진 제약 조건을 항상 만족해야 합니다. 일관성 : 데이터베이스에 저장된 데이터들 사이나, 특정 질의에 대한 응답이 처음부터 끝까지 변함없이 일정해야 합니다....
-
프로젝트를 위한 넓고 얕은 장고 지식
일러두기 이 글은 Django와, 그에 속해 있는 Django REST Framework(이하 DRF)에 관한 전반적인 것을 작성한 글입니다. 또한 Django보다 DRF에 중점을 두어 작성됨을 알려드립니다. 목차 0. Django의 아주 간단한 소개 1. Django의 디자인패턴 2. Django는 어떻게 실행되는가 3. 추가적 내용 4. 맺음말 5. 주석 0. Django의 아주 간단한 소개 우리는 이제 아주 넓고 얕게 Django를 알아볼 것입니다. 하지만 그 전에 Django가 무엇인지에 관해 아는 것이 중요할 것입니다. 이 글은 아주 넓고 얕게 Django를 훑는 것을 목적으로...
-
소켓 통신
안녕하세요, 똑똑한개발자에서 프론트엔드 개발을 맡고 있는 심재철입니다. 채팅, 주식등에서 실시간 통신에 사용되는 웹 소켓에 대해서 알아보겠습니다. HTTP HTTP의 특징을 나열해보겠습니다. 무상태성 HTTP만을 사용하면 서버는 클라이언트가 누구인지 기본적으로 식별하지 못합니다. 왜냐면 HTTP 자체에 어떤 상태가 있는게 아니기 때문입니다. 그렇기 때문에 세션쿠키, JWT등을 사용해서 해당 요청을 보낸 유저가 어떤 유저인지를 식별하게 됩니다. 비 연결성 서버와 클라이언트는 매번 통신할때마다 연결을 맺었다가 끊는것을 반복합니다. 어떤 클라이언트가 서버로 요청을 보냈을때 서버는 그 클라이언트와의 연결을 계속 유지하지 않습니다. 생각해보면 엄청나게 많은...
-
JWT란 무엇인가
JWT 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 김영환 입니다. JMT졸맛탱이 아니라 JWT😝 웹 개발을 진행하다보면 빠질수 없는 인증 / 인가 .. JWT에 대해서 소개해보도록 하겠습니다. JWT 란 무엇인가 지겨우시죠? 네 저도 지겨워요 Json Web Token 약자로 모바일이나 웹의 사용자 인증을 위해 사용하는 암호화된 토큰을 의미합니다. JWT 정보를 request에 담아 사용자응 정보 열람, 수정 등 개인적인 작업 등을 수행할 수 있게한다. 그럼 JWT는 어떤 정보를 담아서 전달하나요? JWT는 세 파트로 나누어지고, 각 파트는 .(점)으로 구분하여...
-
SerializerMethodField() 사용의 쿼리 최적화
SerializerMethodField() 사용의 쿼리 최적화 안녕하세요 똑똑한 개발자에서 백엔드 개발을 하고 있는 jujun입니다. SerializerMethodField는 원하는 key value를 만들 수 있게 도와주지만 잘못 사용하면 N+1 문제를 발생시킵니다. . . 본론 예제 모델 Profile 모델과 Essay 모델이있고 Essay는 Profile을 참조하고 있습니다. # profile/models.py class Profile(models.Model): username = models.CharField("제목", max_length=50) # essay/Essay.py class Essay(models.Model): title = models.CharField("제목", max_length=50) profile = models.ForeignKey(Profile, verbose_name='작성자', on_delete=models.CASCADE) . . ###정방향 참조 모든 essay의 내용과 작성자 정보를 담은 json을 반환하고자 합니다. 해당 뷰는 모든...
-
???: Django 쿼리 삼형제다!
들어가기에 앞서… 안녕하세요, 저는 베이비 개발자👶이자 이제 5달차가 되어가는 백엔드 개발자입니다. (요즘 밀고 있어요 응애) 저번 블로그 글에 이어 이렇게 또 다시 Django의 쿼리 관련 글을 쓰게 되었습니다. 저번 블로그 글과 연관성이 있기 때문에 저번 글도 읽고 오신다면 좋습니다.😉 [저번블로그글] 쿼리 함수는 돌아오는 거야 쿼리의 무서움을 느껴서 일까요? 쿼리 최적화를 위해 쿼리의 갯수 하나하나에 집착하게 되었습니다. 저: 쿼리가 하나… 줄었다… 으히히🥴 이럴 정도로 쿼리에 집착하며 코드를 짜고 있는데요(실제로는 이렇지 않습니다)(진짜로정말로) 그렇다보니 select_related와 prefetch_related, 그리고 Prefetch는...
-
똑똑한개발자가 Git을 사용하는 방법
들어가기 전에, 안녕하세요, 똑똑한개발자에서 백엔드개발을 하는 차재훈입니다. 똑똑한개발자에서 사용하는 Git-flow를 소개하려고 합니다. 목차 GIt Git Flow Commit Message Rule GIt Git Flow master - develop - feature/이름이니셜-작업하는앱 Commit Message Rule 개요 커밋 제목 : [ 작업 액션 ] [ 작업 단위 ] [( Init, Add, Fix, HotFix, Improve, ...)] 중 택일 + [ 작업 단위에 대한 개요 ] 커밋 설명 : 설명 [설명] : 추가 상세 설명 내용은 커밋 제목 하단에 내용으로 추가한다 작업 액션...
-
Django 코드 컨벤션
들어가기 전에, 안녕하세요, 똑똑한개발자에서 백엔드개발을 하는 차재훈입니다. 똑똑한개발자에서 사용하는 코드 컨벤션을 소개하려고 합니다. 코드 컨벤션의 경우 PEP8을 참고하여 작성했으나 위반하는 내용이 포함되어 있을 수 있습니다. 똑똑한개발자에서 이렇게 코드를 작성하고 있구나’ 정도로 봐주시면 좋을 것 같습니다. 목차 Django 코드 컨벤션이란 Project Architecture 코드 컨벤션 사용법 Queryset View SerializerMethodField Signal Model Meta Django 코드 컨벤션이란 코드의 가독성을 증진시키고 여러 명이 협업하는 과정에서 일관된 코드 스타일을 유지하는 데 있어서 중요하다. 따라서 코드 컨벤션을 잘 지키며 코드를 작성하는 것은...
-
Django 쿼리 최적화 그거 뭔데 그거 어떻게 하는 건데.
4달차 백엔드 개발자 저는 이제 막 주니어에서도 주니어 그냥 뭐 베이비 개발자👶인 입사 4개월차 백엔드 개발자입니다. 실무 경험이라고는 정말 1도 없는 저는 입사하고 얼마 지나지 않아 처음으로 서비스 개발(!)을 하게 되었습니다. ONE님: amy님이 서버 개발을 하실 거예요. 저: 저: (큰일났다큰일났다어떻게덜덜덜) 정말… 갑자기 막막하게 느껴지고 그러는 거 있죠? 사실 학교에서 공부를 하고 프로젝트를 했다고 한들, 실서비스가 되는 것은 아니었고, 입사한 지 얼마 되지 않은 저에게는 무척 부담으로 다가왔습니다. (물론 지금은 어떤 프로젝트든 할 수 있다는 마음가짐으로...