분류 전체보기
-
[SQLAlchemy] Session vs scoped_session💻 프로그래밍/Python 2022. 10. 1. 02:23
안녕하세요! 개발자 Jay입니다! 블로그에 말하지는 않았지만 퇴사한지 거진 한 달쯤 다되어가네요 ㅋㅋㅋ 입사 전 이것저것 해볼 계획은 많았는데... 생각보다 많이 못해서 아쉽지만... 여하튼ㅋㅋㅋ 토이 프로젝트 프레임워크로 FastAPI를 사용하면서 SQLAlchemy를 사용했었습니다. 그때는 막상 구현하는데 급급해서 자세히 알아보지 못했던 부분들이 있었습니다. 이번에 repository 쪽 코드를 리팩토링 하면서 Session과 scoped_session에 대한 내용을 제대로 파보았습니다. Session이란? SQLAlchemy에서 말하는 Session은 DB Session과는 전혀 다릅니다.(혹시나 헷갈릴 수도 있으니) SQLAlchmey의 Session은 일종에 ORM 버퍼라고 보면 되며 ORM 매..
-
RabbitMQ 톺아보기 2부 (feat.pika)💻 프로그래밍/Python 2022. 9. 17. 20:47
RabbitMQ 톺아보기 1부에 이어서 2부를 시작하겠습니다! RabbitMQ 톺아보기 1부 안녕하세요! 개발자 Jay입니다! 최근에 저의 관심사는 Event-driven, MSA입니다. 아무래도 MSA의 문제가 서비스가 잦은 호출로 인한 네트워크 과부하, 데이터 정합성, 트랜잭션 등에 문제가 있다 보니 E jay-ji.tistory.com 2부에서는 실제 python application으로 RabbitMQ를 활용하는 방법에 대해 알아보려고 합니다. pika라는 라이브러리를 활용할 예정이에요! pika는 RabbitMQ 공식 홈페이지 듀토리얼에서도 사용되는 라이브러리입니다! 공식홈페이지에 보면 다양한 언어에 대해 친절하게 예제들이 만들어져 있습니다! RabbitMQ 듀토리얼과 pika공식문서가 진짜 잘..
-
RabbitMQ 톺아보기 1부💻 프로그래밍/Python 2022. 9. 12. 22:33
안녕하세요! 개발자 Jay입니다! 최근에 저의 관심사는 Event-driven, MSA입니다. 아무래도 MSA의 문제가 서비스가 잦은 호출로 인한 네트워크 과부하, 데이터 정합성, 트랜잭션 등에 문제가 있다 보니 Event-driven에 관심을 가지지 않을 수가 없었습니다. 이전 회사에서는 MSA 서비스간의 잦은 호출들은 gRPC를 통해 어느 정도 해결했으나 데이터 정합성과 트랜잭션에 대해서는 여전히 고민이 많았던 것 같습니다. 이런 점을 저 스스로 완벽하게 해결해 보지 않았고 이론, 실무적인 부분들에 대해 확실하게 알지 못하고 있어서 이번에 쉬면서 한번 스터디해보려고 마음을 먹었습니다! 그 첫번째가 RabbitMQ를 톺아보는 것입니다! RabbitMQ는 비동기 처리를 위해 Celery와 함께 자주 써보..
-
💡해커톤 아이디어에서 실제 프로덕 배포까지 썰👨🏻💻 개발자 제이의 이야기 2022. 9. 9. 04:46
안녕하세요! 개발자 JAY입니다! 몇 달 전에 사내 해커톤을 진행했었는데요! 운이 좋게도 제가 낸 아이디어가 선정되어 팀을 만들어서 프로토타입을 만들었습니다! 더 신기하게도 해커톤 아이디어에서 그치지 않고 실제 프로덕으로 배포까지 했습니다. 굉장히 재밌기도 하고 신기했던 경험이어서 여러분에게 공유드리고 싶어 글을 작성하게 되었습니다. 그럼 이제 해커톤을 진행하면서 겪었던 일들과 실제 프로덕까지 배포하게 된 썰(?)을 풀어보겠습니다! 1. 해커톤 아이디어 스타트업을 다니면서 로망이 사내 해커톤을 진행해보는 것이었는데 때마침 사내 해커톤이 진행되었습니다. 일주일이라는 긴 시간 동안 진행하는 해커톤이라 되게 재밌어 보였고 평소에 생각만 하고 있던 아이디어를 제안했습니다! 평소 여자친구랑 여행을 가거나 어딜 갈..
-
Deadlock 유발할 수 있는 Django ORM (feat. InnoDB)💻 프로그래밍/Django 2022. 8. 14. 01:52
안녕하세요! 개발자 Jay 입니다 😄 이번 포스팅에서는 데드락(Deadlock)을 유발할 수 있는 Django ORM과 InnoDB 엔진을 알아보려고 합니다. 예전에 update_or_create()하는데 갑자기 Dead Lock 너는 왜나오냐?! (feat. transaction)라는 포스팅을 업로드 했던적이 있는데, 시간이 좀 지나니까 기억이 좀 안나기도 하고 이번에 다시한번 InnoDB 부터 알아 보려고 합니다. (내용도 조금 빈약했던 것 같습니다 ㅎㅎ) 1. InnoDB란? 이노DB(InnoDB)는 MySQL을 위한 데이터베이스 엔진이며, MySQL AB가 배포하는 모든 바이너리에 내장되어 있다. MySQL과 사용할 수 있는 다른 데이터베이스 엔진에 대한 개선 사항으로 PostgreSQL을 닮은 ..
-
Django App은 어떻게 실행되는 걸까?💻 프로그래밍/Django 2022. 8. 11. 09:38
안녕하세요! 개발자 Jay 입니다! 오늘은 Django App이 어떻게 실행되는지에 대해 알아보려고 합니다! 처음 개발을 시작할때는 runserver 명령어를 치면 "알아서 되는구나"라고 생각했고 라이브 배포시 "uwsgi, gunicorn 같은 wsgi들이 django app과 연결되니까 실행이 되겠지" 정도로 약간 추상적으로 알았던 것 같아요. 그래서 오늘은 한번 전반적으로 디버깅을 해보면서 runserver 명령어가 실행되면 어떻게 django app 실행까지 되는지 확인해보겠습니다. (본 포스팅은 Django 3.2.4 기준으로 작성되었습니다!) 🏃♂️ runserver 먼저 우리는 django app을 실행시킬때 ./manage.py runserver 명령어를 사용합니다. 명령어 자체를 그냥 ..
-
Django ORM 잘 알고 쓰자! 특히 JOIN 할때!💻 프로그래밍/Django 2022. 8. 3. 16:54
안녕하세요! 개발자 Jay입니다~! 최근에 신규 서비스에 소셜 기능 피쳐를 개발했습니다. 플랜에 좋아요, 댓글을 붙이는 기능이었는데 좋아요 개수와, 댓글 개수를 함께 노출해야 하는 요구사항이 있었습니다. 위 이미지처럼 인스타그램의 좋아요 개수를 표시하는 것과 동일한데요, 추가로 댓글의 개수도 노출되는 기능입니다. 자 그러면 모델링과 ORM을 보면서 문제를 설명드리겠습니다. 1. django ORM 간단히 모델 관계를 보여드리면 이렇습니다 (세부 필드 제거) 되게 간단합니다. Plan, Account가 PlanComment(댓글), PlanLike(좋아요)에 manyTomany로 연결되어 있는 형태입니다. 요구사항에 맞게 쿼리셋을 가져올 때 댓글, 좋아요 개수를 가져오도록 ORM을 작성했습니다. annot..