늦은 프로그래밍 이야기
230328 TIL (기술면접 스터디) 본문
DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요
DI(Dependency Injection)는 의존성 주입이라는 뜻으로, 객체 간의 의존 관계를 컨테이너가 관리하여 객체 간 결합도를 낮추는 디자인 패턴입니다.
객체 간의 의존 관계를 직접 코드에서 구현하는 것이 아니라, 컨테이너가 의존 관계를 관리하여 객체 생성 및 의존 관계 설정을 대신 처리하는 방식입니다. 이를 통해 코드의 유지보수성, 확장성, 테스트 용이성 등이 증가하게 됩니다.
DI의 주요 장점은 다음과 같습니다.
- 결합도의 감소
DI를 적용하면 의존성이 감소하므로, 객체 간의 결합도가 낮아집니다. 이를 통해 코드의 재사용성, 유지보수성, 확장성 등이 증가하게 됩니다. - 모듈화
DI를 적용하면 모듈화가 용이해집니다. 모듈 단위로 객체를 구성하여 의존성을 주입하면, 모듈 간의 의존 관계가 명확하게 구분됩니다. 이를 통해 코드의 구성 요소들이 서로 분리되어 유지보수와 테스트가 용이해집니다. - 테스트 용이성
DI를 이용하면 의존 관계를 주입할 때, Mock Object를 사용하여 테스트를 진행할 수 있습니다. 이를 통해 테스트 용이성이 높아지게 됩니다. - 코드의 가독성
DI를 적용하면 코드의 가독성이 향상됩니다. 의존성 주입을 통해 객체 간의 의존 관계가 명시되므로, 코드의 동작 과정을 파악하기 쉬워집니다. - 유연성
DI를 적용하면 객체 간의 의존 관계를 유연하게 변경할 수 있습니다. 컨테이너를 이용하여 의존 관계를 설정하므로, 의존성이 변경될 경우 해당 코드를 수정할 필요 없이 컨테이너 설정만 변경하면 됩니다.
DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까요?
DB에서 인덱스는 데이터베이스 테이블의 특정 컬럼이나 컬럼의 조합에 대한 검색 성능을 향상시키는 데 사용됩니다.
인덱스를 사용하면 다음과 같은 장점이 있습니다.
- 빠른 검색 속도
인덱스를 사용하면 데이터 검색 속도가 빨라집니다. 인덱스가 있는 컬럼을 검색하면 인덱스를 이용하여 빠르게 해당 레코드를 찾아내기 때문입니다. - 쿼리 최적화
인덱스를 사용하면 쿼리 실행 속도가 향상됩니다. 인덱스가 있는 컬럼을 사용하는 쿼리는 인덱스를 이용하여 최적화된 실행 계획을 생성하기 때문입니다. - 데이터 정렬
인덱스를 사용하면 데이터를 정렬할 수 있습니다. 인덱스를 생성할 때 ASC(오름차순)나 DESC(내림차순)로 정렬할 수 있기 때문입니다. - 고유 제약 조건
인덱스를 사용하면 테이블의 특정 컬럼에 고유 제약 조건을 부여할 수 있습니다. 이를 통해 해당 컬럼에 중복된 데이터가 입력되는 것을 방지할 수 있습니다. - 외래 키 제약 조건
인덱스를 사용하면 테이블 간의 관계를 정의할 수 있는 외래 키 제약 조건을 설정할 수 있습니다. 이를 통해 데이터 무결성을 유지할 수 있습니다.
(단점) 하지만 인덱스를 사용하는 것은 데이터베이스의 성능을 향상시키는 것이기 때문에, 인덱스를 지나치게 많이 사용하면 성능 저하나 공간 낭비 문제가 발생할 수 있습니다. 또한 인덱스를 사용하면 데이터 변경 작업(INSERT, UPDATE, DELETE)에 대한 성능 저하가 발생할 수 있으므로, 적절한 인덱스 사용 및 관리가 필요합니다.
Comments