안녕하세요,이번 포스팅에서는 NestJS 개발 중 알게 된 스냅샷과 히스토리 개념에 대해 이야기해보려고 합니다.NestJS 개발 커뮤니티에서 유명한 '삼촌님'의 깃허브 레포지토리를 참고하면서 스냅샷 방식을 도입하게 되었습니다.이전에는 히스토리성 로그 방식의 테이블을 사용했는데요,이번 글에서는 두 방식의 차이점과 각각의 특징, 그리고 도입 예제에 대해 알아보겠습니다. 스냅샷과 히스토리성 테이블의 차이점데이터 저장 방식히스토리 테이블: 변경된 내용만 순차적으로 기록합니다. "어제 뭐 했더라..." (매일매일 일기 쓰는 느낌)스냅샷: 특정 시점의 전체 상태를 저장합니다. "자, 여기 내 전재산!" (인생 통장 사진 찍기)조회 성능히스토리 테이블: 최신 상태를 얻기 위해 여..
회사에서 Azure 크래딧을 받게 되어 openAI를 이용해서 댓글 생성해주는 서비스가 있는데플랫폼을 chatGPT -> Azure openAI로 변경하게 되었다.Azure openAI를 적용한 과정과 404 resource not found 에러를 마주하게 되었는데,해외에서도 비슷한 에러로 질문 글을 작성한 것들을 알게 되었다.하지만 해외 공문 QnA를 봐도 마땅히 도움이 되지 않아서 해결하게 된 포스팅을 작성하게 되었다. 🌠 목차✅ Azure openAI 사용을 위한 권한 신청하기✅ openAI 적용을 위한 Studio 예제 소스코드 보기✅ 404 resource not found 해결하기(feat. 공식문서 보고 하다 개삽질한 경험) Azure openAI 사용을 위한 권한 신청하기1. ..
이번에 입사한 회사에서 운 좋게도 경험할 수 있게 되었는데,해당 태스크를 진행하게 된 계기, 과정, 결과를 공유한다. 서버 비용 줄이기 태스크가 맨 처음 나에게 태스크로 할당 되어서 작업을 진행한 것은 아니였고, 우리 회사 서비스의 앱을 사용해 보는데, 앱 기본 동작이 너무 느렸다.친구 관계를 맺고, 댓글을 쓰고, 피드를 조회하는데 속도가 너무 느려서 너무너무 해결하고 싶었다. 이러한 경험은 고객 관점에서 최악으로 느껴졌고, 앱의 사용성 개선을 우선적으로 해결해야 할 태스크라고 느꼈다.그렇게 스스로 문제를 진단하고, 팀 내에 해당 태스크를 공유한 다음성능 최적화를 진행했다. 결과부터 말하자면 AWS 서버 비용을 3분의 1로 줄였고, 쿼리 조회 속도도 개선되었다.추가적으로 내가 적용했던 다양한 성능 최적화..
nestjs, prisma를 이용해 cursor 페이지네이션을 구현한다.서버 부하를 줄이는 많은 태스크가 있지만, 오늘은 페이지네이션 방식인 cursor를 통해 어떻게 부하를 줄이는지 알아보자.참고로 Prisma를 적용한 포스팅 글이 없어 prisma로 적용한 포스팅이다. cursor 도입 후 실서버에서 테스트 결과는 맨 아래에 있다. 🌠 목차✅ 들어가기에 앞서✅ offset과 cursor란? 속도 차이가 나는 이유✅ cursor의 적용 예제✅ prisma 사용시 cursor의 주의사항✅ cursor 결과✅ 성능 최적화 방법 및 비용 줄이기들어가기에 앞서▶️ BE: nestJS, Prisma, TypeScript, AWS AuroraDB | FE: flutter 를 사용했다. - Prisma+c..
나는 평소 관계형 데이터베이스인 Postgresql, mariaDB밖에 접하지 못했었다 하지만 지금 다니고 있는 회사 서비스의 트래픽이 늘어남에 따라 서버 분산을 할 필요가 절실해졌다 Postgresql에서 AuroraDB로 변경하며 스케일 업 하였고 AuroraDB에서 4대의 수로 늘리는 스케일 아웃을 적용했다. (AuroraDB는 특정 시간에 트래픽이 몰리는 것에 특화되어 DB 수가 늘어나는 가용성이 보장되는 DB다) 하지만 이 마저도 우리 서비스의 트래픽으로 버티기가 힘들어 매일 20만 건의 댓글이 달리는 DB 부하를 줄이기 위해 특정 도메인들을 NoSQL에 저장하고자 한다 MongoDB는 스키마와 동일한 JSON 형식으로 저장할 수 있어 개발 시 장점과 5배 이상의 성능을 끌어올릴 수 있다고 한다..
호스팅 업체는 다양하게 있지만 EC2에서 Vlutr를 사용하게 된 가장 큰 이유는 서버비/비용이 저렴하기 때문이다. Vultr이라는 비교적 저렴한 가상 호스팅 사이트를 이용하여 토이프로젝트 백엔드 서버를 구축했다.vultr로 백엔드 서버를 구축하면서 공부한 내용과 나의 실수들을 작성하며 쉽게 복귀하고,누군가에게 도움이 되었으면 하는 마음으로 작성해 본다. 이번 포스팅은 다음과 같은 목차로 진행한다.🌠 목차✅ Vultr 이용하기 ㄴ 방화벽 설정 ㄴ 가비아 dns 등록 ㄴ 백엔드 배포 들어가기 전 나의 환경구성 정보1. 맥북 프로 m12. JAVA 113. Querydsl, JPA4. Springboot5. gradle 3.x.x6. 돈 없는 거지 Vultr로 서버 생성하기htt..
요즘은 간편 로그인(구글 로그인과, 네이버 로그인 등을 이용한 외부 서버 인증 방식)으로 처리하는 곳이 많지만해외 거주자가 있거나, 서비스의 고객층에 따라 간편 로그인이 낯설고, 예전 방식의 ID와 PW를 선호하는 사람들도 있기 때문에요구사항에 따라 ID와 PW 방식의 회원가입을 구현해야 하는 경우도 존재한다. 우리는 종종 DB가 털려서, 개인정보가 유출 됐다는 뉴스를 접하곤 한다. 일반적으로 사람은 ID와 PW를 대다수의 사이트에 동일하게 사용하곤 한다.하나의 사이트가 털려버리면, 내가 가입한 대다수의 사이트도 털려버릴 수 있기 때문에 큰 문제가 된다. 이 때문에 암호화에 관심이 생기게 되었고, 이번 포스팅에서는 어떻게 패스워드를 암호화해야 안전한지, 어떤 이유로 암호화 방식이 발전해 왔는지암호화에 ..
- Total
- Today
- Yesterday