728x90
gRPC가 왜 나왔을까MSA한테 REST API는 한계가 있었다REST는 JSON과 XML 기반의 데이터 직렬화를 토대로 가장 대중화된 통신 방법이다. 그런데 이런 텍스트 데이터의 직렬화는 성능과 데이터 크기 면에서, 특히나 대규모 서비스의 실시간 스트리밍이나 양방향 통신에는 적합하지 않은 비효율적 구조를 갖고 있다.더불어 근래의 대규모 분산 시스템와 MSA 아키텍처 확산으로 효율적인 서비스 간 통신 방신이 요구되어 오는데, 다양한 언어로 작성되었을 MSA가 서로 통신할 수 있는 다중 언어 지원 및 타입 안전성도 요구되어왔다. 이에 대해 Google은 한 발 빨랐다. Google은 이미 갖춰진 대규모 분산 시스템에서 효율적인 통신을 위해 Stubby라는 RPC프레임워크를 썼는데, 이게 꽤 성공적이어서 오..
File Descriptor(FD)이란OS에서 I/O장치나 파일에 접근할 때 이들을 식별하기 위해 사용하는 특정한 정수 값이 있다. 이것이 File descriptor다. 특히나 Linux 혹은 Unix 계열 OS에서 프로세스가 파일을 다룰 때 사용하게 되는데, 프로세스에서 특정 파일에 접근할 때 0(stdin), 1(stdout), 2(stderr),...(파일을 열면서 추가적인 FD할당) 와 같은 상수를 쓰게 된다. 그럼 여기서 Windows는 FD가 없어요? 라는 궁금증이 있었는데, FD와 유사한 개념인 File Handle이 존재하나 FD과 동일한 것은 아니다. File Descriptor의 동작 과정✔️ 파일 열기1. 프로세스의 파일 열기 요청사용자 프로그램은 open()과 같은 System ..
환경구성- Nginx- centOS- 인증서파일(.crt, key) 사전 정보자체 서명과 인증기관 서명의 차이👼🏻: 자체 서명과 인증기관 서명의 차이는 무엇일까요?🍊: 말그대로 본인이 직접 발급했느냐와, 인증 기관의 인증이 있었냐는 뜻이죠. 직접 발급시에는 외부 사용자나 브라우저가 신뢰하지 않고요, 인증기관의 인증이 있었다면 대부분의 브라우저와 시스템에서 신뢰하게 됩니다.👼🏻: 그렇다면 용도는 뭘까요?🍊: 내부 테스트, 개발환경의 경우 자체 서명을 이용하며, 실제 운영 환경/상업용에서는 CA 인증서가 필요해요. 1. 자체 서명 SSL 인증서 생성openssl 패키지를 다운로드한다.yum install openssl 2. SSL 인증서 및 키 파일 생성mkdir -p /etc/nginx/ss..
JPA의 N+1 문제 발생 이유와 해결방법(ft. Featch 전략) JPA의 N+1 문제N+1 문제는 연관된 데이터를 로딩할 때 발생하는 성능 문제다. 예를 들어, 하나의 엔티티(A)가 연관된 엔티티(1, 2, 3… N)를 가질 때, 한 번의 조회로 A를 가져오고, 이후 연관된 N개의 엔티티를 각각 따로 조회하는 상황이 된다.이러한 경우, 총 N+1개의 쿼리가 발생하므로 불필요하게 많은 데이터베이스 Query가 실행된다.// User와 Order는 일대다 관계List users = userRepository.findAll(); // User에 대한 1번의 쿼리for(User user : users){ List orders = user.getOrders(); // 각 Order에 대한 총 N번의 쿼리} ..
코드import java.io.*;import java.util.*;public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); static int N, M, X; static int[] toI; // [i][j]: i -> j로 갈 때의 비용 static int[] toX; static List> goTo; // 단방향 그래프 static List> goFrom; public static void..
인메모리 캐시 전략데이터를 DB나 원본 저장소에서 가져오는 게 아니라, 메모리에 저장하여 데이터 접근 속도를 높이는 방법이다.디스크 I/O 작업이 많은 기존 방식에 비해, 메모리 방식은 더욱 빠르기에 속도를 높일 수 있다. 따라서 자주 조회되거나 접근 속도가 중요한 데이터는 메모리에 임시 저장함으로써 바르게 반환하고자 하는 목적으로 쓰인다.다만, 캐시된 데이터가 실제 원본 데이터와 다를 수 있으므로 업데이트/무효화 전략이 요구된다. 캐시 일관성 유지 방법Write-Through 캐싱캐시를 통해(write through) 원본 데이터 저장소까지 바로 전달된다는 의미로, 데이터가 캐시에 저장될 때 Database에도 즉시 쓰여지게 한다. 캐시나 DB나 동일한 데이터가 있으니 일관성은 있는데 매번마다 쓰기 ..