전체보기

    서킷브레이커 정리 및 resilience4j 적용기

    서킷브레이커 정리 및 resilience4j 적용기

    resilience4jMSA 환경에서 서킷브레이커, 유량제어는 매우 중요한 개념으로 보다 더 안전한 서비스 운영을 위해 사용되는 개념이다.서비스가 확장되면서 같은 팀 내에서 분리된 서비스가 한 쪽으로 의존(트래픽)을 하면서 A의 서버가 B의 API를 비동기로 호출하면서 데이터를 가져오는 상황이 발생한다.A의 서버를 개발하는 나는 몇 가지 상황을 대비해야한다.B의 서버가 죽어있다면?B의 서버가 CPU 자원 부족으로 죽기 직전이라면?B의 서버가 순간적인 에러를 뱉는다면?여기서 A서버는 B의 서버가 회복할 수 있도록 기다려줌과 동시에 장애가 전파되지 않도록 막아야한다. 여기서 내가 가져올 수 있는 것은 서킷브레이커이다.서킷브레이커란? 집에서 사용하는 두꺼비집이라 불리는 누전차단기, 회로차단기가 서킷브레이커이다..

    [Java] 릴리즈 버전별 특징

    Java 8 LTS (2014.03)지원 기간 : 2030.12람다 표현식 (Lambda Expressions)스트림 API (Streams API)새로운 날짜와 시간 API (java.time)Ex) LocalDateTime인터페이스의 디폴트 메서드 (Default Methods)메타공간 (Metaspace) 메모리 관리Permanent Heap 영역이 제거 - Perm은 JVM에 의해 크기가 강제되던 영역Metaspace영역은 OS레벨에서 관리하는 영역이 되기에 Metaspace가 Native메모리를 이용함으로서 개발자는 영역 확보의 상한에 대한 오버헤드가 감소한다.Java 9 (2017.09)모듈 시스템 (Project Jigsaw)Jigsaw는 모듈을 만들고 모듈에 명시적으로 외부에서 호출할 수 ..

    [JAVA] Arrays.sort() Collection.sort() 정렬 알고리즘

    [JAVA] Arrays.sort() Collection.sort() 정렬 알고리즘

    Java에서 정렬에 대해서 크게 Arrays.sort()와 Collection.sort()가 존재하는데 이 두 메서드는 내부 구현에 차이가 있어 정리를 하고자 한다.Arrays.sort()배열을 정리하는데 사용된다. 원시 타입 배열(int[], char[], etc.)와 객체 배열(String[], Integer[], etc.) 모두 정렬할 수 있다.정렬 방식원시 타입 배열의 경우, Dual-Pivot Quicksort 객체 배열의 경우, TimSortCollection.sort()List를 정렬하는데 사용되어 List 인터페이스를 구현한 모든 컬렉션(ArrayList, LinkedList 등)을 정렬할 수 있다.정렬방식TimSort 방식으로 정렬을 하는데 TimSort를 정렬에 Arrays.sort()..

    [DB] Mysql 옵티마이저 힌트

    옵티마이저MySQL 옵티마이저는 SQL 쿼리를 가장 효율적인 방법으로 실행하기 위해 쿼리를 분석하고 실행 계획을 선택하는 구성 요소입니다. 데이터베이스 내부에서 쿼리를 처리할 때 여러 가지 실행 경로가 가능할 수 있는데, 옵티마이저의 역할은 가능한 실행 경로 중에서 비용(리소스 사용, 시간 등)이 가장 낮은 경로를 찾아 선택하는 것입니다.MySQL 옵티마이저의 주요 기능쿼리 분석: 옵티마이저는 제공된 SQL 쿼리를 분석하여 구문적, 의미적 오류가 없는지 확인합니다. 이 단계에서 쿼리가 유효하고 실행 가능한지 검토합니다.쿼리 최적화: 옵티마이저는 다양한 최적화 기법을 사용하여 쿼리를 개선합니다. 예를 들어, 필요없는 조건을 제거하거나, 조인 순서를 변경하거나, 인덱스를 활용하는 방법 등을 적용할 수 있습니..

    [DB] 풀 테이블 스캔과 인덱스 스캔

    mysql 옵티마이저는 다음과 같은 조건이 일치할때 주로 풀 테이블 스캔 테이블의 레코드 건수가 너무 작아서 인덱스를 통해 읽는 것보다 풀 테이블 스캔을 하는 편이 더 빠른경우 WHERE 절이나 ON 절에 인덱스를 이용할 수 있는 적절한 조건이 없는 경우 인덱스 레인지 스캔을 사용할 수 있는 쿼리라고 하더라도 옵티마이저가 판단한 조건 일치 레코드 건수가 너무 많은 경우 강제 풀 테이블 스캔을 해야하는 경우 스트리밍 처리 mysql 스트리밍 처리 서버 쪽에서 처리할 데이터가 얼마인지에 관계없이 조건에 일치하는 레코드가 검색될 때마다 바로바로 클라이언트로 전송해주는 방식을 의미한다. 이 방식으로 쿼리를 처리할 경우 클라이언트는 쿼리를 요청하고 곧바로 원했던 첫 번째 레코드를 전달 받는다. 특징 쿼리 결과를 ..