전체 글
Stack (스택)
Stack 란? 한쪽 끝에서만 원소를 넣거나 뺄 수 있는 자료구조 먼저 들어간 원소가 제일 나중에 나오는 FILO(First In Last Out) 자료구조 큐나 덱도 스택처럼 특정 위치에서만 원소를 넣거나 뺄 수 있는데 이들을 Restricted Structure라고 한다. Stack의 성질 원소의 추가가 O(1) 원소의 제거가 O(1) 제일 상단의 원소 확인이 O(1) 제일 상단이 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능 단 배열을 이용해 스택을 구현하면 기본적인 스택의 기능 이외도 제일 상단이 아닌 나머지 원소들의 확인/변경이 가능 Stack 구현 및 기능 배열 혹은 연결 리스트를 이용하여 구현할 수 있다. 배열을 이용한 stack의 구현이 더 쉽다. 스택을 배열로 구현할 때는 원소를 담..
5장 안정 해시 설계
안정 해시(Consistent hash)란? 수평적 규모 확장성을 달성하기 위해 요청 또는 데이터를 서버에 균등하게 나누는 보편적으로 사용되는 기술이다. 안정 해시 기술이 풀려고 하는 문제를 알아보자. 해시 키 재배치(rehash) 문제 N개의 캐시 서버가 있을때 이 서버들에 부하를 균등하게 나누는 보편적인 방법은 아래의 해시 함수를 사용하는 것이다. serverIndex = hash(key) % N (N은 서버의 개수이다.) 서버 풀(Server poll)의 크기가 고정되어 있을 때, 그리고 데이터 분포가 균등할 때는 잘 동작한다. 하지만 서버가 추가되거나 기존 서버가 삭제되면 키가 균등하게 분포되지 않는 문제가 발생한다. 안정 해시 위키피디아에 따르면 "안정 해시(consistent hash)는 해시..
스프링 핵심 원리 - 기본편 [스프링 컨테이너와 스프링 빈]
스프링 컨테이너 생성 // 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 한다. XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 참고: 더 정확히는 스프링 컨테이너를 부를 때 BeanFactory , ApplicationContext 로 구분해서 이야기한다. BeanFactory 를 직접 사용하는 경우는 거의 없으므로 일반적으로 ApplicationContext 를 스프링 컨테이너라 한다. 스프링 컨테이너 생성 과정 new AnnotationConfigApplicat..
스프링 핵심 원리 - 기본편 [스피링 핵심 원리 이해2 - 객체 지향 원리 적용]
새로운 할인 정책 개발 고정된 금액을 할인하는 정액 할인 정책에서 주문한 금액의 %를 할인해주는 새로운 정률 할인 정책을 추가하자. 참고: 애자일 소프트웨어 개발 선언 github Log https://github.com/devjun63/springcore/commit/469face379a5c385b54369ccebc7c4ab1493ac4b 새로운 할인 정책 적용과 문제점 ... public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new Rate..
스프링 핵심 원리 - 기본편 [스피링 핵심 원리 이해1 - 예제 만들기]
프로젝트 생성 사전 준비물 JAVA 11 설치 IDE : IntelliJ or Eclipse 프로젝트 선택 Gradle Spring Boot 2.7.11 Java 11 Jar 비즈니스 요구사항과 설계 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (추후 변경 가능) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하..
4장 처리율 제한 장치의 설계
처리율 제한 장치란? 네트워크 시스템에서 처리율 제한 장치(rate limiter)는 클리이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치다. HTTP를 예로 들면 이 장치는 특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한한다. API 요청 횟수가 제한 장치에 정의된 임계치(threshold)를 넘어가면 추가로 도달한 모든 호출은 처리가 중단(block)된다. 처리율 제한 장치 예제 사용자는 초당 2회 이상 새 글을 올릴 수 없다. 같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없다. 같은 디바이스로는 주당 5회 이상 리워드(reward)를 요청할 수 없다. API에 처리율 제한 장치를 두면 좋은 점 DOS(Denial of Service) 공격에 의한 자원..