Development/Backend 11

[매일메일] 단위 테스트와 통합 테스트의 차이점은 무엇인가요?

단위 테스트와 통합 테스트의 차이점은 무엇인가요?1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)1) 단위 테스트소프트웨어 테스트의 한 유형으로, 소프트웨어의 개별 구성 요소 또는 모듈이 예상대로 작동하는지 검증하는 과정“단위”는 보통 메서드. 함수, 또는 클래스와 소프트웨어의 가장 작은 테스트 부분을 의미특징독립성빠른 실행모의 객체 사용세밀한 검증장점빠른 실행 속도독립성코드 커버리지 향상디버깅 용이성단점제한된 범위모킹의 복잡성2) 통합 테스트소프트웨어의 개별 구성 요소들이 모여 전체 시스템에서 올바르게 동작하는지 검증하는 테스트 방법이다.단위테스트가 개별 모듈 또는 클래스의 기능을 검정하는 것에 초점을 맞춘다면, 통합 테스트는 이들 모듈이 서로 통합되어 상호작용할 때 발생할 수 있는 문제를..

Development/Backend 2025.09.18

[매일메일] 동기 방식으로 외부 서비스를 호출할 때 외부 서비스 장애가 나면 어떻게 조치할 수 있나요? + 동기와 비동기의 차이점은 무엇인가요?

동기 방식으로 외부 서비스를 호출할 때 외부 서비스 장애가 나면 어떻게 조치할 수 있나요?1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)1) 동기 vs 비동기 통신동기(Synchronous): 요청이 끝날 때까지 대기 → 직렬적 실행, 장애 전파에 취약비동기(Asynchronous): 요청 후 기다리지 않고 다른 작업 수행 → 콜백·이벤트 기반, 높은 처리량멀티스레딩과 비동기멀티스레딩: 여러 스레드를 병렬 실행 (context switching 비용 존재)비동기: Non-block I/O 기반, 적은 스레드로도 높은 성능→ 최신 추세: “스레드는 최소화, Non-block I/O로 처리량 극대화” 2) Block I/O vs Non-block I/OBlock I/O: 작업이 완료될 때까지 ..

Development/Backend 2025.09.18

[매일메일] @Component, @Controller, @Service, @Repository의 차이점에 대해서 설명해주세요.

@Component, @Controller, @Service, @Repository의 차이점에 대해서 설명해주세요.1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)어노테이션적용 계층주요 역할스프링의 추가 기능코드 예시@Component전 계층 (범용)스프링 IoC 컨테이너에 빈(Bean)으로 등록- 의존성 주입(DI) 대상이 될 수 있음- 특별한 기능 없음 (단순 빈 등록)java@Componentpublic class MyUtil {...}@RepositoryPersistence Layer (DAO/DB)데이터베이스와 직접 상호작용하는 DAO 정의- 발생한 DB 관련 예외를 DataAccessException 계열 예외로 변환 (예외 번역)- 컴포넌트 스캔 시 자동 빈 등록java@Repo..

Development/Backend 2025.09.05

[매일메일] equals와 hashCode는 왜 함께 재정의해야 할까요?

equals와 hashCode는 왜 함께 재정의해야 할까요?1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)1) 객체 비교: 동일성과 동등성자바에서 객체 비교는 두 가지 방식이 있다:==는 동일성(Identity)을 비교한다. 즉, 같은 객체 인스턴스인지 확인하는 연산자다.equals()는 동등성(Equality)을 비교한다. 즉, 내용이 같은지 판단하는 메서드다.예를 들어 new User("kim") 두 개를 만들면, ==는 false지만 equals()는 true일 수 있다.2) equals()의 의미객체가 의미상으로 같은지를 판단하는 메서드다.기본 구현은 ==처럼 작동하지만, 의미 있는 비교를 위해 오버라이드한다.주로 두 객체가 논리적으로 같은 상태를 가졌는지 판단하는 데 사용된다.3)..

Development/Backend 2025.09.05

[매일메일] 로그와 메트릭을 설명해주세요.

로그와 메트릭을 설명해주세요.1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)1) 로그 (Log)정의시스템이나 애플리케이션에서 발생하는 사건/활동 기록을 텍스트 형식으로 저장한 데이터주로 디버깅, 문제 해결, 보안 감사, 시스템 상태 분석에 사용특징텍스트 기반: 사람이 읽을 수 있는 형식으로 기록시간 순서 기록: 이벤트 발생 순서대로 저장컨텍스트 제공: 타임스탬프, 이벤트 유형, 메시지 내용 포함예시웹 서버 로그: 클라이언트 요청 정보 (IP, HTTP 메서드, URL 등)애플리케이션 로그: 특정 기능 호출, 예외 발생 메시지보안 로그: 사용자 인증 시도, 권한 변경 기록활용문제 해결: 애플리케이션 오류, 서버 다운 원인 파악보안: 비정상적인 접근 시도 탐지운영 분석: 사용량, 오류 빈도 확..

Development/Backend 2025.09.05

[매일메일] 얕은 복사와 깊은 복사에 대해서 설명해주세요.

얕은 복사와 깊은 복사에 대해서 설명해주세요.1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)얕은 복사(Shallow Copy) vs 깊은 복사(Deep Copy)얕은 복사 (Shallow Copy)개념: 객체 자체만 복사하고, 내부에 포함된 참조형 변수들은 주소값을 그대로 복사한다.특징:새로운 객체가 만들어지지만, 내부 참조 필드는 원본과 동일한 객체를 가리킴.따라서 참조된 객체의 값이 변경되면 원본과 복사본 모두 변경된다.예시:→ 같은 객체를 바라보기 때문에 원본 변경 시 복사본도 영향 받음.PhysicalInformation physicalInformationShallowCopy = physicalInformation;깊은 복사 (Deep Copy)개념: 객체와 그 내부 참조 필드까지 ..

Development/Backend 2025.09.05

[매일메일] 데이터베이스 인덱스에 대해서 설명해주세요.

데이터베이스 인덱스에 대해서 설명해주세요.1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)인덱스(Index)란?정의: 추가적인 쓰기 작업과 저장 공간을 사용하여 데이터베이스 테이블의 검색 속도를 향상시키는 자료구조(책의 색인처럼 특정 데이터를 빠르게 찾을 수 있음)장점SELECT 뿐만 아니라 UPDATE, DELETE도 먼저 대상을 빠르게 찾아야 하기 때문에 성능 향상에 도움.Full Scan(테이블 전체 탐색)을 줄여 효율적인 검색 가능.-- 인덱스 생성CREATE INDEX idx_users_name ON users(name);-- 인덱스 사용 조회SELECT * FROM users WHERE name = 'Choi';단점INSERT, DELETE, UPDATE 시 인덱스도 갱신해야 하므..

Development/Backend 2025.09.05

[매일메일]자바에서 Checked Exception과 Unchecked Exception에 대해서 설명해주세요.

자바에서 Checked Exception과 Unchecked Exception에 대해서 설명해주세요.1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)프로그램 실행 중에 개발자의 실수로 예기치 않은 상황이 발생했을 때예를들어, 배열의 범위를 벗어난(ArrayIndexOutOfBoundsException), 값이 null이 참조변수를 참조(NullPointerException),존재하지 않는 파일의 이름을 입력(FileNotFoundException) 등등이 있습니다체크 예외 Checked ExceptionRuntimeException의 하위 클래스가 아닌 Exception 클래스의 하위 클래스반드시 에러 처리를 해야하는 특징( try/catch pr throw)을 가지고 있음예를들어,존재하지 ..

Development/Backend 2025.09.05

[매일메일] JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용해야 할까요?

JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에서 사용해야 할까요?1. 직접 조사(구글링, 공식문서, 기술 포스팅 등으로 학습)JPAJava Persistence API의 약자자바에서 관계형 데이터베이스를 사용하는 데 필요한 기능을 제공하는 ORM 기술관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스. 라이브러리가 아닌 인터페이스이므로 특정 기능을 자체 수행하지 않음Spring Data JPAJPA를 쉽게 사용할 수 있도록 스프링에서 제공하는 프레임워크쿼리 생성, 페이징, 정렬, 캐싱 등의 기능 제공다양한 데이터베이스와의 호환을 도와줌ddl-autoJPA 구현체인 Hibernate가 엔티티 클래스 기반으로 데이터베이스 스키마를 어떻게 생성하거나 검증할지 결정하는 설정값applic..

Development/Backend 2025.09.04

[Backend] 초보 개발자를 위한 자바·스프링 핵심 가이드: DI/IoC와 Factory 이해

📑 목차1) 자바 기본 용어2) OOP(객체지향) 핵심3) Factory 패턴 (생성 책임 분리)4) DI/IoC 개념5) 스프링 매핑6) 어노테이션 → 컨테이너 → 인젝션 (역할 매핑)7) 스프링 빈(Spring Bean)8) 스프링 IoC 컨테이너(ApplicationContext)9) 주입 방식 비교10) Factory vs DI (언제 무엇을?)11) 마무리 1) 자바 기본 용어클래스(Class): 객체를 만들기 위한 설계도객체(Object, 인스턴스): 클래스로부터 생성된 실체생성자(Constructor): 객체 생성 시 1회 호출되는 초기화 전용 메서드메서드(Method): 동작(기능)Setter: 값 변경·검증에 활용인터페이스(Interface): 규약/계약 정의(구현 클래스는 이를 반드시..

Development/Backend 2025.08.25