목록전체 글 (141)
종식당

🪥 로그로그는 서버가 동작할 때 서버의 상태와 동작 정보를 시간 경과에 따라 기록된 결과이다. 이는 시스템의 오류와 문제들을 쉽게 찾아낼 수 있도록 도와준다.🐉 메트릭메트릭은 시스템의 성능과 상태에 대한 통계적인 정보를 의미한다. 메트릭을 잘 수집하면 시스템의 현재 상태를 쉽게 파악할 수 있고, 사업 현황에 관한 유용한 정보를 얻을 수 있다.가령, 메트릭은 DAU, Retension, CPU사용량, 메모리 사용량 등이 있다. 🌭 메트릭을 수집하는 이유CPU, 메모리, JVM 사용량 지표 수집을 통해 서비스가 현재 안정적으로 동작하고 있는지 파악 가능하다.또한, 톰캣 스레드 풀과 커넥션 풀의 상태와 error레벨 로그를 수집한 이유는 서버 프로그램 내부에 비정상적인 상황이 생기는 것을 신속히 대응하기..

💟 1. DNS 조회첫 번째로 DNS조회가 일어난다. 사용자가 www.google.com을 입력하면, 브라우저는 먼저 이 도메인 이름을 IP주소로 변환해야 한다. 이 과정을 DNS조회라고 한다.브라우저는 캐시 된 DNS기록을 먼저 확인하고, 없으면 로컬 DNS서버에 요청하여 www.google.com에 해당하는 IP주소를 얻는다.🤡 2. TCP 연결 수립두 번째로 TCP 연결 수립이다. IP주소가 확인되면, 브라우저는 서버와 TCP연결을 수립한다. TCP는 데이터를 신뢰성 있게 전달하기 위한 프로토콜이다.이 과정에서는 서버와 3-way handshake를수행한다. 즉, 브라우저가 SYN패킷을 보내고, 서버가 SYN-ACK패킷을 보내며, 다시 브라우저가 ACK패킷을 보내는 과정이다. 🦾 3. H..

🍳 인덱스인덱스는 데이터베이스 테이블의 검색 속도를 향상하기 위한 자료구조로 백과사전의 색인과 같다.저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지하는 것이 특징이다.이러한 특징으로 인해 인덱스는 INSERT, UPDATE, DELETE의 성능이 희생된다는 것이 단점이다.🥬 인덱스는 어떤 자료 구조로 이루어져 있나요?MYSQL InnoDB를 기준으로 B+Tree와 같은 변형 B-Tree 자료구조를 이용해서 인덱스를 구현한다.기본 토대는 B-Tree 인덱스이기 때문에 이를 기준으로 설명한다.B-Tree 인덱스는 칼럼의 값을 변형하지 않고 인덱스 구조체 내에서 항상 정렬된 상태로 유지한다.B-Tree에서는 크게 3가지 노드가 존재한다. 최상위에 하나의 루트 노드가 존재하며, 가장 하위 노드인 리프..

🎞️ JPA N + 1 문제JPA N + 1 문제는 연관 관계가 설정된 엔티티를 조회할 경우에, 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생한다. 예를 들어, 블로그 게시글과 댓글이 있는 경우, 게시글을 조회한 후 각 게시글마다 댓글을 조회하기 위한 추가 쿼리가 발생할 수 있다. 이를 N+1 문제라고 한다.⭐ findAll 메서드의 글로벌 패치 전략 별 N + 1 문제 상황에 대해서 설명해 주세요.spring data jpa에서 제공하는 findAll()을 실행하면 N+1문제가 발생한다. 이는 findAll()은 select u from User u라는 JPQL 구문을 생성해서 실행하기 때문이다. JPQL은 글로벌 패치 전략을 고려하지 않고 쿼리를 실행한다. 모든 User를 조회하는..

💀 일급 컬렉션 (First-Class Collection)일급 컬렉션은 하나의 컬렉션을 감싸는 클래스를 만들고, 해당 클래스에서 컬렉션과 관련된 비즈니스 로직을 관리하는 패턴을 말한다. 컬렉션이란 여러 개의 객체를 저장하고 관리하는 자료 구조를 의미한다. Java에서는 List, Set, Map 등의 컬렉션 프레임워크가 대표적인 예시이다. 아래 코드 중에서 Order의 List자료구조를 감싼 Orders가 일급 컬렉션의 예시이다.// 일급 컬렉션public class Orders { private final List orders; public Orders(List orders) { validate(orders); // 검증 수행 ... } public v..