분류 전체보기
-
책 스터디 <JVM 밑바닥까지 파헤치기> - 2장 자동 메모리 관리JAVA/Java 2025. 1. 22. 23:47
자바 메모리 영역과 메모리 오버플로자바 개발자는 가상 머신이 제공하는 자동 메모리 관리 메커니즘 덕에 메모리 할당과 해제를 짝지어 코딩하지 않아도 메모리 누수나 오버 플로 문제를 거의 겪지 않음요즘은 C++만큼 성능을 낼 수 있고 메모리를 안전하게 관리할 수 있는 Rust도 있음 2.2 런타임 데이터 영역https://medium.com/@ervinitraj/all-about-jvm-java-virtual-machine-bdeecd6eaa1dhttps://igorski.co/all-you-need-to-know-as-a-java-developer-about-the-jvm-and-gc/자바 프로그램을 실행하는 동안 필요한 메모리 데이터 영역각각의 영역들은 각각의 목적과 생성 / 삭제 시점이 있음스레드 공..
-
SpringData JPA를 사용하는 환경에서 multi-database (feat. master/slave구분, querydsl) 구성하기Spring 2025. 1. 21. 00:35
이번에 면허 재검증 프로세스를 구현하면서, multi database 환경을 구성해야 하는 작업을 수행했다. 작업하면서 구성한 내용을 개인화해서 정리해본다! 구현 환경 및 dependency 설정 작업을 구현해야 하는 환경은 Kotlin, SpringBoot, JPA, Mysql 환경이었다. 두가지의 데이터베이스를 다룰때 모두 JPA를 사용한다. 디폴트 데이터베이스와 추가로 연결할 데이터베이스를 지정한다. 여기서는 디폴트로 사용할 데이터베이스는 DefaultDatabase, 추가로 사용할 데이터베이스는 ADatabase라고 지정한다. 추가한 dependency는 다음과 같다. plugins { kotlin("jvm") version "1.9.25" kotlin("plugin.spring") v..
-
Grpc Service의 호출오류가 Grpc Client 헬스체크 실패를 야기하는 문제 해결Spring 2024. 11. 19. 21:15
하나의 서비스에 GrpcService를 구현하고 이제 이를 사용하는 별도 서비스의 GrpcClient에 구현된 기능을 호출하도록 구현하였는데, GrpcService의 오류만으로도 GrpcClient 서버의 헬스체크가 실패하는 현상이 발생했다. 해당 문제의 원인을 파악하고 문제를 해결한 글을 남긴다! 문제 상황 서두에 말한것과 같이 별도의 서버에 구성된 GrpcClient, GrpcService가 존재한다. 두 서버는 별도의 서버로 서로에게 영향을 주어서는 안될 것으로 생각했는데, GrpcService가 장애 상황이거나 응답할 수 없는 상황에 장애가 전파되어 GrpcClient까지 헬스체크가 실패해서 livenessProbe, readinessProbe에 모두 503 응답으로 ServiceUna..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 15장 ) 구글 드라이브 설계DESIGN PATTERN & ARCHITECTURE 2024. 11. 14. 22:51
1단계 문제 이해 및 설계 범위 확정 주요하게 지원해야 할 기능 지원 환경 파일 암호화 여부 파일 크기 제한 사용자 예시 설계 범위 파일 추가 기능 drag and drop 파일 다운로드 여러 단말에 파일 동기화 파일 갱신 이력 조회 (revision history)파일 공유 파일 편집, 삭제, 공유 알림 표시 비 기능적 요구사항안정성 데이터 손실 방지 빠른 동기화 속도 네트워크 대역폭 모바일 데이터 플랜을 사용하는 경우 네트워크 사용량이 많으면 사용자의 선호도가 감소됨 규모 확장성 많은 양의 트래픽 처리가 가능해야 함 높은 가용성 개략적 추정치 가입 사용자 = 5000만 DAU = 1000만 인당 무료 저장 공간 할당 = 10GB사용자가 업로드하는 하루 평균 파일 수 = 2개업로드 파일의 크기 = 50..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 14장 ) 유튜브 설계DESIGN PATTERN & ARCHITECTURE 2024. 11. 14. 21:59
유튜브 설계규모 월간 능동 사용자 수 : 20억 매일 재생되는 비디오 수 : 50억 미국 성인 가운데 73%가 이용 5천만 명의 창작자 광고 수입 2019 기준으로 150억 달러 (전년도보다 36%가 증가한 수치) 모바일 인터넷 트래픽 가운데 37%를 유튜브가 점유 80개 언어로 이용 가능 1단계 문제 이해 및 설계 범위 확정 가장 중요한 기능 지원 클라이언트 일간 능동 사용자 수 사용자가 평균적으로 소비하는 시간 다국어 지원 필요 여부 지원하는 비디오 해상도 암호화 여부 비디오 파일 크기 제한 클라우드 서비스 활용 가능 여부 예시 요구 사항 빠른 비디오 업로드 원활한 비디오 재생 재생 품질 선택 기능 낮은 인프라 비용 높은 가용성과 규모 확장성, 안정성모바일 앱, 웹, 웹브라우저, 스마트 TV 지원..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 13장 ) 검색어 자동완성 시스템DESIGN PATTERN & ARCHITECTURE 2024. 11. 14. 21:02
검색어 자동완성 시스템 자동완성 (autocomplete, typeahead, search-as-you-type, incremental search) 입력중인 글자에 맞는 검색어가 자동으로 완성되어 표시 1단계 문제 이해 및 설계 범위 확정 자동완성 될 검색어의 범위 ex) 첫글자, 중간부분 등 표시되는 자동완성 검색어의 갯수 자동완성 검색어를 고르는 기준 맞춤법 검사 기능 제공 여부 질의어의 종류 ex) 영어, 한국어 대문자나 특수문자의 처리 여부 사용자 수 예시 요구사항 100밀리초 이내의 빠른 응답 속도 자동완성되어 출력되는 검색어와 사용자가 입력한 단어의 연관성 인기도 등 순위모델에 의한 정렬트래픽을 감당할 수 있도록 확장 가능해야 함 시스템 장애가 발생하더라도 지속 사용가능한 고가용성 개략적 ..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 12장 ) 채팅 시스템 설계DESIGN PATTERN & ARCHITECTURE 2024. 11. 13. 23:41
1단계 문제 이해 및 설계 범위 확정 채팅의 종류 1:1 채팅, 그룹 채팅, 게임 채팅 등 ex) WhatsApp : 1대1 채팅 ex) Slack : 그룹 채팅 ex) Discord : 게임 채팅 대규모 그룹의 소통과 응답 지연이 낮은 음성 채팅에 집중 서비스 환경 ex) 모바일, 웹 등 트래픽 규모 그룹 채팅의 인원 제한 여부 중요 기능 ex) 첨부파일, 접속 상태 표시 등 메세지 길이 제한 여부 종단 간 암호화 여부 (end to end encryption)채팅 이력 보관 기간 예시로 설계된 요구 사항 응답 지연이 낮은 일대일 채팅 기능 최대 100명 까지 참여할 수 있는 그룹 채팅 기능 사용자의 접속 상태 표시 기능 다양한 단말 지원하나의 계정으로 여러 단말 동시 접속 지원 푸시 알림 5000만 ..
-
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 11장 ) 뉴스 피드 시스템 설계DESIGN PATTERN & ARCHITECTURE 2024. 11. 13. 22:16
뉴스 피드 시스템 설계 뉴스 피드 홈페이지 중앙에 지속적으로 업데이트 되는 스토리 1단계 문제 이해 및 설계 범위 확정 지원 환경 ex) 모바일 앱, 웹 등 구현해야 하는 기능 스토리 표시 순서 한명의 사용자가 가질 수 있는 최대 친구의 수 트래픽 규모 이미지나 비디오 스토리 게시 가능 여부 2단계 개략적 설계안 제시 및 동의 구하기 뉴스 피드 API제공 기능클라이언트가 서버와 통신하기 위해 사용되는 수단 HTTP 프로토콜 기반 상태 정보를 업데이트하거나 뉴스 피드를 가져오거나 친구를 추가하는 등의 다양한 작업 수행시 사용됨 1) 피드발행 (feed publishing)사용자가 스토리를 포스팅하여 해당 데이터를 캐시와 데이터 베이스에 기록 새포스팅은 친구의 뉴스 피드에도 전송 HTTP POST의..