WEB BE 21

상속 관계 매핑

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

WEB BE/JPA 15:28:18

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 전략Executor 스레드 풀 관리스레드 관리 속성corePoolSize기본적으로 유지되는 스레드 수다. 이 수만큼의 스레드를 초기화해두고, 작업이 들어오면 먼저 활용한다.maximumPoolSize생성될 수 있는 스레드의 최대치다. corePoolSize 이상의 스레드는 필요한 경우에만 만들고, 더 이상 새 스레드를 만들 수 없으면 작업을 거절한다.keepAliveTime, ..

WEB BE/JAVA 2025.03.09

Java 의 주요 자료구조 - ArrayList & Hash Map

ArrayList의 동작 방식ArrayList는 내부적으로 배열을 사용하여 데이터를 저장하며, 그 작동 원리는 다음과 같다.내부 배열 관리데이터를 순차적으로 저장하는 배열을 사용한다.배열은 일정한 용량(Capacity)을 가지며, 초기 용량은 지정할 수 있다.용량 확장 방식add 연산 시 남은 공간이 없으면, 현재 용량의 50%를 추가하여 새로운 배열을 생성한다.이 과정에서 기존 배열의 내용을 arraycopy 메서드를 사용하여 새로운 배열로 복사한다.용량 확장 시 복사로 인한 성능 오버헤드가 발생하지만, 대부분의 삽입 연산은 평균적으로 O(1)의 시간 복잡도를 유지한다.참고로, C++의 vector는 용량을 두 배로 늘리는 방식으로 확장하는 점에서 차이가 있다.해시테이블의 작동 원리 및 충돌 해결 방법..

WEB BE/JAVA 2025.03.09

WAS 성능 최적화 전략

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

WEB BE 2025.03.08

스프링이란?

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

WEB BE/Spring 2025.03.08

Java 에 대하여

자바의 기본 특징자바는 객체지향 프로그래밍(OOP)에 기반하여 설계되었으며, "Write Once, Run Anywhere"라는 플랫폼 독립성을 갖는다. 이는 한 번 작성된 코드가 어떠한 운영체제에서도 동일하게 실행될 수 있음을 의미한다.JDK 구조자바 개발 환경은 JDK(Java Development Kit), JRE(Java Runtime Environment), 그리고 JVM(Java Virtual Machine)으로 구성되며, 각 계층은 다음과 같이 역할을 분담한다.1. JDKJDK는 자바 개발에 필요한 모든 도구를 포함하는 패키지이다.JDK의 주요 구성 요소는 다음과 같다.JRE: 자바 애플리케이션을 실행하기 위한 환경을 제공한다.개발 도구: 자바 컴파일러(javac), 패키징 도구(jar), ..

WEB BE/JAVA 2025.03.07

AMI와 EC2

1. AMI (Amazon Machine Image)1) AMI의 정의AMI는 EC2 인스턴스를 실행하기 위한 템플릿이다. 운영체제, 애플리케이션, 구성 정보가 포함되어 있어, 이를 바탕으로 동일한 환경을 필요로 하는 여러 인스턴스를 쉽게 생성할 수 있다.2) 유연성과 확장성 확보AMI를 활용하면 여러 인스턴스에 동일한 이미지를 적용하여 일관된 환경을 빠르게 구성할 수 있다. 예를 들어, 사용자가 직접 만든 AMI를 Auto Scaling에 적용하면 트래픽 증가 시점을 감지해 자동으로 동일 환경의 인스턴스를 스케일 아웃할 수 있다.3) AMI 선택 시 고려 요소운영체제: Linux, Windows 등 사용하려는 운영체제가 무엇인지 확인해야 한다.리전: AMI는 리전에 따라 사용 가능한 이미지가 다를 수 ..

WEB BE/AWS 2025.03.06