본문 바로가기

전체 글

(53)
[django] Model 관리 프로젝트 구축하기 문제 회사에서 같은 DB의 모델을 사용하는 django 프로젝트가 3개 정도있다. 적용 전인 반년에서 1년 전까지만 해도 협업 프로세스라는게 존재하지 않았기 때문에 휴리스틱으로 모든 프로젝트를 진행했기 때문에 당연히 특정 django 프로젝트의 니즈에 의해 모델 구조가 변경됐을 때 변경사항이 다른 django 프로젝트에 잘 전달이 되지 않고 있었다. 덕분에 배포 후에 migration 에러가 뜬다던가, 현재는 데이터 분석에도 영향이 있다. 1년 전에는 니즈가 딱히 없었다. 프로덕트 규모 자체가 적었고, 팀도 당시에는 백엔드 개발자가 나 혼자였다(+ CTO님). 필요성은 항상 있었지만, 우선순위가 높은 기술 부채가 아니었다. 그 때에도 어떻게 구현할 지 큰 그림은 있었다. CTO님이 다른 프로젝트도 같이 ..
[AWS Chatbot] Code Pipeline 단계 완료시 Slack 채널로 알림 보내기 현재 회사에서 사용하고 있는 여러 배포 환경에 대한 CodePipeline 단계가 Source, (Build Approval), Build, Deploy Approval, Deploy로 나눠져 있다. 보통 Build와 Deploy 단계에서 작게는 1-2분 크게는 10분 정도 걸려서 그 동안 다른 작업을 하면서 기다리게 된다. Deploy의 경우 다른 작업에 병목이 생기지는 않지만, Build가 완료되길 기다리며 다른 작업을 하다가 완료된 걸 인지하지 못하고 Deploy Approval 하는 걸 까먹는 경우가 많았다. 그리고 백엔드인 나의 경우 빠르게 수정해서 개발 환경에 배포해 프론트엔드에 알려야 하는데 매번 내가 체크해서 노티하는게 귀찮기도 했다. 슬랙 채널에 알림이 간다거나 하는 조치를 취할 수는 없..
[django] Model Manager - ORM 정복기 1탄 목차 들어가기 전에, objects? django.db.models.manager.Manager BaseManager Manager Python Descriptor ManagerDescriptor Model의 objects로 설정되는 부분 __new__ -> _prepare -> add_to_class -> contribute_to_class example 숙원 사업(?), ORM이 SQL query를 만드는 과정 항상 엄두를 못내고 수박 겉핥기로 serializer만 뜯어보고 있었던 ORM 회사에서 스터디를 진행하면서 매번 팀원들과 ORM to SQL Query 과정을 뜯어보면 해갈될 것 같다는 말을 반년째 하다가 드디어 스타트를 끊었다 들어가기 전에, django ORM의 기초를 잡고 가보자! 오늘도..
[Notion] 노션으로 Task 관리하기 (feat. 워크 프로세스 개선하기) 배경 올해 초부터 회사에서 팀 노션 사용을 장려하게 되면서 각 팀마다 프로젝트와 그에 해당하는 task를 관리하기 시작했다. 사실 내가 노션을 적극적으로 사용하기 시작한 건 6월인데, 타냐 라일리의 을 읽으면서이다. 스테프 엔지니어에 대한 얘기가 나오는데, 목차는 아래와 같다. PART 1 빅 픽처 관점의 사고력 CHAPTER 1 스태프 엔지니어의 업무 CHAPTER 2 스태프 엔지니어의 세 가지 지도 CHAPTER 3 빅 픽처 관점 수립 PART 2 성공적인 프로젝트 실행력 CHAPTER 4 업무 시간 한계 CHAPTER 5 대규모 프로젝트 진행 CHAPTER 6 프로젝트 중단 PART 3 조직 차원의 레벨업 CHAPTER 7 롤모델 역할 CHAPTER 8 선한 영향력 전파 CHAPTER 9 경력 사다..
[django] ModelSerializer test code 문제 상황 회사에서 리팩토링 작업을 위해 새로운 프로젝트를 파고, dto와 serializer를 어떻게 구성, 명명, 사용할 것인지에 대한 논의를 하고 있는 중이다. 문제 상황은 아래와 같았다. related field 때문에 항상 다른 serializer를 만들어야 한다. (재사용성이 떨어진다) 어떤 serializer가 어디에서 사용되고 있는지 파악하기 어려워 수정, 제거가 불가능하고 매번 새로 생성한다. 사실 매번 serializer를 생성하는 것 자체는 문제가 아니었다. api별로 필요한 field와 related_field가 다르기 때문에 매번 다르고, 생성해야하는 것은 당연하다. 하지만 재사용성을 충분히 높일 수 있음에도 불구하고 명명 규칙도 제대로 정해지지 않은 상황은 문제이다. 그 과정에서..
[django - google drive api] google drive api로 shared drive(공유 드라이브) 접근하기 [pandas & django] gspread 사용하기 [pandas & django] gspread 사용하기 2022.12.23 - [python & django & pandas] - [pandas] google sheet 에서 데이터 가져오기 [pandas] google sheet 에서 데이터 가져오기 회사에서 google sheet 데이터를 받아온 후 그 데이터로 처리해야하는 일이 있었다. 인 darever.tistory.com 문제상황 저번까지는 구글 시트에 있는 데이터를 dataframe으로 뽑아서 다시 구글 시트로 돌려보내는 것 뿐이었지만 이번에는 일회성 작업 google sheet에서 fdcs라는 field가 true인 상품에 대해 구글 공유 드라이브에 "{sku}_{상품이름}"으로 폴더 생..
클린 아키텍쳐를 읽으면서 1부 소개, 2부 프로그래밍 패러다임, 3부 설계원칙(SOLID)를 읽으면서 이 책이 무엇을 말하고싶은지는 이해했고, 당장 아무런 설계와 고민 없이 코드를 짰던 지난 기간을 반성했다. SOLID, 컴포넌트 원칙, 아키텍쳐 그리고 후반부의 이야기들 모두 같은 맥락으로 말하고 있다. 내가 이번에 가지고 가려고 했던 것 첫번째는 프로젝트를 컴포넌트 단위부터 함수 단위까지 크고 작게 어떤 방식으로 설계를 해야하는지 고민하기 위한 방향성을 잡은 것이고, 두번째는 책에서 무엇을 이야기 하고싶은지 나름대로 파악을 했으니 그걸 어디에서든 적용할 수 있게 책에 나온 모든 케이스를 뜯어보는 것이었다. 한 번이라도 제대로 읽어본 케이스는 빠르게 넘겨 읽었을 때보다 당장 적용하기 쉽기 때문이다. 실제로, 한 기능을 구현하기 ..
[pandas & django] gspread 사용하기 2022.12.23 - [python & django & pandas] - [pandas] google sheet 에서 데이터 가져오기 [pandas] google sheet 에서 데이터 가져오기 회사에서 google sheet 데이터를 받아온 후 그 데이터로 처리해야하는 일이 있었다. 인풋값으로 구글 시트를 다운 받은 엑셀파일을 하나하나 전달받아서 받아와야한다는 점이 불편해서 google sheet darever.tistory.com 이전 글에 이어서 문제상황 데이터를 처리한 후 결과값을 엑셀 파일로 내보내야 했다. input값으로 google sheet를 불러오는 것까지는 했는데, output 데이터를 어떤식으로 줘야하는지가 문제였다. 서버에서 돌려줘야하는 데이터는 input으로 불러온 데이터의 va..