Git 브랜치 전략 비교: Git Flow
Git 브랜치 전략이란? Git 브랜치 전략은 팀이 기능 개발, 버그 수정, 릴리스를 어떤 브랜치 구조로 관리할지 정하는 규칙입니다. 전략 없이 […]
Git 브랜치 전략이란? Git 브랜치 전략은 팀이 기능 개발, 버그 수정, 릴리스를 어떤 브랜치 구조로 관리할지 정하는 규칙입니다. 전략 없이 […]
들어가며: Interceptor가 NestJS 미들웨어와 다른 점 NestJS에서 요청/응답을 가로채는 방법은 Middleware, Guard, Interceptor, Pipe, Exception Filter 다섯 가지다. 이 중
왜 Subscriber와 Entity Listener를 알아야 하는가 NestJS + TypeORM 프로젝트에서 “엔티티가 저장/수정/삭제될 때 부가 로직을 실행”해야 하는 상황은 반복됩니다. 감사
Nginx 리버스 프록시란? Nginx 리버스 프록시는 클라이언트 요청을 받아 백엔드 애플리케이션 서버로 전달하고, 응답을 다시 클라이언트에 반환하는 중간 서버입니다. SSL
들어가며: @Transactional을 붙이면 끝이라는 착각 Spring Boot에서 @Transactional은 가장 많이 쓰이면서도 가장 많이 오해되는 어노테이션이다. “메서드에 붙이면 트랜잭션이 걸린다”는 수준에서
Docker Multi-Stage Build란? Docker Multi-Stage Build는 하나의 Dockerfile 안에 여러 빌드 단계(stage)를 정의하고, 최종 이미지에는 실행에 필요한 파일만 복사하는 기법입니다.
왜 관계 로딩 전략이 중요한가 NestJS + TypeORM 프로젝트에서 Entity 간 관계(@OneToMany, @ManyToOne, @ManyToMany)는 필수입니다. 그러나 로딩 전략을 의식하지 않으면
들어가며: “인덱스를 걸었는데 왜 느리죠?” MySQL 운영에서 가장 흔한 질문이다. 인덱스를 만들었지만 쿼리가 여전히 Full Table Scan을 타거나, EXPLAIN에서 type:
왜 Self-Hosted Runner인가 GitHub-hosted runner는 편리하지만, 빌드 시간 제한(6시간)과 무료 분수 한도, 내부 네트워크 접근 불가 등 실무에서 벽에 부딪히는