WEB BE Repo 23

자바 패키지 네이밍 컨벤션

일반적으로 패키지 네이밍 시 사용되는 용어들의 종류와 그 의미이다.토큰보통 포함되는 위치의미/용도(관례)config최상위 또는 layer스프링 설정 클래스들 (Java Config, 빈 정의, 프로퍼티 등)domainBounded Context 안도메인 모델: 엔티티, 밸류, 애그리거트, 도메인 서비스entitydomain 하위 또는 별도JPA @ Entity 전용 클래스dto / modeldomain 옆계층 간 데이터 전달용 객체 (DTO/VO)repositoryinfrastructure 또는 domain영속성 인터페이스, Spring Data 리포지토리persistence / infra(structure)root layerDB·메시징·외부 API 등 인프라 어댑터serviceapplication la..

WEB BE Repo/JAVA 2025.04.28

Spring Web MVC가 요청을 처리하는 과정 - DispatcherServlet의 동작구조

DispatcherServlet의 doDispatch() 동작구조DispatcherServlet 구조라이브러리 : org.springframework.web.servlet.DispatcherServletDispatcherServlet도 부모 클래스에서 HttpServlet을 상속받아서 사용하고, 서블릿으로 동작한다.DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet스프링 부트는 DispatcherServlet 을 서블릿으로 자동으로 등록하면서 모든 경로( urlPatterns="/" )에 대해서 매핑한다.참고: 더 자세한 경로가 우선순위가 높다. 그래서 기존에 등록한 서블릿도 함께 동작한다요청 흐름서블릿이 호출되면 HttpServle..

WEB BE Repo/Spring 2025.04.22

캐싱 전략의 선택 방법

캐싱 전략은 읽기/쓰기 정책과 캐시 인프라 구조에 따라 달라진다. 각 전략은 상황에 맞게 선택되어야 하며, 읽기/쓰기 정책 관점, 캐시 인프라 구조 관점으로 구분할 수 있다.1. 읽기/쓰기 정책 관점Cache Aside특징주로 읽기 작업에 적합하다.개발자가 직접 캐시 히트/미스 로직을 구현한다.캐시 장애에 대비한 구성이 가능하다.데이터 업데이트 시 정합성 문제가 발생할 수 있다.동일 쿼리를 반복 수행하는 서비스에 유리하다.Write Back특징쓰기 작업에 적합하다.Cache Store가 Data Store에 Write 부하를 줄이기 위해 Throttling Queue 역할을 수행한다.캐시 장애 시 데이터 유실 위험이 있다.캐시에 변경사항을 먼저 적용하므로 정합성이 확보된다.조회되지 않는 데이터가 불필요하..

WEB BE Repo/Redis 2025.04.09

상속 관계 매핑

상속 관계 매핑은 엔티티 간의 상속 관계를 데이터베이스에 표현할 필요가 있을 때 사용하는 모델링 기법이다. 이는 객체지향의 상속 개념과 유사하게, 엔티티가 is-a 관계를 가지거나 부모 타입으로 일관되게 관리되어야 할 때 유용하다. RDBMS는 상속 개념을 직접 지원하지 않으므로 Super-Type Sub-Type Relationship이라는 기법으로 이를 대체한다.상속관계 매핑이란?필요성엔티티 간 상속 관계가 필요한 경우가 존재한다.is-a 관계: 특정 엔티티가 다른 엔티티의 특성을 물려받을 때부모 타입으로 일관된 관리: 여러 엔티티를 공통 부모 타입으로 관리해야 할 경우 - 부모 타입으로 다형적 쿼리(ex: 부모 타입으로 전부 조회)를 지원해야 할 경우대체 기법RDBMS는 상속 개념이 없으므로, 슈퍼..

WEB BE Repo/JPA 2025.03.11

Docker 개념과 기본 지식

1. Docker의 개념: 컨테이너 기반 가상화 vs. VMVM과 컨테이너의 구조를 비교하면, VM은 하이퍼바이저 위에서 각각 게스트 OS를 포함하는 반면, 컨테이너는 Docker와 같은 컨테이너 엔진 위에서 호스트 OS의 커널을 공유하며 애플리케이션과 라이브러리만 포함한다.컨테이너는 운영체제 수준에서 격리된 가상화 환경을 제공하며, 별도의 게스트 OS를 포함하지 않기 때문에 VM보다 훨씬 경량이고 빠르게 실행된다.또한, 컨테이너는 프로세스 격리를 통해 애플리케이션을 다른 환경과 분리함으로써 시스템 간 간섭을 최소화한다.Docker는 이러한 컨테이너 기술을 활용해 애플리케이션을 패키징하고 배포하는 플랫폼이다. Docker 컨테이너의 주요 이점은 다음과 같다.경량성 & 효율성: 시작 속도가 수 초 이내로 ..

백엔드 개발자를 위한 서버, 프록시 서버, 로드 밸런싱 면접 질답

웹 서버와 애플리케이션 서버의 차이점은 무엇인가요?Web Server정적 파일(HTML, CSS, JS, 이미지 등) 처리에 최적화된 서버요청을 받아 즉시 정적 자원을 반환하기 때문에 단순하고 빠른 처리를 제공클라이언트의 요청이 복잡하지 않을수록 웹 서버만으로도 충분히 대응 가능함WAS(Application Server)비즈니스 로직을 처리하고, 동적 콘텐츠를 생성하는 서버요청에 따라 데이터베이스 연동, 세션 관리 등 다양한 기능을 수행복잡하고 동적인 로직이 필요한 경우, WAS를 통해 효율적으로 구현 가능함서버 확장 방식인 수직적 확장(Scale-up)과 수평적 확장(Scale-out)의 차이점과 각각의 장단점은 무엇인가요?Scale-up(수직적 확장)서버 자체의 성능(CPU, 메모리 등)을 높여 처리..

CI/CD 와 무중단 배포

CI/CD지속적 통합 (CI)정의개발자들이 작업한 코드를 중앙 저장소에 자주 통합하는 과정이다. 이를 통해 각자의 코드가 서로 잘 어우러지는지 지속적으로 확인할 수 있다.주요 효과충돌 및 오류 조기 발견: 통합 시 발생할 수 있는 충돌이나 오류를 신속하게 파악하고 해결할 수 있다.코드 품질 향상: 서로의 코드를 검토하면서 품질을 유지하고 개선할 수 있다.지속적 배포 (CD)정의CI를 통해 통합된 코드를 자동화된 테스트와 빌드 과정을 거쳐 실제 운영 환경에 배포하는 과정이다.주요 효과신속한 사용자 전달: 사용자에게 새로운 기능과 개선 사항을 빠르게 제공할 수 있다.배포 프로세스 자동화: 수동 개입 없이 배포가 진행되어 인적 실수를 줄이고 안정성을 확보한다.두 가지 개념을 함께 활용하면 개발 프로세스 전반에..

스레드 풀 생성 전략과 작업 거절 정책

스레드 풀은 시스템 자원을 효율적으로 사용하고, 안정적인 작업 처리를 위해 필수적인 요소다. 다양한 상황에 맞춰 적절한 풀 생성 전략과 작업 거절 정책을 설정하면, 트래픽 급증 시에도 시스템이 예측 가능한 성능을 유지할 수 있다.Executor 전략Executor 스레드 풀 관리스레드 관리 속성corePoolSize기본적으로 유지되는 스레드 수다. 이 수만큼의 스레드를 초기화해두고, 작업이 들어오면 먼저 활용한다.maximumPoolSize생성될 수 있는 스레드의 최대치다. corePoolSize 이상의 스레드는 필요한 경우에만 만들고, 더 이상 새 스레드를 만들 수 없으면 작업을 거절한다.keepAliveTime, timeUnitcorePoolSize를 초과해 생성된 스레드(초과 스레드)가 대기할 수 ..

WEB BE Repo/JAVA 2025.03.09

WAS 성능 최적화 전략

1. 자바 애플리케이션 성능 최적화자바 애플리케이션의 성능을 극대화하기 위해서는 아래와 같은 다양한 접근 방법을 동시에 고려해야 한다.JVM 상태 분석프로파일링 및 모니터링 도구(JVisualVM, YourKit 등)를 활용하여 애플리케이션의 런타임 상태를 분석한다. 이를 통해 병목 현상, 메모리 사용량, 스레드 동작 등을 파악할 수 있다.GC 튜닝가비지 컬렉션(GC) 로그를 분석하고, GC 옵션을 조정하여 불필요한 pause 시간을 줄인다. 상황에 따라 CMS, G1, ZGC 등 다양한 GC 방식을 테스트하여 최적의 성능을 도출한다.JVM 파라미터 조정힙 메모리 크기, 스택 크기, JIT 컴파일러 옵션 등 JVM의 다양한 파라미터를 상황에 맞게 조정하여 최적의 실행 환경을 구성한다.위와 같은 방법들을 ..

WEB BE Repo 2025.03.08

스프링이란?

스프링스프링은 자바 기반의 애플리케이션 개발을 위한 경량 프레임워크로, 모듈 간 결합도를 낮추고 유지보수를 용이하게 하는 다양한 기능을 제공한다. 스프링은 핵심 기능인 IoC(Inversion of Control)와 DI(Dependency Injection)를 중심으로 작동하며, AOP(Aspect Oriented Programming)를 비롯한 여러 부가기능을 지원한다.스프링 프레임워크의 주요 특징스프링은 다음과 같은 주요 특징을 갖고 있다:IoC와 DI를 통한 결합도 감소스프링 컨테이너는 객체의 생성, 관리, 라이프사이클을 담당함으로써 개발자가 직접 객체를 생성하고 의존성을 관리할 필요를 줄여준다. 이를 통해 컴포넌트 간의 결합도를 낮추고, 유지보수와 확장이 용이한 애플리케이션을 구현할 수 있다.I..

WEB BE Repo/Spring 2025.03.08