본문 바로가기

WEB

(3)
[FastAPI] fastapi와 DB간의 session 로깅하기 Intro분석을 도와주는 100줄 이상의 SQL raw query문을 사용하는 API들이 있다.해당 쿼리들을 단일로 실행하는 경우 꽤나 복잡한 쿼리문을 사용함에도 불구하고, 200ms아래로 항상 개발을 진행해왔다. 그런데, 적은 양의 트래픽이 있었음에도 불구하고, API의 처리 속도가 굉장히 느리다는 것을 느꼈다.가장 의심되는 부분은 FastAPI로 작성된 백엔드 서버와 DB간의 통신이 모종에 이유로 API를 줄을 세우는게 아닐까 하는 의심이 들었다. 이 문제를 식별하기 위해서, FastAPI와 DB의 session 연결을 logging하여 분석하기로 결정했다.contents우선 문제를 2가지로 나누어서 생각하려고 했다. 1. pool size 문제 + slow query2. 잘못된 transaction..
[NestJS] require() of ES Module(CommonJS 와 ESM 이야기) 개요 Nest.js에서 외부 라이브러리를 이용하고자 할때 NPM과 같은 패키지 매니저를 이용해서 외부 라이브러리을 관리한다. 외부 라이브러리의 버전에 따라서, 지원하는 표준에 따라서 여러 오류를 맞이하게 된다. TypeScript까지 잘 지원하는 라이브러리가 많아지길 기원하며, 이 포스트를 작성해본다. 배경지식 ECMAScript JavaScript의 기반이 되는 표준이다. 즉, JavaScript는 ECMAScript의 사양을 준수하는 범용 스크립팅용 언어인 것이다. CommonJS & ESM CommonJS JavaScript의 역사는 정적인 HTML을 동적으로 표현하기 위해서 만들어졌다. 그러다보니 웹 브라우저에 탑재되었고, HTML 문서상에서 작성을 하다 보니, 모듈이라는 개념이 없었다. 그러나 ..
[SQLI] mysql 기본적인 공격 flow 개요 당연한 얘기지만, 구현이 어떻게 되어 있냐에 따라서 공격하는 방법, 방식등은 얼마든지 바뀐다. 그럼에도 기본적인 공격 flow를 적으려는 이유는, 아무 생각 없이 공격 하는게 아니라, 어떠한 생각, 공격 vector, 내게 필요한 리소스는 무엇인지 등을 전체적으로 이해하고, 상기하고자 작성한다. 구성 간단하게 테스트용 db, table을 구성한다. create database test; create table users ( id int not null primary key auto_increment, password varchar(512), nick varchar(30), email varchar(100) not null); create table rooms ( id int not null prim..