과거에는 윈도우용 프로그램과 리눅스용 프로그램, 맥용 프로그램을 전부 따로 만들어야 했다. 그래서 자바는 엄청난 선언을 한다Write Once, Run Anywhere클래스 로더(Class Loader)프로그램이 실행되면 가장 먼저 하드디스크에 있는 바이트코드를 싹 모
요청 수신: 여러 사용자가 동시에 API 요청을 보냅니다.이벤트 루프의 스케줄링: Uvicorn(FastAPI를 실행하는 ASGI 서버)의 이벤트 루프가 이 요청들을 하나의 큐(Queue)에 담아 순차적으로 실행하기 시작합니다.I/O 작업과 제어권 양보 (await):
자주 접근하는 데이터를 더 빨리 접근 가능한 위치에 저장한다. 요청마다 DB에서 데이터를 다시 계산하거나 검색할 필요 없이 캐시에서 데이터를 빠르게 데이터를 제공할 수 있다. Read Through : 애플리케이션이 데이터를 읽을 때 먼저 캐시를 조회하고, 캐시에 데이
방대한 데이터 속에서 원하는 정보를 빠르게 찾기 위해 사용하는 색인. 클러스터형: 기본키(PK)를 생성하면 자동으로 지정된다. 실제 데이터 자체가 정렬되어 저장된다.비클러스터형: 별도의 인덱스 페이지를 만든다. 실제 데이터는 그대로 있고, 주소값만 가지고 있다.클러스터
개발을 하다보면 외부 API를 호출야 하는 경우가 있다. 특히나 MSA환경에서는 매우 빈번하다. 문제는 각각 서버들에 장애가 발생할 수 있다는 점이다. 문제가 생긴 서버를 호출한 다른 서비스들까지 장애가 전파된다!그래서 장애가 발생한 서비스를 탐지하고, 요청을 보내지
🚨문제 상황 DB가 단일 테이블, 단일 DB 구조가 한계에 도달했다. I/O 병목 심화: 데이터 증가로 인덱스 깊이 증가, 디스크 접근 비용 상승 동시성 충돌 증가: 트랜잭션 경합 및 대기 시간 증가 운영 비용 폭증: 백업, 복구, 배포 시간이 기하급수적으로 증가 물
원자적 UPDATE는 단일 쿼리로 조건 체크+ 수정을 수행한다. 락 범위는 행 수정 순간만 잡고, 쿼리가 끝난 이후에는 (트랜잭션이 아직 안끝나도) 바로 놓아버린다. 실패시 즉시 반환해버리기 때문에 대기가 거의 없다. 반면 비관 락은 최소 2개 이상의 쿼리를 한다(SE
MVCC가 무엇인가 > Multi-Version Concurrency Control 데이터를 제자리에서 덮어쓰지 않고 변경 시 새로운 버전을 하나 더 만들어 둔다. 각 트랜잭션은 시작 시점(or 특정 시점)의 스냅샷을 기준으로 데이터를 읽기 때문에, 다른 트랜잭션이

다수의 서버가 동시에 같은 자원에 접근할 때 발생할 수 있는 동시성 문제를 해결하기 위해 사용되는 동기화 메커니즘이다. 분산 락의 핵심은 '하나의 자원에 대해 한번 에 하나의 서버만 작업을 수행할 수 있다'는 것이다.서버가 1대라면 서버의 내부 자원 잠금(Lock) 기
애플리케이션과 데이터베이스 사이의 연결을 미리 여러 개 생성해 두고, 필요할 때마다빌려준 뒤 다 쓰면 다시 반납받는 연결관리소.데이터베이스와 새로운 연결을 맺고 끊는 과정은 컴퓨터 입장에서 비용이 매우 크고 시간이 오래 걸리는 무거운 작업이다.만약 사용자가 웹사이트에
현재 배달앱 커머스를 개발 중인데 layered architecture로 구현했다가 비즈니스 로직이 서비스에 집중돼서 테스트 코드 및 유지보수가 너무 어렵다..그래서 DDD패턴으로 바꿔보고자 한다.Domain-Driven-Design비즈니스 로직이 Entity/Aggr
웹소켓과 폴링은 실시간 데이터 통신을 위한 기술이다.웹소켓은 양방향 통신을 가능하게 하여 서버와 클라이언트 간에 실시간 데이터를 교환할 수 있게 한다.폴링은 클라이언트가 n초 간격으로 주기적으로 서버에 요청을 보내 새로운 데이터가 있는지 확인하는 방법이다.온라인 대기열
1. ORM > Object-Relational Mapping 객체와 관계형 데이터 베이스의 데이터를 매핑하는 기술 2. JPA란 > Java Persistence API 데이터베이스를 쉽게 다루기 위한 데이터 엑세스 기술로 ORM기법을 사용하여 자바 어플리케이션에서
1.미로탈출https://school.programmers.co.kr/learn/courses/30/lessons/1599932.연속 펄스 부분 수열의 합https://school.programmers.co.kr/learn/courses/30/less
수레 움직이기https://school.programmers.co.kr/learn/courses/30/lessons/250134구슬탈출https://www.acmicpc.net/problem/13460
리코쳇 로봇https://school.programmers.co.kr/learn/courses/30/lessons/1691992.혼자서 하는 틱택토https://school.programmers.co.kr/learn/courses/30/lessons/
1.이름에 el이 들어가는 동물 찾기https://school.programmers.co.kr/learn/courses/30/lessons/59047카테고리 별 상품 개수 구하기https://school.programmers.co.kr/learn/co
1.PCCP 기출문제 2번 / 석유 시추https://school.programmers.co.kr/learn/courses/30/lessons/250136요격 시스템https://school.programmers.co.kr/learn/courses/3
1.식품분류별 가장 비싼 식품의 정보 조회하기https://school.programmers.co.kr/learn/courses/30/lessons/131116다시풀기퍼즐 게임 챌린지https://school.programmers.co.kr/learn
1.특정 기간동안 대여 가능한 자동차들의 대여비용 구하기https://school.programmers.co.kr/learn/courses/30/lessons/1573392.5월 식품들의 총매출 조회하기https://school.programmers.