목록전체 글 (14)
파이썬쟁이
아니 이 필터가 왜이래 협업을 위한 Swagger 문서가 있다.사내에선 `drf-spectacular` 모듈을 사용하고 있었는데, 굉장히 불편한 점이 있었다. API의 Tag로 `KAKAO` 로 설정해놓은 API가 보이질 않는다.`kakao` 든, `KAKAO` 든, 다 필터링 돼야 하는 것 아닌가라는 의문이 있었는데,해당 키워드를 오픈채팅방에 물어보니 지원하지 않는 기능이라고 하셨다. swagger setting으로 가져오는 번들 버전 및 옵션에 따라 기능을 이용할 수 있는데이런 필터링 관련 기능은 제공하지 않는 것으로 보인다 관련 링크https://github.com/swagger-api/swagger-ui/issues/8143https://github.com/swagger-api/swagger-u..
요즘(아니 진작에) 업무의 자동화가 굉장히 중요해진 시기에,늦게나마 우리도 도입해볼까? 하고 시작한 사이드 프로젝트에 진행했던 과정들과 해설을 정리하는 글이 되겠다. 1. PDF 에서 TEXT 추출 회사 내에 복리후생에 관련된 내용은 PDF로 깔끔히 정리된 문서가 있어서 이를 활용하기로 했다.프로젝트 내 `pdfs` 폴더를 만들고 이 폴더를 타겟으로 모든 pdf 파일들을 text로 만들어주는 코드를 작성했다.pdf 파일을 읽는 부분은 pypdf를 사용했다.# ---------------------------# 1) PDF -> 텍스트 추출# ---------------------------def pdf_to_text(pdf_path: str) -> str: reader = PdfReader(pdf..
현재 사내 프로젝트에서는 각 매체의 광고 데이터를 수집하는 프로세스가 돌고 있다.예를 들자면 위처럼 Django crontab으로 매일 특정 시간에 DB를 조회하여, 필터가 된 유저들에 대한 액션을SQS로 보내고, 람다로 해당 작업들을 수행하여 DB의 특정 테이블에 적재하는 방식으로 진행됐다. 위 프로세스로 개선하기 전엔 대략 300분이라는 수집 시간이 걸렸던 것에 비하면,개선 후 30분이라는 시간에 2000건의 작업이 모두 완료됐으므로 좋은 플로우가 아닐 수 없었다. 하지만 ... 위 사진은 일일 업무 보고 중 파악한 현상에 대해 기술해놓은 것이다.현재는 약 2000건의 작업이 하루마다 돌고 있는데, 유저의 증가에 따라 비용이 증가될 수 있다는 것이 문제로 다가왔다. 확인해보니, 생각보다 더 많이 ..
어느덧 개발자라는 직업으로 일을 한 것이 4년차가 됐다. 올해에는 개발자라는 직업이 나에게 정말 적성에 맞는 직업인지도 곰곰히 생각해봤고,언어는 벗어나지 않았지만 내가 가지고 있는 것을 다듬고 새로운 경험을 많이 해봤던 것 같다.과연 내가 개발자로써 이어나갈 수 있는가?개인적으로 직업 자체가 특별한 직업이 아닌 것 같다.타인이 보기에 전문적으로 보이고 으스댈 수 있다고 생각한다. 하지만 본질적으로 주어진 임무에 충실하고 회사의 이익에 이바지 해야 한다는 점에선여느 회사원과 다를 것이 없다고 느꼈다. 다만, 개발자라는 직군에서 내가 가져가야 할 태도는연구적인 태도와 끝없이 의심하는 태도인 것 같았다. 내가 맡고 있는 기능의 프로세스가 의도된 것인가?위 처럼 예상 범주 내 끊임없는 연구와 의심으로 하나의 기..
오늘은 파이썬 자료형 중, 시퀀스 자료형에 대해 다뤄본다. 1. Sequence 자료형이 뭐지?처음 사전적 지식이 없고 실무에서만 접했던 해당 자료형의 이미지는 iterable한 자료형이라고 생각을 했다.이후 조금 더 찾아보니 range, bytes, bytearray, memoryview(엥? 누구세요) 등도 Sequence 자료형에 해당한다고 한다.2. 각 자료형마다 다른 점그렇다면 각 자료형들에 대해 어떻게 다른지에 대해 내부 메소드 체크를 통해 확인해봤다.보통 접하지 못할만한 메소드가 많은게 확인되는데, 리스트와 튜플이 많이 다르다는 것을 알 수 있다. (String은 제외 넌 별로야)가변형인 List는 보기만해도 내부 요소를 변경하거나 삭제하는 메소드가 많은 반면, 불변형인 Tuple은 그저 c..
어떤 방법으로 머신러닝 모델을 서비스하는 것이 가장 좋은 방법일까? 사실 개발을 하다보면 어떤 방법이 가장 좋다는 것은 없다고 생각한다. 상황이나 비용, 그 외에 여러가지 부분을 체크한 뒤에 그때 가장 적절한 방법을 찾는 것이 중요하다고 보기 때문이다. 따라서 오늘은 조금 무식하지만 프로세스가 눈에 확 들어오는 모델 서빙을 해보려고 한다. - 프로젝트 구조- 프로젝트 구조는 간단하게 API (FastAPI) 서버와 ML (ML Model) 서버로 나누어서 만들것이다. API 서버의 코드는 다음과 같다. import pika import uvicorn from pika.exceptions import AMQPConnectionError from fastapi import FastAPI, File, Uplo..
사내 서비스는 ECS 형식의 템플릿을 기반으로 Docker Swarm을 통해 관리 및 배포를 진행하고 있었다. 허나 Docker를 그렇게 깊게 파지 못한 나는 이 3개의 인스턴스를 가지고도 무중단 배포를 도입하지 못했다. 물론 내부적으로 요청이 분산되고 AWS에서도 로드밸런서를 지원하니 당분간 트래픽이 몰려도 죽지 않겠구나 싶었지만, 비용적인 측면에선 나의 능력을 의심할 수밖에 없는 결과가 나왔다. 또한 서버 버전을 업그레이드하여 배포하는 와중에 클라이언트 측에 보급된 카드 단말기에서 결제 요청이 들어오는 순간 그 잠깐의 배포 시간 동안 해당 요청이 누락되는 상황이 종종 발생하였다. 첫 번째 문제 - 결제파트는 중단되지 않아야 한다. 두 번째 문제 - 요청이 적어 서버 비용이 투자한 비용 대비 손실이 크..
1. 성능이 너무 안 나와요. 처음 회사에 입사를 했을 때는 Django 프레임워크로 사내 서비스 런칭을 준비중이었다. 어차피 Django도 풀스택 프레임워크에 가까웠고 기존에 쓰던 프레임워크였으니 문제 없을 것이라고 판단했다. 심지어 작성해 놓고 간 코드가 남아있기에 나는 새로운 기능들을 준비하느라 바빴다. 하지만 문제는 데이터를 쌓아놓고 보니 나타났다. def something_view(request): ... object_list = list(Amodel.objects.filter(**condition).values()) ... return render(request, 'template/...', context) 당장 위 코드를 작성하고 urls.py에 해당 view를 등록하고 실행하면 시간/성능 ..