1️⃣ Auto Scaling트래픽이나 서버 상태에 따라 EC2 서버 수를 자동으로 늘리거나 줄이는 기능이다.사람이 직접 서버를 켜고 끄지 않는다.필요한 이유트래픽 대응 : 갑작스러운 사용자 증가에도 서버 다운 없이 대응비용 절약 : 트래픽 없을 떈 서버를 줄여서 비용 감소안정성 : 서버 장애 발생 시 자동으로 새 서버 생성EC2 : 실제로 API 요청을 처리하는 서버 한 대(가상 컴퓨터) 2️⃣ AWS S3파일을 AWS에 업로드해서 안전하게 저장,관리하는 객체 스토리지 서비스이다.서버 디스크에 저장하는게 아니라 AWS가 관리하는 저장소에 저장한다.사용 이유서버 종료와 무관 : EC2가 종료돼도 파일은 유지됨autoscaling 환경에 필수 : 서버가 여러 대여도 파일 공유 가능URL 기반 접근 : 파일..
🔍 세션 [상태 인증 방식]사용자가 로그인을 성공하면 서버는 세션 저장소(Session Store)에 사용자 정보를 저장하고,해당 세션을 식별할 수 있는 세션 ID(Session ID)를 클라이언트에게 발급한다.이후 클라이언트는 웹 요청을 보낼 때마다 세션 ID를 쿠키에 담아 서버로 전송한다.서버는 전달받은 세션 ID를 기반으로 세션 저장소를 조회하여 사용자 정보를 확인하고 인증을 수행한다.🔍 JWT [무상태 인증 방식]사용자가 로그인을 성공하면 서버는 JWT(Json Web Token) 방식으로 Access Token과 Refresh Token을 발급한다.이때 서버는 사용자 인증 상태를 별도로 저장하지 않는다. (무상태)클라이언트는 Refresh Token을 쿠키에 저장하고,Access Token은..
1. 왜 헥사고날 아키텍처인가?- 기존의 계층형 아키텍처는 보통 컨트롤러 -> 서비스 -> DB 순서로 의존성이 흐른다. 하지만 여기에는 치명적인 문제가 있다.DB 의존성 : 비즈니스 로직이 DB 기술에 종속되어, DB를 바꾸면 핵심 로직까지 다 고쳐야 한다.경계 붕괴 : 지름길을 찾다 보니 계층을 건너뛰거나(controller에서 바로 DB 접근), 서비스가 너무 비대해진다.스프링의 의존성 주입때문에 controller에서 service를 거치지 않고, 바로 repository를 직접 불러와 사용할 수 있다.이렇게 사용하다보면 비즈니스 로직의 중복 발생, DB 의존성 전염, 테스트가 불가능한 구조가 되어버린다.👉 해결책 : 핵심 로직(도메인)을 욉 기술로부터 완전히 격리하자! 는 것이 헥사고날의 목표..
🌳 1️⃣ BST (Binary Search Tree, 이진 탐색 트리)📘 개념왼쪽 자식 정렬된 구조라서 탐색, 삽입, 삭제가 빠름→ 평균 O(log N)하지만 균형이 무너지면 O(N) (한쪽으로 치우친 트리)시간 복잡도 : 평균 O(log N), 최악 O(N)⚙️ 쓰임기본적인 개념용, 학습용메모리 상에서 간단한 탐색 구조를 구현할 때⚠️ 단점데이터가 정렬된 순서로 들어오면 선형 구조가 되어 느려짐(즉, 트리의 균형이 무너짐)🌲 2️⃣ AVL Tree (균형 이진 탐색 트리)📘 개념BST를 개선한 자기 균형 트리모든 노드의 왼쪽·오른쪽 서브트리 높이 차 ≤ 1탐색: O(log N)삽입/삭제 시 회전(Rotation) 으로 균형 유지시간 복잡도 : 항상 O(log N)⚙️ 쓰임검색이 매우 빈번한 시..
🌳 B-Tree란?데이터를 정렬된 상태로 저장하고, 검색, 삽입, 삭제를 효율적으로 수행할 수 있는 균형 트리 구조이다. 자녀 노드의 최대 개수를 늘리기 위해서 부모 노드에 key를 하나 이상 저장된다.부모 노드의 key들을 오름차순으로 정렬정렬된 순서에 따라 자녀 노드들의 key 값의 범위가 결정된다.➡ 탐색 속도(log n)를 유지하면서➡ 디스크 접근 횟수를 최소화하도록 설계된 트리➡ B tree는 BST를 일반화한 tree M : 각 노드의 최대 자녀 노드 수M-1 : 각 노드의 최대 key 수⌈M/2⌉ : 각 노드의 최소 자녀 노드 수(root node, leaf node 제외)⌈M/2⌉-1 : 각 노드의 최소 key 수 (root node 제외) 🌳 B-Tree 삽입추가는 항상 leaf 노..
🧩 Red-Black 트리란?이진 탐색 트리(BST)의 한 종류스스로 균형 잡는 트리BST의 worst case의 단점을 개선모든 노드는 red 혹은 black TreeMap과 TreeSet 사용 예시🎨 Red-Black 트리의 5가지 속성각 노드는 빨강 또는 검정이다.루트 노드는 항상 검정이다.모든 리프 노드(nil노드)는 검정으로 간주된다.빨강 노드의 자식은 항상 검정 노드이다.(즉, 빨강이 연속으로 두 번 나오면 안된다.)임의의 노드에서 자손 nil 노드들까지 가는 경로들의 black 수는 같다.(자기 자신은 카운트에서 제외)🧠 1️⃣ 삭제의 기본 아이디어레드 - 블랙 트리도 결국 이진 탐색 트리 기반, 그래서 삭제 자체는 BST 삭제 규칙과 똑같이 시작삭제하려는 노드가자식이 0개(리프) →..
1️⃣ 기본 개념이진 트리의 한 종류로, 모든 노드의 왼쪽 서브 트리는 해당 노드의 값보다 작은 값들만 가지고 모든 노드의 오른쪽 서브 트리는 해당 노드의 값보다 큰 값들만 가진다.이진 탐색 트리의 최소값 : 트리의 가장 왼쪽에 존재이진 탐색 트리의 최대값 : 트리의 가장 오른쪽에 존재중위 순회 : 방문순서 - 왼쪽 서브트리 → 루트(부모) → 오른쪽 서브트리노드의 successor(후임자) : 해당 노드보다 값이 큰 노드들 중에서 가장 값이 작은 노드노드의 predecessor(선임자) : 해당 노드보다 값이 작은 노드들 중에서 가장 값이 큰 노드🌳 삽입 (Insertion)✅ 규칙: 삽입할 값을 루트부터 비교하면서작으면 왼쪽으로크면 오른쪽으로 이동빈자리에 도달하면 새 노드를 삽입🔍 검색 (Sear..