profile
열공모드
post-thumbnail

RabbitMQ 튜토리얼 톺아보기

비동기 처리를 위해 Celery를 도입하려는데 메시지 브로커로 RabbitMQ, Redis를 사용할 수 있다고 한다. 둘 중 하나를 선택하기 위해 분석해서 표로 정리해보았다. | RabbitMQ | Redis | | --- | -- | | 메시지 브로커 용도로 개

4일 전
·
0개의 댓글
post-thumbnail

멀티 스레드 환경에서의 동시성 문제 해결 선점 점금, 비선점 잠금, 오프라인 선점 잠금

DDD Start라는 책을 읽다가, 웹 애플리케이션에서 여러 스레드가 특정 모델(애그리거트)에 동시 접근할 때 발생하는 문제와 해결법이 나오는데 실무에서 꼭 알아두어야할 내용인 것 같아서 정리하려고 한다. 멀티 스레드 환경에서 어떤 문제가 발생할 수 있을까? 온라인

2022년 6월 19일
·
0개의 댓글

Django select relate는 왜 one to many 관계의 연관 객체들을 불러오지 못할까?

Django ORM을 사용할 때 쿼리 수를 최적화 할 수 있는 방법으로 select_related() , prefetch_related() 가 있다. select_related() 는 객체가 역참조 하는 단일 객체이거나 또는 정참조하는 관계일 때 DB의 JOIN을 통해

2022년 6월 1일
·
0개의 댓글
post-thumbnail

데이터베이스 데이터 저장 구조 및 데이터 액세스 방법

점점 복잡한 쿼리를 짜다보니 SQL 최적화에 관심이 많아졌다. 인덱스든 뭐든 DB부하를 최적화하려면 기반 원리를 알아야겠다는 생각해 공부한 내용을 정리하려고 한다. 일단 SQL이 느린 이유는 무엇일까? 컴퓨터 구조 과목을 배우던 때를 기억해보자. 디스크 I/O는 느리기

2022년 5월 19일
·
0개의 댓글

Django race condition 처리 방법

문제 특정 게시물의 조회수를 센다거나, 은행 계좌의 잔고를 관리하는 어플리케이션을 로직을 개발한다고 가정해보자. 이런 경우에 원래 모델의 값을 읽어서, +1 을 한다거나 특정 값을 더해서 새로운 값을 업데이트한다. Django에서 race condition을 고려하지

2022년 5월 15일
·
0개의 댓글
post-thumbnail

DB 페이지네이션 최적화 (feat. index)

Django DRF에서 제공하는 기본 페이지네이션 구현은 SQL의 LIMIT, OFFSET 을 사용하도록 되어 있다. OFFSET의 경우 예전에 공부했을 때 조건에 해당하는 Row들을 다 읽고난 후 필요 없는 데이터를 버리는 방식이라고 했었는데.. 수 백, 수 천만

2022년 5월 9일
·
0개의 댓글
post-thumbnail

애플리케이션 모니터링을 위한 New Relic 도입하기

사내 백엔드 애플리케이션을 개발하다가, 문득 사용자가 많이 유입되어 서버에 문제가 생기면 pain point를 어떻게 찾지? 라는 의문이 생겼다. 우리 서비스는 GCP 위에 구현되어 있기 때문에 노드의 CPU, 메모리 사용량은 GCP의 Stackdriver를 통해 모니

2022년 4월 24일
·
0개의 댓글
post-thumbnail

Django Rest framework Permissions

오늘은 오랜만히 Django 포스팅이다! 인프라 쪽 이슈랑 사내 사업 종료때문에 문서화 관련되어 일이 짜잘짜잘하게 너무 많아서 피쳐 개발 진행을 못하다가 이제 피쳐 개발이 들어간다.오늘 다룰 내용은 Django Rest framework의 Permissions 기능이다

2022년 3월 29일
·
0개의 댓글
post-thumbnail

GCP Associate Cloud Engineer 시험 후기

그동안 자격증 공부 하고 시험봐야지 봐야지 하다가 회사 일이 바쁘다는 핑계로 미루다가 드디어 시험을 치루었고 합격을 하게 되었다! GCP Associate Cloud Engineer 시험을 보게 된 계기는, 회사에서 GCP 를 사용하기도 하였고, 클라우드 플랫폼에서

2022년 3월 5일
·
0개의 댓글
post-thumbnail

쿠버네티스 - 노드에 파드를 할당하는 방법 nodeSelector, affinity

사내 ML Worker는 하나의 노드에 동일한 하나의 pod만 스케줄링되어야 한다(훈련 시 CPU를 100% 사용해야하는 전제가 깔려있다). 그 조건을 어떻게 설정하였는지 분석하면서 쿠버네티스에서 노드에 Pod을 어떻게 할당하는지 공부하였다. 오늘은 쿠버네티스에서 노

2022년 2월 8일
·
0개의 댓글
post-thumbnail

Pub/sub 중복 메시지 이슈와 해결

오늘은 사내 서비스 운영 중 재미있는 이슈를 발견해서 포스팅해보려고 한다. 우리 서비스는 사용자가 요청한 머신러닝 모델 학습을 제공하는 웹서비스이다. 머신러닝 모델은 CPU를 100프로 사용하거나 GPU를 사용해야하기 때문에 별도의 머신 (worker)에서 학습을 처리

2022년 2월 1일
·
0개의 댓글
post-thumbnail

무중단 배포와 쿠버네티스에서의 구현 방법

오늘은 무중단 배포 전략 3가지와 각 전략들이 쿠버네티스에서 어떻게 구현될 수 있는지 간단히 다룰 것이다. 마이크로 서비스 아키텍처에 관심이 있었을 때 무중단 배포 전략들의 컨셉들은 이해하였는데Rolling Update 이외에는 k8s문서를 읽어보니 직접적으로 제공하지

2022년 1월 30일
·
0개의 댓글

Git - 브랜치 머지 전략

사내에서 브랜치를 머지하기 위해 rebase 후 squash merge하는 전략을 쓰고있다. 즉 어떤 feature 브랜치가 이 master 브랜치에 머지되려면 rebase 후 CI 파이프라인을 통과한 다음 squash merge를 통해서 브랜치가 머지된다. 오늘은 여

2022년 1월 22일
·
0개의 댓글
post-thumbnail

도커 컨테이너 빌드 및 배포 시간 최적화의 여정

입사 초 사내 CI/CD 파이프라인에서 도커파일을 빌드하는 데 7~8분정도 걸렸었다. 사내 파이프라인은 마스터 브랜치에 PR들이 머지되면 자동으로 스테이징 환경에 배포되는데, 7~8분 정도 소요되는 것은 꽤 오래걸린다는 생각이 들었다. 마침 zenhub 이슈에 도커파일

2022년 1월 20일
·
0개의 댓글

쿠버네티스 - Probe (Liveness, Readiness, Startup)

오늘은 쿠버네티스의 Probe라는 개념에 대해 정리해보고자한다. 예전에 사내 dev 클러스터 구축 시 probe 라는 개념이 yaml에 적혀있어 이것이 무엇인지 궁금해서 찾아보았다. Probe란? Probe는 컨테이너에서 kubelet에 의해 주기적으로 수행되는

2022년 1월 20일
·
0개의 댓글
post-thumbnail

쿠버네티스 - 서비스(ClusterIP, NodePort, LoadBalancer)와 인그레스

오늘은 쿠버네티스의 서비스에 대해서 정리해보겠다. 입사 초반에 도커파일의 빌드 시간 단축 태스크를 진행하였는데, 도커파일 빌드를 로컬 컴퓨터에서 이리 저리 시도하기에는 너무 느려서 클라우드 컴퓨팅 환경에서 테스트 해보고 싶었다.

2022년 1월 9일
·
0개의 댓글

Django QuerySet - 분석 및 특징, 최적화

오늘은 Django ORM 중 쿼리셋(Queryset)에 대해서 다루어 보려고 한다. 오늘 포스트는 유튜브 pycon 코리아에서 발표된 내용을 를 기반으로 쿼리셋에 대한 특징, 최적화 등을 다룰 것이다.발표된 내용이 정말 유익해서, 발표 내용과 내가 분석한 내용들을 토

2022년 1월 3일
·
0개의 댓글

Django REST framework - Generic views

오늘은 사내 API 개발 중 가장 많이 사용되고 있는 Django REST framework의 generic 뷰에 대해서 다루어 보려고 한다.기본적으로 장고에는 class-based 뷰와 function-based 뷰가 존재하는데, generic view는 class-

2022년 1월 2일
·
0개의 댓글