1장. 사용자 수에 따른 규모 확장성 - (2) 캐시, CDN
·
💻 Dev/System Design
가상 면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 캐시웹 계층과 데이터 계층을 넘어, 시스템의 응답 시간(latency)을 개선하려면 캐시를 도입하는 것이 중요하다.응답 시간은 캐시(cache)를 붙이고 정적 컨텐츠를 콘텐츠 전송 네트워크(CDN)로 옮기면 개선할 수 있다. 캐시는 값비싼 연산 결과 또는 자주 참조되는 데이터를 메모리 보관해, 뒤이은 요청을 더 빠르게 처리할 수 있도록 돕는 저장소이다.위 설계에서는, 사용자가 웹 페이지를 새로고침할 때마다 데이터를 가져오기 위해 데이터베이스를 계속 호출한다.애플리케이션의 성능은 데이터베이스를 얼마나 자주 호출하느냐에 크게 좌우되는데, 캐시는 그런 문제를 완화할 수 있다. 캐시 계층(cache tier)캐시 계층은 데이터가 잠시 보..
1장. 사용자 수에 따른 규모 확장성 - (1) 규모 확장성의 기초
·
💻 Dev/System Design
가상 면접 사례로 배우는 대규모 시스템 설계 기초를 읽고 정리한 글입니다. 단일 서버처음에는 단 한 대의 서버에서 실행되는 간단한 시스템부터 설계해 본다.웹, 앱, 데이터베이스, 캐시 등이 전부 서버 한 대에서 실행되는 구조이다.이 구조에서 사용자 요청 처리 흐름을 살펴보자사용자는 api.mysite.com 같은 도메인 이름으로 접속한다.접속을 위해 도메인 이름 서비스(DNS)를 통해 IP 주소로 변환해야 한다. DNS는 보통 제3 사업자(third party)가 제공하는 유료 서비스를 이용하며, 시스템 내부 요소는 아니다.DNS 조회 결과로 웹 서버의 IP 주소가 반환된다.해당 IP 주소로 HTTP 요청이 전달된다.웹 서버는 요청을 처리하여 HTML 페이지나 JSON 응답을 반환한다. 데이터베이스 분..
99클럽 코테 스터디를 수료하며
·
📝 끄적끄적/항해99 코테 스터디
시작 계기 개발자 오픈채팅방에서 정보를 얻어 시작하게 된 코테 스터디를 드디어 수료하게 되어 후기를 남긴다.이직 준비로 인해 코딩 테스트를 계속 준비해야 했기에, 스스로에게 강제성을 부여하고자 시작하게 되었다. 조금 더 심화된 알고리즘 공부를 하고 싶어 자바/미들러 반을 선택했다.조금 어렵긴 했지만, 결과적으로 좋은 선택이었다고 생각한다. 확실히 뒤로 갈수록 난이도가 높아져 힘들기도 했지만 😵‍💫 그래도 만족스럽다. 강제성 부여 굿 매일 코테를 풀었는지, TIL을 작성했는지 카톡 알림이 오기 때문에 누워 있다가도 "아 맞다!" 하고 일어나서 하게 된다.최근에 면접 최탈하면서 살짝 번아웃이 와서 공부를 좀 놨는데, 이거라도 있어서 그나마 다시 책상에 앉을 수 있었다.중간에 제주도 여행을 다녀왔는데 이거..
99클럽 코테 스터디 13일차 TIL + JadenCase 문자열 만들기
·
📝 끄적끄적/항해99 코테 스터디
- 오늘의 학습 키워드JadenCase 문자열 만들기- 풀이class Solution { public String solution(String s) { StringBuilder sb = new StringBuilder(); boolean isStart = true; for (char c : s.toCharArray()) { if (c == ' ') { sb.append(c); isStart = true; } else { if (isStart) { sb.append(Character.toUpperCase(c));..
99클럽 코테 스터디 12일차 TIL + 포도주 시식
·
📝 끄적끄적/항해99 코테 스터디
- 오늘의 학습 키워드포도주 시식- 풀이import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] wine = new int[n + 1]; // 1-based index for (int i = 1; i = 1) dp[1] = wine[1]; if (n >= 2) dp[2] = wine[1] + wine[2]; for (int i = 3; i - 오늘의 회고dp[i]는 i번째 포도주까지 고려했을 때, 최대로 마실 수 ..
99클럽 코테 스터디 11일차 TIL + 과자 나눠주기
·
📝 끄적끄적/항해99 코테 스터디
https://www.acmicpc.net/problem/16401- 오늘의 학습 키워드과자 나눠주기- 풀이import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int M = sc.nextInt(); // 조카 수 int N = sc.nextInt(); // 과자 수 int[] snacks = new int[N]; for (int i = 0; i = M) { result = mid; // 가능한 경우, 더 큰 길이도 시도 ..
99클럽 코테 스터디 10일차 TIL + 병든 나이트
·
📝 끄적끄적/항해99 코테 스터디
https://www.acmicpc.net/problem/1783 - 오늘의 학습 키워드병든 나이트- 풀이import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); // 세로 int M = sc.nextInt(); // 가로 int result = 0; if (N == 1) { // 세로가 1칸 → 못 움직임 result = 1; } else if (N == 2) { ..