본문 바로가기

분류 전체보기115

Vercel 무료 플랜 limit? Hobby(무료)로 잘 쓰고 있었는데 갑자기 75% 를 사용했다면서 Pro로 업그레이드 하라는 메일이 왔다.'아직 더 버텨줄 수 있을거라 생각했는데...' '뭐가 문제일까?' Free 는 4시간 무료인데 3시간 9분을 사용하고 있었다. Fluid Active CPU 란?API를 호출해서 응답 받고 내 코드가 처리하는 시간ex) DB에 쿼리 날리고 결과 기다림(과금 x) -> 결과 받아서 내 코드로 가공/처리 (과금) Vercel, 이제 "기다리는 시간"엔 돈 안 받는다Vercel이 서버리스 함수 과금 방식을 바꿨다. 기존엔 함수가 DB 응답이나 AI API를 기다리는 동안에도 시간이 그대로 청구됐는데, 새로운 Fluid + Active CPU 방식은 코드가 실제로 CPU를 쓰는 순간만 과금한다.예를 들.. 2026. 4. 16.
vercel 의 speedInsignts? Vercel을 Upgrade 하려다보니 $10 가 더 option 으로 붙어있는 걸 발견했다.이게 뭐지? 하다가 나도 모르게 이전에 성능 측정 도구를 서비스 내에 심어놓고 있었던 것을 발견했다.Upgrade 하기전에 꼭! 체크해보자Vercel SpeedInsights란 무엇인가 Next.js 프로젝트를 Vercel에 배포하다 보면 아래와 같은 코드를 접하게 된다.import { SpeedInsights } from '@vercel/speed-insights/react';그리고 일반적으로 루트 레이아웃이나 앱 컴포넌트에 다음과 같이 추가한다.이 기능은 이름 때문에 성능을 “개선”하는 것으로 오해하기 쉽지만, 실제로는 성능을 “측정”하는 도구다. vercel CLI 로 init을 하거나 Enable Anal.. 2026. 4. 15.
localStorage TTL이란? 브라우저의 localStorage는 만료 기능이 없습니다. 데이터를 저장하면 명시적으로 삭제하지 않는 한 영구적으로 남아 있어요.그래서 TTL(Time To Live)을 구현하려면 데이터와 함께 만료 시간을 직접 저장하는 패턴을 사용합니다.기본 구현 패턴 javascript// 저장 (TTL: 밀리초 단위)function setWithTTL(key, value, ttlMs) { const item = { value, expiresAt: Date.now() + ttlMs, }; localStorage.setItem(key, JSON.stringify(item));}// 조회function getWithTTL(key) { const raw = localStorage.getItem(key).. 2026. 4. 15.
GitHub PR에서 Merge Conflict란? GitHub Pull Request에서 "Squash and Merge"를 누르면 충돌이 생기는 걸까? PR 체크 실패, 리뷰 미승인, Merge Conflict의 차이를 코드 예시와 함께 명확하게 정리합니다.목차GitHub PR이 머지되지 않는 3가지 이유Merge Conflict란 정확히 무엇인가Squash and Merge vs Conflict — 어떤 관계인가Conflict 해결하는 법 (실전 명령어)Merge 방식 3가지 비교정리 한 줄 요약1. GitHub PR이 머지되지 않는 3가지 이유PR을 올렸는데 머지가 안 된다면, 보통 아래 3가지 중 하나입니다. 원인설명해결 방법Review required리뷰어 N명의 Approve가 아직 없음팀원에게 리뷰 요청CI/CD 체크 실패Unit test,.. 2026. 4. 7.
Git Stash 안전하게 사용하는 방법: 커밋 없이 브랜치 변경 후 작업 복원하기 Git을 사용하다 보면 작업 중이던 변경사항을 아직 커밋하고 싶지는 않은데, 다른 브랜치로 잠깐 이동해야 하는 순간이 자주 생깁니다. 이럴 때 가장 많이 쓰는 방법이 git stash입니다. git stash를 사용하면 현재 수정한 파일들을 로컬에 임시 저장해두고, 워킹 트리를 깨끗한 상태로 만든 뒤 다른 브랜치로 이동할 수 있습니다. 이후 필요할 때 다시 꺼내서 이어서 작업하면 됩니다.특히 중요한 점은 git stash가 원격 저장소에 올라가는 기능이 아니라는 점입니다. 즉, stash에 넣은 내용은 내 로컬 .git 영역에만 임시로 저장됩니다. 그래서 아직 정리되지 않은 작업을 잠깐 치워두고 싶을 때 유용합니다. 반대로 팀원과 공유되거나 히스토리로 남는 것은 아니므로, 장기 보관 목적이라면 stas.. 2026. 4. 3.
추가 인증이 필요한 화면을 Annotation + Guard로 다루는 구조 특정 화면만 한 번 더 인증해야 하는 요구사항은 자주 등장합니다.다만 이 로직이 화면 조회 API, 로그인 API, 세션 관리, 레거시 인증 규칙과 뒤섞이기 시작하면 구조가 빠르게 복잡해집니다.이 글은 Protected Screen API와 Additional Login API를 분리하고, Annotation + Guard 조합으로 화면 단위 추가 인증을 다루는 구조를 정리한 글입니다.왜 화면 단위 추가 인증이 필요한가서비스 전체 로그인과 별개로, 일부 화면만 추가 인증이 필요한 경우가 있습니다.예를 들어 민감한 조회 화면이나 출력 화면은 사용자가 이미 로그인한 상태여도 한 번 더 확인하는 정책을 둘 수 있습니다.이때 중요한 점은 화면 조회 자체가 로그인 API가 아니라는 것입니다.먼저 세션이 있는지 확.. 2026. 3. 30.
반응형