필자가 다니고 있는 회사는 요즘 큰 문제점(?)을 가지고 있다. 트래픽이 증가하면서 예기치 못한 장애가 발생하면서 현재 작동하고 있는 애플리케이션에 대한 튜닝 작업을 해야하는 것이다. 제가 다니고 있는 회사에 있는 DevOps 엔지니어 분은 우선 해결책으로 현재 데이터베이스의 성능이 좋은 걸 쓰고 있으니 애플리케이션이 모든 Request를 받을 수 있게 증설하면 되지 않을까? 라는 것으로 시도하여 진행하였습니다. 확실히 이전보다 증설하면서 Request 처리량과 500 에러를 많이 줄일 수 있었다. 하지만 근본적인 이유는 아니였다. 필자 또한 같이 고민해보았다. 무엇이 문제였을까? DevOps 엔지니어 분께서 추가적으로 현재 애플리케이션이 제대로된 퍼포먼스를 보여주지 못하고 있다고 했다. 그래서 저는 이..
1. EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) 조회를 하기 전에 위의 제목을 적어주면 상세한 기록이 나온다. 2. 기본 세팅 오늘은 인덱스 구현 방식과 조회를 어떻게 하느냐에 따라 성능의 극대한 차이를 보여주는 예제를 보여주도록 하겠습니다. 우선 기본 모델부터 소개 1. Issue class Issue(models.Model): class Meta: indexes = [ models.Index(fields=['model_type', 'is_complete', 'id'], name='issue_type_complete_id'), ] model_type = models.IntegerField(default=1) is_complete = models...
HTTP GET 캐시 기능?! https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/GET 어느날 한 번 http에 대해서 공부해야겠다고 생각하고 하다가 캐시 가능이라는 것이 눈에 띄었다. 오?! 뭐지 캐시가 된다고 ?!! 그래서 눌러서 자세히 한 번 봤다. 응답에 대해서 캐시가 가능하다는 것이다. 다음 요청에 대한 응답 값으로 해당 캐시 값으로 대체한다는 것이다. 여기에서 나는 두개의 의문점을 가졌다. 1. 디테일 정보에 대해서도 각 아이디에 대해서 캐시를 할까? 2. 그럼 디비를 진짜 들르지 않고 가져올까? 그래서 정말 간단한 세팅으로 준비해봤다.(저는 아무래도 장고가 편해서 장고로 프로젝트를 구성했습니다.) 모델 class Memo(models.Model..
공부하면서 json field을 쓰는 것을 보고 과연 join과 비교했을 때 얼마나 성능에 대한 이점이 있을까 고민을 하다가 한 번 실험해보기로 했습니다. framework: django database: postgresql 13 python version : 3.9 computer: macbook-pro 16inch m1 max 제가 테스트한 환경입니다. 1. Account class Account(BaseModel): name = models.CharField(max_length=25) objects = models.Manager() def __repr__(self): return f'id : {self.id}, name: {self.name}' 정규화 모델로 쓸 유저 모델입니다. 단순하게 이름 필드..
회사업무를 하면서 celery 작업 중 날짜로 argument를 받는 작업이 많다. 근데 여기서 귀찮은 점은 기본 celery serializer가 json으로 되어 있어서 이를 받았을 때 다시 변환하는 작업을 해줘야 하는데 이 과정에서 휴먼 에러가 너무 발생한 것을 많이 느낀 나는 python 객체로 그냥 넘기는 방법이 뭐가 있을까? 하고 고민을 하게 되었습니다. https://docs.celeryproject.org/projects/kombu/en/stable/userguide/serialization.html Serialization — Kombu 5.2.2 documentation This document is for Kombu's development version, which can be si..
이 주제에 대해서 알아보게 된 것은 최근 제가 다니고 있는 회사에서 하나의 DB로 데이터들을 처리할려고 하니 이에 대한 해결책이 뭐가 있을 까 하고 고민을 해봤습니다. 처음에 내가 생각한 것은 다음과 같습니다. 1. MSA (MIcro Soft Arhitecture) : 마 ~ 우리가 자존심이 있지 쪼개보자!! 2. DB 분산 작업: 기존 애플리케이션 내부 DB를 나누게 되면 이에 대한 쓰기 작업을 분산 시킬 수 있지 않을까? 1번은 우리 회사에서 하기에는 인원도 부족하고, 장기적으로 바라보는 작업이기에 현실적으로 바로 접근하기에는 문 턱이 높기 때문에 저는 2번을 먼저 해보는 게 좋지 않을까 해서 조사하게 되었습니다. 제가 찾아본 공식문서는 다음과 같습니다. https://docs.djangoproje..
Serializers을 왜 쓸까? 클라이언트와 서버간 통신에서 데이터 타입은 참 다양합니다. 대표적으로는 json이 있고, 그 이외에도 xml, yml 등 다양한 데이터 타입이 있습니다. Serializers는 이러한 데이터들을 파이썬 환경에 맞게 바꾸거나 클라이언트에 맞게 보내는 역할을 합니다. 이 때 Serializer는 클라이언트에게 보내는 작업을 합니다.( 자세히 말하자면 Serializers.py는 serializer 과 deserializer 둘 다 작업을 합니다. 그 중 serializer를 설명하겠습니다.) 공식 문서를 보면 다음과 같이 설명되어 있습니다. Serializing objects(클라이언트에게 보낼 때) Serializer는 우리가 Django 에서 사용하는 파이썬 객체나 qu..
- Total
- Today
- Yesterday
- 알고리즘
- env
- headers
- Command Line
- Linux
- Spring
- Python
- 2021 KAKAO BLIND RECRUITMENT
- 파이썬
- thread
- ubuntu
- docker-compose
- PostgreSQL
- setattr
- Celery
- 백준
- docker
- BFS
- 면접
- 그래프
- Java
- Pattern
- dockerignore
- 카카오
- Collections
- DRF
- 프로그래머스
- django
- 자바
- postgres
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |