본문 바로가기

분류 전체보기262

[nodejs] nodejs와 nginx timeout 이글에서 자주 등장하는 upstream은 node 서버를 의미한다. nginx를 프록시 서버로 사용할 때 발생할 수 있는 에러중에, 502 Bad Gateway, 504 Gateway Time-out 가 있다. 보통 502, 504에러?면 nginx의 책임(?)으로 몰아가는 경우가 있다. 사실 nginx 문제일 수도 있고, 아닐수도 있다. 아닐 수 있는 이유는 upstream 서버에서도 timeout이 존재하기 때문이다. 일단은 502, 504에러를 알아보기 전에 upstream에서 timeout이 어떻게 동작하고 있는지 확인해보자. nodejs timeout 테스트로 사용하는 node버전은 v19.7.0 이며, 아래의 글은 해당 버전을 기준으로 한다. express로 다음과 같이 서버를 만들었다고 .. 2023. 3. 21.
[Prisma] create api 사용시 안전하게 데이터 생성하기 model Post { id Int @id @default(autoincrement()) content String authorId Int author User @relation(fields: [authorId], references: [id]) @@index([authorId], map: "Post_authorId_fkey") } model User { id Int @id @default(autoincrement()) name String posts Post[] } 위의 스키마를 기반으로 아래의 코드를 작성한다고 생각해 보겠습니다. const post = await prisma.post.create({ data: {...}, }); 여기서 prisma는 prisma client api에 대한 모든 타입.. 2022. 11. 26.
[데이터 베이스] MySQL트랜잭션 격리수준 트랜잭션의 문제점 여러 트랜잭션이 실행되면서 데이터 불일치에 대한 문제가 발생하게 됩니다. 이런 문제가 없으면 좋겠지만은 여러 트랜잭션이 하나의 데이터를 공유하기 때문에 발생할 수 밖에 없는 문제 입니다. 여러 트랜잭션이 실행되면서 발생할 수 있는 데이터 불일치 문제에는 DIRTY READ, NON REPEATABLE READ, PHANTOM READ가 있습니다. DIRTY READ A트랜잭션의 작업 내용이 완료(commit)되지 않았는데, 그 내용을 B트랜잭션에서 볼 수 있는 현상. A트랜잭션에서 B트랜잭션이 commit하지 않은 데이터를 조회하여 작업 후 commit하였습니다. 이때 만약 B트랜잭션이 롤백된다면, 결국 A트랜잭션은 잘못된 데이터를 사용하여 commit하게 됩니다. 사실 생각해보면 DI.. 2022. 11. 7.
[GraphQL] custom scalar type 사용하기 scalar라는 단어는 선형대수학에서 처음 나왔는데, 행렬과 벡터에서 하나의 수를 구분하기 위해 사용되었다고 합니다. 이 의미는 프로그래밍에서 사용하는 것과 유사한데, 자료구조에서 원소를 구분할 수 있는 single value를 scalar라고 합니다. [12, 6, true, "a", "b"] 배열에 있다면 각각의 원소값은 number(12,6), string(a, b), boolean(true)로 구분할 수 있으며 이때 number, string, boolean이 scalar 값을 의미합니다. scalar와 대조되는 개념은 compound이며 compound는 array, map, set, struct 처럼 여러 scalar 값을 포함하는 것을 의미합니다. 종종 scalar와 primitive를 헷갈.. 2022. 10. 9.