Mysql enum 컬럼을 not null 로 선언하고 아무 값도 넣지 않으면. Enum 의 첫번째 값을 값으로 넣어버림
-> if you declare NOT NULL then it gives the first value from the ENUM.
Makefile 을 통해 반복적으로 사용하는 쉘 스크립트를 미리 작성해 둘 수 있음
git이 pre-commit hook 과 같은 hook 을 제공하고 이를 활용해서 일련의 프로세스를 진행할 수 있다는 걸 알았음
-> pre-commit 단계에서 테스트를 진행하거나 lint 를 확인하는 등
로그를 남길 때 하나의 요청에서 온다라는 걸 명확히 하기 위해 trace id (UUID 등) 을 공용으로 넘겨 구분할 수 있음
decorator 에 @wraps 를 사용하면 데코레이터가 달린 함수를 실행하는 함수로 인식하게 해줌. wraps 안쓰면 데코레이터를 함수로 인식
contextmanager. with 구문을 사용할 수 있게 만들어주는 decorator
-> generator 함수에만 사용할 수 있음
-> yield 까지가 실제 실행되는 부분이고 블록이 끝난 후 finally 를 통해 마지막 로직 실행
python의 is, is not. 은 == != 와 같지 않다.
-> == 이건 값 비교, is 는 메모리 id 비교
DB read, write 뭘 쓰느냐에 대한 고찰
-> 해당 쿼리가 조회라고 해서 read 를 쓰는게 아니라, 해당 트랜잭션 안에서 해당 쿼리 앞단에 write 가 있었으면, 이 결과값을 사용하기 위해선 반영 시간을 고려해서 write 를 써주는게 맞을 수 있다
fastapi - guicorn vs uvicorn
-> fastapi 는 ASGI 를 따르는 uvicorn 으로 서버를 띄우는게 맞으나 uvicorn 은 프로세스 매니저로서의 역할은 아직 잘 하지 못함
-> WSGI를 따르는 gunicorn 으로도 uvicorn 의 workers 를 다룰 수 있음
-> workers 를 효율적으로 관리할 필요가 있다면 gunicorn 으로 사용하는게 좋을 수 있음
-> [FastAPI] gunicorn, uvicorn workers 뭘 써야하나
커뮤니케이션의 중요성
-> PM과 기획 단계에서부터 본인들이 생각하고 있는 개념들을 서로에게 설명했으나 결과적으로는 이해하는게 달라 QA 에서 이슈가 발생함
-> 내가 이해하는게 맞는지 더 정확하게 짚고 넘어가는 과정이 필요함
QA 의 TC 를 미리 공유 받으면 전체적인 개발 프로세스가 빨라질 수 있을거라고 생각함
-> 서로 생각하는 기능들이 다를 수 있고, 미리 서로의 관점을 파악하면 이후 빠트릴 수 있는 이슈 들을 미리 처리하여 (개발 → QA 이슈 → 재 개발 → QA) 의 핑퐁을 덜할 수 있을 것
특정 기능을 어느 플랫폼에서 개발하는게 맞는가에 대한 고찰
-> 특정 기능(ex) 수동 재고연동)을 우리 시스템에 담을 것인지 연동을 받고 있으면서 재연동을 필요로 하는 시스템에 담을 것인지에 대한 고민
-> 사용자의 입장에서 자주 사용하는 메뉴에 담을 것인가
-> 시스템 플로우 상 있어야할 법한 곳에 위치시켜야 하는가
-> 작업공수가 적게 드는 시스템에 적용해야하는가
-> 이번 작업은 작업 공수가 드는 시스템에 적용하게 되었지만 실제로는 사용자의 입장에서 고려하는게 좀 더 맞을 수도 있다고 생각함