기술과 생각을 기록하는 공간

오늘 먹은 음식도 기억이 안납니다. 그래서 모든걸 기록합니다.

이전 블로그 포스팅들은 여기서 확인할 수 있습니다
2025.11.5부터 포스트 마이그레이션을 진행하고 있습니다

Docker 빌드가 느리다면, 가장 먼저 캐시를 의심해라

Docker 빌드가 느리다면, 가장 먼저 캐시를 의심해라.

dockerci/cd

Yarn Berry PnP + Next.js에서 발생한 ERR_MODULE_NOT_FOUND 문제 원인 분석

Next.js 실행 시 ERR_MODULE_NOT_FOUND가 발생했던 이유와, Yarn Berry PnP의 zip 기반 구조 때문에 .pnp.loader.mjs / unplugged 설정이 왜 필요한지 정리했다.

Yarn BerryPnPNext.jsESMCJSunplugged

API Gateway API Key, 정말 의미가 있을까?

클라이언트 → 서버 → API Gateway 구조에서 API Key가 실제로 어떤 보안적 의미를 가지는지 정리

API GatewayAWSAPI KeyBackend

Ruler — 모든 AI 코딩 도구에 동일한 규칙 적용하기

GitHub Copilot, Claude, Cursor 등 여러 AI 도구를 사용할 때 각각 설정 파일을 관리하는 번거로움을 해결하는 도구

aitoolsproductivitycoding

NoSQL vs RDBMS — 확장성과 도메인 관점에서 정확히 이해하기

두 DB가 제공하는 기능 차이를 넘어서, 대규모 서비스가 왜 둘 다 사용하는지와 마이크로서비스 관점에서 어떤 기준으로 선택해야 하는지를 정리한다.

databasenosqlrdbmsarchitecturescalabilitymicroservices

RDS vs DynamoDB — 서버리스 관점에서 명확하게 이해하기

둘 다 서버를 직접 운영하지 않지만, 왜 DynamoDB만 서버리스로 분류될까? 서버리스 정의를 기준으로 RDS와 DynamoDB의 차이를 정리한다.

awsserverlessdynamodbrdsdatabase

AWS CloudFront Signed URL 가이드: Private Key 저장 위치부터 실제 URL 생성까지

CloudFront Signed URL을 처음 사용할 때 가장 헷갈리는 private key 보관 위치, public key 등록, 그리고 실제로 서명된 URL을 애플리케이션에서 만드는 흐름까지 정리했다.

AWSCloudFrontSigned URL보안S3

리소스 로딩과 CORS: 화면에 보이는 것과 JS가 '읽는 것'의 차이

img, video, iframe은 잘 보이는데 JS로 데이터를 읽으면 왜 CORS 에러가 날까? 리소스 로딩과 데이터 접근의 차이를 정리했다.

CORS브라우저JavaScript웹보안

보이지 않는 영역을 SEO에 활용할 수 있을까? (결론: 절반은 되고 절반은 안 된다)

바텀시트처럼 화면에 안 보이는 영역이 SEO에 반영되는지, 어떤 숨김 방식이 허용되고 어떤 것은 패널티인지 구글 공식 문서를 기준으로 정리했다.

SEOFrontendHidden ContentGoogle SEO

Beanstalk vs ECS: AWS 웹서비스 배포 환경 선택 가이드

AWS로 웹서비스를 배포할 때 Elastic Beanstalk과 ECS 중 무엇을 선택해야 할까? 프론트엔드와 백엔드 배포 전략, 그리고 CloudFront와 API Gateway의 차이까지 실전 경험을 바탕으로 정리했습니다.

AWSElastic BeanstalkECSCloudFrontAPI GatewayDevOps

모바일 웹뷰/브라우저 Viewport Height 대응

모바일 환경에서 주소창, 인디케이터 등의 브라우저 UI 변화에 따른 viewport 높이 대응 방법

CSSViewport모바일

Braze - 마케팅 메시징 플랫폼

사용자 타겟팅 및 메시징을 위한 마케팅 자동화 플랫폼 Braze의 개념과 세션 관리 방식

Braze마케팅분석