2026/04 4

[11] Container 와 Doker, 그리고 Orchestration

01. Container vs Docker1. 컨테이너 (Container)컨테이너란 운영체제 환경에서 리눅스 커널의 기능을 활용하여 프로세스를 격리하는 가상화 기술을 의미한다. 즉, 컨네이너 내부에서 실행되는 애플리케이션은 마치 독립된 OS 위에서 실행되는 것처럼 보이지만, 실제로는 호스트 OS를 공유하고 있는 기술을 뜻한다. OS를 전체를 가상화하는 가상 머신(Virtual Machine)과 달리 필요한 자원만 격리하여 가볍고 빠르다는 특징이 있다. 2. 도커 (Docker)도커(Docker)란 컨테이너 기술을 손쉽게 사용할 수 있도록 만들어진 오픈소스 플랫폼을 의미한다. 즉, 개발자가 만든 애플리케이션을 빠르게 배포 및 실행할 수 있도록, 컨테이너 기술을 사용자 친화적으로 포장한 도구를 뜻한다. 이..

[10] 계층별 입력값 검증과 Mockito

01. 계층별 입력값 검증의 범위와 책임주로 상위 계층인 컨트롤러(Controller)에서 형식을 걸러내고, 하위 계층인 서비스(Service)와 엔티티(Entity)에서는 의미를 검증한다. 이러한 전략은 중복 검증을 방지할 뿐만 아니라, 핵심 비지니스 규칙을 하위 계층에서 한 번 더 보호함으로써 객체의 무결성을 보장하고 안정성을 확보한다. 계층범위책임 컨트롤러(Controller)문법적 검증(Syntactic validation)값의 공백 / 형식 / 범위 등 검증@Valid 및 Bean Validation 활용서비스(Service)논리적 / 도메인 검증(Semantic Validation)시스템 상태와 관련된 검증DB 조회가 필요한 비지니스 규칙엔티티(Entity)객체의 무결성 보장객체 유효성 검증 ..

[09] JPA의 N+1 문제, 그리고 트랜잭션의 ACID

01. JPA N+1 문제1. N+1 문제란?연관 관계가 설정된 엔티티를 조회할 때, 의도하지 않은 추가 쿼리가 조회된 데이터 개수(N)만큼 발생하는 현상을 뜻한다. 예를 들어, 10개의 게시글을 조회한 뒤 각 게시글의 작성자를 출력하고자 할 때, 게시글을 가져오는 쿼리 1번 외에 작성자를 찾기 위한 쿼리가 10번 더 실행되는 것이 대표적인 N+1 문제라고 할 수 있다. 이러한 N+1 문제는 JPA가 JPQL을 실행할 때, 연관 관계 데이터를 고려하지 않고 주 객체를 우선 조회하기 때문에 발생한다. 즉, JPA는 먼저 연관된 데이터를 프록시(가짜 객체)로 채워 주 객체를 조회한 후에, 실제 연관 데이터가 사용되는 시점에 각각 추가 쿼리를 실행한다. 이러한 동작은 결과적으로 한 번의 쿼리로 처리할 수 있는..

[08] DDL과 DML, 그리고 역정규화

01. DDL과 DML1. 데이터 정의어 (DDL, Data Defination Language)데이터 정의어란 주로 DB를 설계 및 관리하는 사람이 사용하는 언어로, 데이터베이스 구조를 생성 / 수정 / 삭제하는 언어를 뜻한다.DDL 예시CREATE데이터베이스 구조 생성CREATE INDEX 인덱스 이름] ON [테이블(속성)]ALTER데이테베이스 구조 수정ALTER TABLE [테이블] ADD [속성 이름] [속성 타입]DROP데이버테이스 구조 삭제DROP [테이블]TRUNCATE데이터베이스 구조는 냅두되, 내용만 삭제TRUNCATE [테이블] 2. 데이터 조작어 (DML, Data Manipulation Language)데이터 조작어란 주로 데이터베이스 구조 내 테이블에 저장될 데이터를 생성 / 수..