- 데이터베이스 인덱스에 대해서 설명해주세요.2024-11-25 09:21:18인덱스는 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로 백과사전의 색인과 같습니다. 저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지하는 것이 특징입니다. 이러한 특징으로 인해 인덱스는 INSERT, UPDATE, DELETE의 성능이 희생된다는 것이 단점입니다.인덱스는 어떤 자료 구조로 이루어져있나요? 🤔MySQL InnoDB를 기준으로 설명드리자면, B+Tree와 같은 변형 B-Tree 자료구조를 이용해서 인덱스를 구현합니다. 기본 토대는 B-Tree 인덱스이기 때문에 이를 기준으로 설명합니다. B-Tree 인덱스는 컬럼의 값을 변형하지 않고 인덱스 구조체 내에서 항상 정렬된 상태로 유지합니다.B-Tree(Balanced-Tree)에서는 크게 3가지 노드가 존재합니다. 최상위에 ..
- [로드맵] Caching2024-11-25 09:18:51캐싱은 컴퓨팅에서 자주 액세스하는 데이터를 빠르게 저장하고 검색하여 원래의 느린 소스에서 반복적으로 페치할 필요성을 줄이는데 사용되는 기술이다. 기본 저장소보다 액세스 속도가 빠른 위치에 데이터 사본을 보관하는 것을 포함한다. 캐싱은 브라우저 캐싱, 애플리케이션 수준 캐싱, 데이터베이스 캐싱을 포함한 다양한 수준에서 발생할 수 있다. 대기 시간을 줄이고, 네트워크 트래픽을 줄이며, 서버 또는 데이터베이스의 부하를 낮춰 성능을 크게 향상시킨다. 일반적인 캐신 전략에는 시간 기반 만료, 가장 최근에 사용(LRU) 알고리즘, 쓰기-통과 또는 쓰기-다시 쓰기 정책이 있다. 캐싱은 속도와 효율성을 향상시키지만 데이터 일관성과 신선도를 유지하는데 어려움이 있다. 효과적인 캐시 관리가 동적 시스템에서 성능 향상과 최..
- [로드맵] API 설계 원칙2024-11-24 22:50:22HATEOAS(Hypermedia As The Engine Of Application State)HATEOAS는 RESTful 아키텍처의 제약 조건으로, 클라이언트가 응답에서 제공된 하이퍼미디어 링크를 통해 API를 동적으로 탐색할 수 있도록 한다. URL이나 엔드포인트를 하드 코딩하는 대신, 클라이언트는 웹 브라우저가 웹페이지의 링크를 따라가는 것처럼 이러한 링크를 통해 사용 가능한 작업을 발견한다. 이를 통해 더 큰 유연성을 제공하고 클라이언트를 서버 측 변경 사항에서 분리하여 기존 클라이언트를 중단하지 않고도 시스템을 보다 적응적이고 확장 가능하게 만든다.이는 REST의 무상태 원칙과 자체 설명적 메시지의 핵심 요소이다. OpenAPI Specification(OAS) OpenAPI Specifi..
- [로드맵] 인증 및 권한 부여 메커니즘2024-11-23 18:26:02AuthenticationAPI 인증은 API에 액세스하려는 클라이언트의 신원을 확인하고 권한이 있는 사용자 또는 애플리케이션만 API 리소스와 상호 작용할 수 있도록 하는 프로세스이다. 일반적인 방법으로는 API 키, OAuth 2.0 JSON 웹 토큰(JWT), 기본 인증 및 OpenID Connect가 있다. 이러한 기술은 간단한 토큰 기반 접근 방식에서 인증과 권한 부여를 모두 처리하는 보다 정교한 프로토콜에 이르기까지 복잡성과 보안 수준이 다양하다. API 인증은 민감한 데이터를 보호하고, 무단 액세스를 방지하고, 사용 추적을 가능하게 하며, 리소스 액세스에 대한 세부적인 제어를 제공할 수 있다. 인증 방법의 선택은 보안 요구 사항, 클라이언트 유형, 구현 용이성 및 확장성 요구 사항과 같은 요..
- 일급 컬렉션이 무엇인가요?2024-11-22 09:55:15일급 컬렉션(First-Class Collection)은 하나의 컬렉션을 감싸는 클래스를 만들고, 해당 클래스에서 컬렉션과 관련된 비즈니스 로직을 관리하는 패턴을 말합니다. 아래 코드 중에서 Order의 List 자료구조를 감싼 Orders가 일급 컬렉션의 예시입니다.// 일급 컬렉션public class Orders { private final List orders; public Orders(List orders) { validate(orders); // 검증 수행 ... } public void add(Order order) { if (order == null) { throw new IllegalArgumentExcepti..
- 자바에서 Checked Exception과 Unchecked Exception에 대해서 설명해주세요.2024-11-21 09:18:14Checked Exception은 컴파일 시점에 확인되며, 반드시 처리해야 하는 예외입니다. 자바에서는 IOException, SQLException 등이 이에 속합니다. 메서드 시그니처에 throws 키워드를 사용하여 명시적으로 선언해야 하며, 호출하는 쪽에서 반드시 예외를 처리하거나 다시 던져야 합니다.Unchecked Exception은 런타임 시점에 발생하는 예외로, 컴파일러가 처리 여부를 강제하지 않습니다. 자바에서는 RuntimeException을 상속한 예외들이 해당됩니다. 일반적으로 프로그래머의 실수나 코드 오류로 인해 발생합니다.각각 언제 사용해야 할까요? 🤔정답이 없는 영역이라고 생각해요. 자신의 주관을 만들면서 학습해봐도 좋을 것 같아요!Checked Exception은 외부 환경과..
- [로드맵] API 접근 방식2024-11-21 09:16:01REST REST API(Representational State Transfer Application Programming Interface)는 네트워크 애플리케이션을 설계하기 위한 아키텍처 스타일이다. 리소스와 상호 작용하기 위해 표준 HTTP 메서드(GET, POST, PUT, DELETE)를 사용하며, 리소스는 URI(Uniform Resource Identifiers)로 표현된다. REST API는 무상태이므로 클라이언트에서 서버로 보내는 각 요청에는 요청을 이해하고 처리하는 데 필요한 모든 정보가 포함되어야 한다. 표준 HTTP 상태 코드를 사용하여 요청의 결과를 나타내고 JSON 또는 XML과 같은 형식으로 통신하는 경우가 많다. REST API는 단순성, 확장성, 웹 서비스 및 애플리케이션..
- JPA의 N + 1 문제에 대해서 설명해주세요.2024-11-20 09:41:49JPA N + 1 문제는 연관 관계가 설정된 엔티티를 조회할 경우에, 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생하는 현상입니다. 예를 들어, 블로그 게시글과 댓글이 있는 경우, 게시글을 조회한 후 각 게시글마다 댓글을 조회하기 위해 추가 쿼리가 발생한다면 N + 1 문제가 발생한 것입니다. 게시글이 10개라면 총 11개의 쿼리(게시글 조회 1개 + 각 게시글의 댓글 조회 10개)가 실행됩니다.findAll 메서드의 글로벌 패치 전략 별 N + 1 문제 상황에 대해서 설명해주세요. 🤓spring data jpa에서 제공하는 repository의 findAll 메서드입니다!글로벌 패치 전략을 즉시로딩으로 설정하고 findAll()을 실행하면 N + 1 문제가 발생합니다. 이는 find..