목록전체 글 (11)
파이썬쟁이
어느덧 개발자라는 직업으로 일을 한 것이 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를 등록하고 실행하면 시간/성능 ..
그간 글을 올리지 않았던 이유는 별거 없다. 어떻게 보면 바빴다는 말이 제일 어울린다고 생각한다. 적응에 바빴고, 공부에 바빴고, 관계에 바빴다. 성실함에 있어서 바빴다는 이유는 핑계일 뿐이지만 그 바쁨속에서 나는 시간을 허투루 쓴 적이 없다고 생각한다. 그래도 2년 전보다 훨씬 얻고 공부한게 많은 이번년도에 대해서 되짚어보려고 한다. 1월 ~ 3월 한창 이력서를 이곳 저곳에 넣고 떨어짐과 동시에 커지는 실망감과 함께 성장한 나의 멘탈이 주가 된 분기였다. 다시 와서 생각해보면 '어차피 떨어질 거 아는데 일단 넣어봤다' 라는 허울 좋은 말로 나를 위로했지만 그것은 결국 내 실력이 어디까지인지 안다는 뜻이었고, 패배감을 여유로움으로 포장한 것이다. 물론 이에 안주했다면 지금의 내가 없었을 거라고 생각한다...

우연찮게 활동하던 인프라 관련 오픈채팅방에서 큰 선물을 받게 됐다. 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 라는 책인데, 평소에 질문이 많고 전후 사정, 결과를 꾸준히 알려서 그런지 정말 좋은 기회가 생겨 받게 됐다. K8S에 관심이 있었지만 도커를 통해 컨테이너 배포를 했었기에 공부를 결심한 적은 없었다. 하지만 선물을 받은 이후로 조금 읽다 보니 어느새 쿠버 입문을 시작하고 있는 나를 발견했다. 1. Docker 와 K8s 의 차이점 먼저, 쿠버네티스와 도커의 차이점에 대해 말해본다. 기존 블로그들은 쿠버네티스와 도커의 차이점에 대해서 "도커는 컨테이너 하나를 관리할 때 용이하고, 쿠버네티스는 컨테이너를 엮어 서비스 단위로 관리하는 게 용이하다." 라고 적어놨는데, 나는 별로 동의하지 않는..
Python은 3.4 버전부터 Asyncio 모듈이 Standard library로서 등장했습니다. 이는 기존에 보편적으로 사용되던 라이브러리들과의 성능 경쟁에서 우위를 보여주게 됐습니다. 오늘은 기존 사용되던 비동기 라이브러리들과의 성능을 비교해 가면서 비동기 로직을 설계할 때의 중요한 부분을 짚고 넘어가 보도록 할 것입니다. 기초가 되는 콜백이나, 퓨처에 대한 설명은 지루할 수 있으니 뒤로하고 크롤링 작업을 기준으로 성능이 얼마나 개선되는지 확인해 보겠습니다. 서버는 간단히 FastAPI로 구성했습니다. 아래는 클라이언트 개념으로 사용할 코드입니다. import requests import string import random import time def generate_urls(base_url, n..