HoneyByte

TDD 실전 — Red-Green-Refactor, 단위 테스트, 통합 테스트, 모킹, 커버리지

TDD 사이클: Red → Green → Refactor / 1. 🔴 Red: 실패하는 테스트 먼저 작성 (컴파일도 안 돼도 됨) / 2. 🟢 Green: 테스트를 통과시키는 최소한의 코드 작성 / 3....

HoneyByte

URL 단축 서비스 설계 — 해시, Base62, 분산 ID, 캐싱, 리다이렉트

`https://honeybarrel.co.kr/products/detail?id=1234&ref=newsletter&utm_source=email` → `hny.kr/aB3x9z` — 어떻게 만드는가? 이 질문은 시스템 설계 인터뷰의 단골이지만, 실제로 구현해보면 배울 것이 훨씬 많다.

HoneyByte

Next.js 성능 최적화와 배포 — 번들 분석, 이미지 최적화, ISR, Edge Runtime, 모니터링

성능 최적화 체크리스트: / 1. 번들 분석 → `@next/bundle-analyzer`로 무거운 패키지 발견 → 동적 임포트/트리 쉐이킹 / 2. 이미지 최적화 → `next/image`로 WebP 변환 + 사이즈 자동 조정 + lazy...

HoneyByte

Next.js 테스트와 CI/CD — Jest, Testing Library, Playwright, GitHub Actions, Vercel

테스트 계층: / Unit/Integration (Jest + Testing Library): Client Component 로직, 유틸 함수, 커스텀 훅 / E2E (Playwright): 전체 사용자 시나리오, Server Component 포함, 인증 플로우 / Server Component: async...

HoneyByte

Next.js 상태 관리와 클라이언트 패턴 — Zustand, React Query, Server/Client 경계

서버 상태(Server State): 외부 API/DB에서 가져오는 데이터. `fetch` + Server Component or React Query(TanStack Query) — 캐싱, 로딩, 에러, 재검증을 자동으로 처리. / 전역 클라이언트 상태(Global Client State): 장바구니, 모달...

HoneyByte

코드 리뷰 문화와 베스트 프랙티스 — 좋은 리뷰어와 좋은 작성자가 되는 법

효과적인 코드 리뷰는 작은 PR + 명확한 피드백 + 자동화 세 축으로 구성된다. Google의 eng-practices에 따르면 "리뷰어는 코드베이스 전반의 품질을 올리는 방향으로 승인하되, 완벽주의로 리뷰를 지연하지 말라"고 한다. 실무에서는 200줄...

HoneyByte

Spring Boot 테스트 전략 — @SpringBootTest부터 Testcontainers까지

Spring Boot의 테스트 전략은 피라미드 구조로 접근한다. 빠르고 가벼운 단위 테스트(Unit Test)를 기반으로, 웹 계층만 로딩하는 `@WebMvcTest`, 데이터 계층만 로딩하는 `@DataJpaTest` 등 슬라이스 테스트를 활용해 빌드 속도를 유지하면서 각 계층을...

HoneyByte

Spring Boot 예외 처리와 검증 — 커스텀 예외부터 RFC 7807까지

Spring Boot의 예외 처리 전략은 예외 계층 설계 → `@RestControllerAdvice` 전역 처리 → `@Valid` 입력 검증 → 일관된 에러 응답 4단계로 구성된다. 커스텀 예외는 `ErrorCode` 열거형으로 관리하고, `@ExceptionHandler`가 이를 잡아...

HoneyByte

Spring Data JPA — ORM, 관계 매핑, N+1 문제, QueryDSL 완전 정복

JPA(Java Persistence API) 는 객체-관계 매핑(ORM) 표준으로, SQL 대신 객체로 DB를 다룰 수 있게 한다. Hibernate가 JPA의 기본 구현체, Spring Data JPA가 그 위에 `JpaRepository`를 제공한다. N+1 문제는 1번 쿼리로...

HoneyByte

Spring Boot 레이어드 아키텍처 — Controller/Service/Repository 완전 해부

Spring Boot의 표준 3-Tier Layered Architecture는 `Controller → Service → Repository` 흐름으로 각 계층이 명확한 책임을 가진다. Entity는 DB 매핑 객체이고 DTO는 계층 간 데이터 운반 객체로 역할이 다르다 —...

HoneyByte

Spring Boot 의존성 주입과 IoC 컨테이너 — 원리부터 실전까지

IoC(Inversion of Control) 는 객체의 생성과 의존성 연결을 개발자가 아닌 프레임워크(컨테이너)가 담당하는 설계 원칙이다. DI(Dependency Injection) 는 IoC를 구현하는 구체적인 패턴으로, 객체가 직접 의존 객체를 `new`로 생성하지 않고 외부에서 주입받는다....

HoneyByte

DesignPattern: SOLID 원칙 완벽 가이드

SOLID 원칙은 로버트 C. 마틴(Uncle Bob)이 제안한 객체 지향 설계의 5가지 핵심 원칙으로, SRP(단일 책임 원칙), OCP(개방-폐쇄 원칙), LSP(리스코프 치환 원칙), ISP(인터페이스 분리 원칙), DIP(의존성 역전 원칙)를 의미합니다. 이 원칙들은...

HoneyByte

DevCulture: Git 워크플로우 마스터 — 브랜치 전략과 협업

Git 워크플로우는 팀의 규모, 프로젝트의 특성, 배포 주기에 따라 다양한 형태로 발전합니다. 이 포스트에서는 가장 널리 사용되는 Git Flow와 최근 각광받는 Trunk-based Development(TBD)를 심층적으로 비교하고, 각 워크플로우의 장단점 및 실제...